Skip to main content

BoundInsert

Struct BoundInsert 

Source
pub struct BoundInsert {
Show 16 fields pub table: TableInfo, pub target_source: usize, pub columns: Vec<ColumnSource>, pub rowid: Option<ColumnSource>, pub named_rowid: Option<usize>, pub source: BoundInsertSource, pub arity: usize, pub on_conflict: Option<ConflictAction>, pub checks: Vec<BoundCheck>, pub not_null_defaults: Vec<BoundDefault>, pub index_exprs: Vec<BoundIndexExprs>, pub upsert: Vec<BoundUpsert>, pub sequence_root: u32, pub returning: Vec<BoundResultColumn>, pub triggers: Vec<BoundTrigger>, pub replace_triggers: Vec<BoundTrigger>,
}
Expand description

A bound INSERT.

Fields§

§table: TableInfo

The table being written.

§target_source: usize

The statement-wide number of the FROM term being written.

It used to be implicitly zero, because a DML statement had exactly one source. A trigger body is compiled into the statement that fires it, so its target takes the next number after the firing statement’s - and a compiler that assumed zero read the wrong cursor for every fire after the first.

§columns: Vec<ColumnSource>

Where each table column’s value comes from, in column order.

§rowid: Option<ColumnSource>

Where the rowid comes from, when the statement supplies one.

§named_rowid: Option<usize>

Which value of the supplied row is the rowid, when the statement named it outright.

INSERT INTO t(rowid, a) VALUES (7, 'x') is legal on any rowid table, including one with no INTEGER PRIMARY KEY to alias it and including a virtual table. It is recorded separately from rowid because it is not a column: nothing writes it into the record.

§source: BoundInsertSource

The rows.

§arity: usize

How many values each source row supplies.

§on_conflict: Option<ConflictAction>

The statement’s conflict algorithm, when it wrote one.

§checks: Vec<BoundCheck>

The table’s CHECK constraints.

§not_null_defaults: Vec<BoundDefault>

The DEFAULTs a REPLACE may stand in for a NULL, by column.

§index_exprs: Vec<BoundIndexExprs>

The expressions the table’s partial and expression indexes need.

§upsert: Vec<BoundUpsert>

The ON CONFLICT ... DO UPDATE clause, when there is one.

§sequence_root: u32

sqlite_sequence’s root page, when the target is AUTOINCREMENT.

Resolved here rather than in the compiler because it is a fact about the catalog, and the catalog is what the binder holds. It is zero for every other table, which is also what it reads as before the first AUTOINCREMENT table in a database is created.

§returning: Vec<BoundResultColumn>

The RETURNING columns.

§triggers: Vec<BoundTrigger>

The triggers this write fires, in schema order.

§replace_triggers: Vec<BoundTrigger>

The foreign-key actions a REPLACE fires for the row it removes.

A REPLACE that deletes a row to make room for another is a delete, and the keys pointing at that row have to be told. Written DELETE triggers are not fired - that is SQLite’s rule with its default recursive_triggers = off - so these are only the ones a key implies.

Trait Implementations§

Source§

impl Clone for BoundInsert

Source§

fn clone(&self) -> Self

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 BoundInsert

Source§

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

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

impl PartialEq for BoundInsert

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for BoundInsert

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.