Skip to main content

ColumnOption

Enum ColumnOption 

Source
pub enum ColumnOption<X: Extension = NoExt> {
Show 13 variants Null { meta: Meta, }, NotNull { meta: Meta, }, Default { expr: Box<Expr<X>>, meta: Meta, }, Generated { generated: Box<GeneratedColumn<X>>, meta: Meta, }, Identity { identity: Box<IdentityColumn<X>>, meta: Meta, }, PrimaryKey { ascending: Option<bool>, index_tablespace: Option<Box<Ident>>, meta: Meta, }, Unique { nulls_not_distinct: Option<bool>, index_tablespace: Option<Box<Ident>>, meta: Meta, }, AutoIncrement { spelling: AutoIncrementSpelling, meta: Meta, }, Collate { collation: Box<ObjectName>, meta: Meta, }, Check { expr: Box<Expr<X>>, no_inherit: bool, meta: Meta, }, References { reference: Box<ForeignKeyRef>, meta: Meta, }, Bare { meta: Meta, }, Other { ext: X, meta: Meta, },
}
Expand description

The SQL column option forms represented by the AST.

Variants§

§

Null

An explicit NULL — the column is allowed to contain nulls.

Fields

§meta: Meta

Source location and node identity.

§

NotNull

A NOT NULL constraint.

Fields

§meta: Meta

Source location and node identity.

§

Default

A DEFAULT <expr> value clause.

Fields

§expr: Box<Expr<X>>

Expression evaluated by this syntax.

§meta: Meta

Source location and node identity.

§

Generated

A GENERATED ALWAYS AS (…) computed column.

Fields

§generated: Box<GeneratedColumn<X>>

The generated-column specification; see GeneratedColumn.

§meta: Meta

Source location and node identity.

§

Identity

A GENERATED … AS IDENTITY identity column.

Fields

§identity: Box<IdentityColumn<X>>

The identity-column specification; see IdentityColumn.

§meta: Meta

Source location and node identity.

§

PrimaryKey

An inline PRIMARY KEY constraint.

Fields

§ascending: Option<bool>

The SQLite ASC / DESC sort-order qualifier on an inline primary key (id INT PRIMARY KEY DESC): Some(true) for ASC, Some(false) for DESC, None when unwritten. Gated for acceptance by ColumnDefinitionSyntax::inline_primary_key_ordering — off elsewhere, where the trailing ASC/DESC is a clean parse error.

§index_tablespace: Option<Box<Ident>>

The USING INDEX TABLESPACE <name> index-parameter clause (PostgreSQL): the tablespace of the implicit index backing this inline primary key (a int PRIMARY KEY USING INDEX TABLESPACE ts). None when unwritten. Boxed as the cold clause it is (the box/inline budget — a wide table holds many ColumnDefs and this is rarely written), matching Collate. Gated for acceptance by ConstraintSyntax::index_constraint_parameters; off elsewhere, where the USING keyword after PRIMARY KEY is a clean parse error.

§meta: Meta

Source location and node identity.

§

Unique

An inline UNIQUE constraint.

Fields

§nulls_not_distinct: Option<bool>

The NULLS [NOT] DISTINCT null-treatment (PostgreSQL 15+): Some(false) for NULLS NOT DISTINCT (nulls collide, so at most one null row), Some(true) for the explicit NULLS DISTINCT default, None when unwritten. Gated for acceptance by ConstraintSyntax::index_constraint_parameters; off elsewhere, where the NULLS keyword after UNIQUE is a clean parse error.

§index_tablespace: Option<Box<Ident>>

The USING INDEX TABLESPACE <name> index-parameter clause (PostgreSQL), as on PrimaryKey. None when unwritten. Boxed and gated identically.

§meta: Meta

Source location and node identity.

§

AutoIncrement

The MySQL AUTO_INCREMENT / SQLite AUTOINCREMENT column attribute: the column’s value defaults to the next sequence number. The one canonical shape carries a spelling tag so the two surface forms round-trip. Each spelling gates on its own flag: the underscored AUTO_INCREMENT under create_table_clause_syntax.table_options (MySQL) and the joined AUTOINCREMENT under column_definition_syntax.joined_autoincrement_attribute (SQLite). Neither preset admits the other’s spelling.

Fields

§spelling: AutoIncrementSpelling

Exact source spelling retained for faithful rendering.

§meta: Meta

Source location and node identity.

§

Collate

The column-definition COLLATE <collation> clause: the column’s default collating sequence. One shape spans three dialects that each spell it in a column definition — PostgreSQL (a text COLLATE "C" / COLLATE pg_catalog."default"), SQLite (a TEXT COLLATE NOCASE), and DuckDB (a VARCHAR COLLATE nocase) — interleaving freely with the other constraints in PostgreSQL’s ColQualList order. The name is a (possibly qualified, possibly quoted) ObjectName, matching the expression-level COLLATE (ExpressionSyntax::collate); SQLite/DuckDB write a single bare identifier (a one-part name), PostgreSQL a full any_name. Distinct from that expression-level COLLATE, which qualifies an expression, not a column. Gated for acceptance by ColumnDefinitionSyntax::column_collation; off elsewhere (ANSI/MySQL), where a column-level COLLATE is a clean parse error. The collation name is boxed to keep this cold clause from widening the warm ColumnOption enum (the box/inline budget): every other fat variant here boxes its payload, so Collate matches them and the common unit constraints pay only a null pointer.

