Skip to main content

StatementKind

Enum StatementKind 

Source
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

Source§

fn clone(&self) -> StatementKind

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StatementKind

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for StatementKind

Source§

impl PartialEq for StatementKind

Source§

fn eq(&self, other: &StatementKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for StatementKind

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.