//! Cumulative executor stats.
//!
//! `ExecutorStats` is a snapshot of cumulative counters maintained by an executor
//! across its lifetime. The DataFusion executor populates these by walking the
//! physical plan's `MetricsSet` after each query/DML and folding them into atomic
//! counters.
//!
//! Other backends (Trino, etc.) leave these zero; they don't track these metrics.

/// A snapshot of cumulative executor metrics.
///
/// Counters are cumulative across the executor's lifetime — never reset.
/// Each field's interpretation:
///
/// - `rows_read`: rows produced by scan nodes (`DataSourceExec`/`ParquetExec`)
/// - `bytes_read`: bytes scanned by scan nodes (`bytes_scanned` metric)
/// - `rows_written`: rows ingested by sink nodes (`DataSinkExec`)
/// - `bytes_written`: bytes written by sink nodes
/// - `trim_clamped`: column-values clamped by `TRIMSTRINGS` (across all string columns
///   and nested locations); summed, not unique-rows-trimmed
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub struct ExecutorStats {
    pub rows_read: u64,
    pub bytes_read: u64,
    pub rows_written: u64,
    pub bytes_written: u64,
    pub trim_clamped: u64,
}