Fields

§collation: Box<ObjectName>

The collation name.

§meta: Meta

Source location and node identity.

§

Check

An inline CHECK (<predicate>) constraint.

Fields

§expr: Box<Expr<X>>

Expression evaluated by this syntax.

§no_inherit: bool

The NO INHERIT marker (PostgreSQL/DuckDB): the check is not inherited by child tables (a int CHECK (a > 0) NO INHERIT). At column level PostgreSQL bakes opt_no_inherit directly into the CHECK production (unlike the table-level TableConstraintDef marker, which rides the shared constraint-attribute slot), and no column-level NOT VALID exists. Gated for acceptance by ConstraintSyntax::constraint_no_inherit_not_valid; off elsewhere, where NO INHERIT after a column CHECK is a clean parse error.

§meta: Meta

Source location and node identity.

§

References

An inline REFERENCES <table> (<cols>) foreign-key constraint.

Fields

§reference: Box<ForeignKeyRef>

The foreign-key target table, columns, and options; see ForeignKeyRef.

§meta: Meta

Source location and node identity.

§

Bare

A trailing bodyless CONSTRAINT <name> (SQLite): the ColumnConstraint::name is written but no constraint element follows it before the column/table-element terminator. Gated for acceptance by ConstraintSyntax::bare_constraint_name; off elsewhere, where a CONSTRAINT <name> with nothing following is a clean parse error.

Fields

§meta: Meta

Source location and node identity.

§

Other

Dialect extension node supplied by the extension type.

Fields

§ext: X

The dialect extension node value.

§meta: Meta

Source location and node identity.

Trait Implementations§

Source§

impl<X: Clone + Extension> Clone for ColumnOption<X>

Source§

fn clone(&self) -> ColumnOption<X>

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<X: Debug + Extension> Debug for ColumnOption<X>

Source§

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

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

impl<'de, X> Deserialize<'de> for ColumnOption<X>
where X: Deserialize<'de> + Extension,

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<X: Eq + Extension> Eq for ColumnOption<X>

Source§

impl<X: Hash + Extension> Hash for ColumnOption<X>

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<X: PartialEq + Extension> PartialEq for ColumnOption<X>

Source§

fn eq(&self, other: &ColumnOption<X>) -> bool

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

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

Inequality operator !=. Read more
Source§

impl<X: Extension + Render> Render for ColumnOption<X>

Source§

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

Return the render for this value.
Source§

fn operand_binding_power(&self) -> Option<BindingPower>

The binding power this node contributes when it appears as an operand, or None (the default) for a self-delimiting node — an atom, call, or constructor — that never needs parentheses. Read more
Source§

impl<X> Serialize for ColumnOption<X>
where X: Serialize + Extension,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<X: Extension> Spanned for ColumnOption<X>

Source§

fn span(&self) -> Span

Return the span for this value.
Source§

impl<X: PartialEq + Extension> StructuralPartialEq for ColumnOption<X>

Auto Trait Implementations§

§

impl<X> Freeze for ColumnOption<X>
where X: Freeze,

§

impl<X> RefUnwindSafe for ColumnOption<X>
where X: RefUnwindSafe,

§

impl<X> Send for ColumnOption<X>
where X: Send,

§

impl<X> Sync for ColumnOption<X>
where X: Sync,

§

impl<X> Unpin for ColumnOption<X>
where X: Unpin,

§

impl<X> UnsafeUnpin for ColumnOption<X>
where X: UnsafeUnpin,

§

impl<X> UnwindSafe for ColumnOption<X>
where X: UnwindSafe,

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynAstExt for T
where T: Extension + Render + 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Erase to &dyn Any for downcasting a node back to its concrete type.
Source§

fn dyn_clone(&self) -> Box<dyn DynAstExt>

Clone into a fresh box — the object-safe stand-in for Clone (whose Self-returning signature cannot go through a vtable).
Source§

fn dyn_eq(&self, other: &dyn DynAstExt) -> bool

Structural equality against another erased node — the object-safe stand-in for PartialEq (whose &Self argument cannot go through a vtable). Equal iff other holds the same concrete type and that type deems the values equal; differently-typed nodes are never equal.
Source§

fn dyn_hash(&self, state: &mut dyn Hasher)

Feed this node’s hash into an erased hasher — the object-safe stand-in for Hash::hash (whose generic H: Hasher cannot go through a vtable).
Source§

impl<T> Extension for T
where T: Clone + Debug + Eq + Hash + Spanned,

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> RenderExt for T
where T: Render,

Source§

fn displayed<'a>(&'a self, ctx: &'a RenderCtx<'a>) -> Displayed<'a, T>

Pair this node with an explicit canonical RenderCtx so format!, to_string, and {} render it. This is the canonical path: the ctx’s resolver and source must match the node’s parse.
Source§

fn debug_sql<'a>(&'a self, resolver: &'a dyn Resolver) -> DebugSql<'a, Self>
where Self: Sized,

Render this node for debugging against an explicitly-supplied resolver (the debug-SQL mitigation), returning a Display adapter. Read more
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.