pub enum StatementKind {
Select,
Insert,
Update,
Delete,
Merge,
CreateTable,
CreateView,
AlterTable,
AlterView,
Drop,
Truncate,
Unsupported,
}Expand description
What a statement does, at a coarse level. The verb of the statement
— INSERT vs CREATE TABLE vs MERGE vs … — combined with the
reads / writes split recovers every distinction the project needs
to make at table granularity. Shared by every extractor (each surfaces
it as statement_kind).
Variants§
Select
SELECT ... (and other read-only queries: VALUES (...),
WITH ... SELECT ...; a bare TABLE foo is read-only too but only
parses as a set-operation branch, not a standalone statement). Reads
only — no writes, no lineage.
Insert
INSERT INTO .... Writes to one target table; reads from the
VALUES / SELECT source. Emits source → target lineage.
Update
UPDATE ... SET .... The target is a write; it also reads when its
own data is referenced — a SET right-hand side or WHERE column
(SET a = a + 1, WHERE id = 5) surfaces it in reads at both column
and table granularity, while a constant SET a = 1 keeps it write-only.
Joined / sub-query sources are reads. A multi-table UPDATE t1 JOIN t2 SET t2.col = … writes (and lineage-targets) the relation the qualifier
resolves to, not the root. Emits lineage from SET sources into the
target columns.
Delete
DELETE FROM .... Removes whole rows: the target is in writes with no
column-level writes and no lineage. It reads when its own data is
referenced — a WHERE column surfaces it in reads (column and table);
a bare DELETE FROM t reads nothing.
Merge
MERGE INTO ... USING .... The target is a write; it also reads — its
columns in ON / a WHEN predicate or SET surface in reads (column
and table granularity). Each WHEN clause may emit lineage from the
source into the target’s update / insert columns.
CreateTable
CREATE TABLE .... The new table is a write target. CREATE
TABLE AS (CTAS) also reads from its SELECT and emits per-column
lineage into the new table’s columns.
CreateView
CREATE VIEW ... AS SELECT .... The new view is a write
target; reads come from the SELECT body. Per-column lineage
pairs the SELECT projections with the view’s columns.
AlterTable
ALTER TABLE .... The altered table is a write target.
Column-level changes are not modelled in detail.
AlterView
ALTER VIEW ... AS SELECT .... Treated like CREATE VIEW for
extraction purposes — the view is a write target, the new
SELECT body supplies reads and per-column lineage.
Drop
DROP TABLE / DROP VIEW / DROP MATERIALIZED VIEW. The
dropped relation is a write target. Other DROP variants
(functions, schemas, indexes, etc.) classify as
Unsupported.
Truncate
TRUNCATE TABLE .... The truncated table is a write target.
Unsupported
Statement is outside the operation-extraction scope. The
accompanying diagnostics list explains why.
Trait Implementations§
Source§impl Clone for StatementKind
impl Clone for StatementKind
Source§fn clone(&self) -> StatementKind
fn clone(&self) -> StatementKind
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 StatementKind
impl Debug for StatementKind
impl Eq for StatementKind
Source§impl PartialEq for StatementKind
impl PartialEq for StatementKind
Source§fn eq(&self, other: &StatementKind) -> bool
fn eq(&self, other: &StatementKind) -> bool
self and other values to be equal, and is used by ==.