pub struct ColumnOperation {
pub statement_kind: StatementKind,
pub reads: Vec<ColumnRead>,
pub writes: Vec<ColumnWrite>,
pub lineage: Vec<ColumnLineageEdge>,
pub diagnostics: Vec<ColumnLevelDiagnostic>,
}Expand description
Column-level operations performed by a single SQL statement.
Mirrors TableOperation
with the same three surfaces — reads, writes, lineage — at
column granularity.
Fields§
§statement_kind: StatementKind§reads: Vec<ColumnRead>Columns read by the statement. Occurrence-based: a column
referenced more than once appears more than once (e.g.
SELECT a FROM t WHERE a > 0 yields t.a twice). Each entry pairs
the ColumnReference identity with its
ResolutionKind. In source order — by
each read’s written token span (reference.name.span), a deterministic
function of the SQL rather than the internal traversal. References that
share a token (a USING fan-in) keep a stable relative order. For the
distinct identity set, dedup reads.iter().map(|r| &r.reference) via a
HashSet (or, catalog-free, by
ColumnReference::identity_key
to fold case-equivalent spellings).
writes: Vec<ColumnWrite>Columns written by the statement, in source (column-list) order.
Occurrence-based like reads. Each ColumnWrite pairs the identity
with the column’s catalog match against its target —
Cataloged when the column is in
the target’s catalog columns, else
Inferred (catalog-free, target
columns unknown, or a freshly created / altered relation).
lineage: Vec<ColumnLineageEdge>Lineage edges. Statements that physically move data emit collapsed
end-to-end edges (source → ColumnTarget::Relation); a bare
SELECT emits source → ColumnTarget::QueryOutput edges. In source
order of the contributing source column (by its written token span);
occurrence / multiplicity is preserved.
diagnostics: Vec<ColumnLevelDiagnostic>Column-level diagnostics: wildcard suppression plus the
UnsupportedStatement projection inherited from table
granularity. Per-reference resolution outcomes surface on
reads[i].resolution instead.
Trait Implementations§
Source§impl Clone for ColumnOperation
impl Clone for ColumnOperation
Source§fn clone(&self) -> ColumnOperation
fn clone(&self) -> ColumnOperation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ColumnOperation
impl Debug for ColumnOperation
impl Eq for ColumnOperation
Source§impl PartialEq for ColumnOperation
impl PartialEq for ColumnOperation
Source§fn eq(&self, other: &ColumnOperation) -> bool
fn eq(&self, other: &ColumnOperation) -> bool
self and other values to be equal, and is used by ==.