Skip to main content

TableDef

Struct TableDef 

Source
pub struct TableDef {
    pub name: String,
    pub columns: Vec<ColumnDef>,
    pub primary_key: Vec<KeyColumn>,
    pub without_rowid: bool,
    pub strict: bool,
    pub unsupported_constraints: Vec<Constraint>,
    /* private fields */
}

Fields§

§name: String§columns: Vec<ColumnDef>§primary_key: Vec<KeyColumn>

Empty when the table has no primary key at all.

§without_rowid: bool§strict: bool§unsupported_constraints: Vec<Constraint>

Rules the source enforces that we cannot: unique constraints beyond the key, check constraints, foreign keys and collations.

Implementations§

Source§

impl TableDef

Source

pub fn column(&self, name: &str) -> Option<&ColumnDef>

Source

pub fn column_index(&self, name: &str) -> Option<usize>

Source

pub fn rowid_alias(&self) -> Option<&ColumnDef>

The column that is an alias for the rowid, if the table has one.

Such a column holds no value of its own in the record; SQLite stores NULL there and the value lives in the cell’s rowid. Getting this wrong means reading the primary key of an entire table as NULL, or inventing one, and nothing about it fails loudly, so the rule is spelled out here and checked against a fixture built from these exact cases:

declarationalias
x integer primary keyyes
x integer primary key descno
x integer, primary key (x)yes
x integer, primary key (x desc)yes
x int primary keyno

The two desc rows disagreeing is not a typo. Spelling out desc in a column constraint suppresses the alias, and spelling it out in a table constraint does not. SQLite documents that as a quirk kept for backwards compatibility, and every reader has to reproduce it.

A without rowid table has no rowid to alias, so it never has one.

Trait Implementations§

Source§

impl Clone for TableDef

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 TableDef

Source§

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

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

impl Eq for TableDef

Source§

impl PartialEq for TableDef

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 TableDef

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.