Skip to main content

CreateSchema

Struct CreateSchema 

Source
pub struct CreateSchema<X: Extension = NoExt> {
    pub if_not_exists: bool,
    pub name: Option<ObjectName>,
    pub authorization: Option<Ident>,
    pub elements: ThinVec<Statement<X>>,
    pub meta: Meta,
}
Expand description

CREATE SCHEMA [IF NOT EXISTS] [<name>] [AUTHORIZATION <role>] [<schema element> ...].

At least one of name / authorization is present — PostgreSQL’s CREATE SCHEMA AUTHORIZATION joe omits the schema name and derives it from the owning role.

The SQL-standard form embeds a list of component objects created inside the new schema (CREATE SCHEMA s CREATE TABLE t (...)); elements holds them as children so the whole construct stays ONE statement, mirroring PostgreSQL’s CreateSchemaStmt.schemaElts (which likewise carries the components as raw statement parsenodes). Rendering them embedded preserves the statement COUNT that downstream consumers observe — the earlier model split them into separate ;-joined statements, a statement-level rewrite no source-fidelity render can undo.

The element list is a closed admissible set enforced by the parser (measured against PostgreSQL: CREATE TABLE/VIEW/INDEX/SEQUENCE/TRIGGER and GRANT — and PostgreSQL rejects CREATE MATERIALIZED VIEW/FUNCTION, a nested CREATE SCHEMA, DROP/ALTER/INSERT/… as elements). Modelled as a general Statement list rather than a bespoke element enum — the same idiom as CreateTrigger’s body — because the members ARE statements and reusing the statement shape keeps the differential/structural oracles element-agnostic; the closed set is the recorded acceptance bound, enforced at parse time. Non-empty only under PostgreSQL (schema_elements gate); every other dialect parses a bare schema head. Generic over X because the elements carry the extension node.

Fields§

§if_not_exists: bool

Whether the if not exists form was present in the source.

§name: Option<ObjectName>

Name referenced by this syntax.

§authorization: Option<Ident>

Optional authorization for this syntax.

§elements: ThinVec<Statement<X>>

The embedded schema-element statements, in source order. Empty for a bare CREATE SCHEMA head (the common case) and for every non-PostgreSQL dialect.

§meta: Meta

Source location and node identity.

Trait Implementations§

Source§

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

Source§

fn clone(&self) -> CreateSchema<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 CreateSchema<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 CreateSchema<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 CreateSchema<X>

Source§

impl<X: Hash + Extension> Hash for CreateSchema<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 CreateSchema<X>

Source§

fn eq(&self, other: &CreateSchema<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 CreateSchema<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 CreateSchema<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 CreateSchema<X>

Source§

fn span(&self) -> Span

Return the span for this value.
Source§

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

Auto Trait Implementations§

§

impl<X> Freeze for CreateSchema<X>

§

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

§

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

§

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

§

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

§

impl<X> UnsafeUnpin for CreateSchema<X>

§

impl<X> UnwindSafe for CreateSchema<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.