Skip to main content

SessionStatement

Enum SessionStatement 

Source
pub enum SessionStatement<X: Extension = NoExt> {
    Set {
        scope: Option<SetScope>,
        name: ObjectName,
        assignment: SetAssignment,
        value: SetValue,
        meta: Meta,
    },
    SetTimeZone {
        scope: Option<SetScope>,
        value: Box<SpecialSetValue>,
        meta: Meta,
    },
    SetRole {
        scope: Option<SetScope>,
        role: Box<SpecialSetValue>,
        meta: Meta,
    },
    SetSessionAuthorization {
        scope: Option<SetScope>,
        user: Box<SpecialSetValue>,
        meta: Meta,
    },
    SetConstraints {
        constraints: ConstraintsTarget,
        check_time: ConstraintCheckTime,
        meta: Meta,
    },
    SetNames {
        value: Box<SetNamesValue>,
        meta: Meta,
    },
    SetSessionCharacteristics {
        modes: ThinVec<TransactionMode>,
        meta: Meta,
    },
    Reset {
        scope: Option<SetScope>,
        target: ConfigParameter,
        meta: Meta,
    },
    Show {
        target: ConfigParameter,
        verbose: bool,
        meta: Meta,
    },
    SetVariables {
        assignments: ThinVec<SetVariableAssignment<X>>,
        meta: Meta,
    },
    SetCharacterSet {
        keyword: CharacterSetKeyword,
        value: Box<SetCharacterSetValue>,
        meta: Meta,
    },
    SetResourceGroup {
        name: Ident,
        thread_ids: Option<ThinVec<Literal>>,
        meta: Meta,
    },
}
Expand description

A run-time configuration / session statement: SET, RESET, or SHOW.

PostgreSQL groups these as run-time configuration statements; they write, clear, and read the same session parameters. One canonical shape per construct.

The generic-parameter form is SET <name> {= | TO} <value>; the special-cased subforms whose grammar departs from it each keep their own canonical shape rather than being forced through the generic one. SET TRANSACTION is transaction control, not a session statement, and lives on TransactionStatement; the session-level SET SESSION CHARACTERISTICS is its distinct session counterpart.

Variants§

§

Set

A generic SET <param> {= | TO} <value> statement.

Fields

§scope: Option<SetScope>

Scope in which this syntax applies.

§name: ObjectName

Name referenced by this syntax.

§assignment: SetAssignment

Which of the exact-synonym = / TO separators the source wrote. A source-fidelity render replays it; a target re-spell and the redacted fingerprint normalize to the canonical TO.

§value: SetValue

Value supplied by this syntax.

§meta: Meta

Source location and node identity.

§

SetTimeZone

SET [SESSION | LOCAL] TIME ZONE { <value> | LOCAL | DEFAULT }.

A two-word parameter taken with no =/TO separator; the LOCAL/DEFAULT sentinels are kept distinct from an ordinary value (see SpecialSetValue). The value is boxed to keep the common SET/RESET/SHOW shapes lean.

Fields

§scope: Option<SetScope>

Scope in which this syntax applies.

§value: Box<SpecialSetValue>

Value supplied by this syntax.

§meta: Meta

Source location and node identity.

§

SetRole

A SET ROLE statement.

Fields

§scope: Option<SetScope>

Scope in which this syntax applies.

§role: Box<SpecialSetValue>

The target role (SET ROLE <role> / NONE); see SpecialSetValue.

§meta: Meta

Source location and node identity.

§

SetSessionAuthorization

A SET SESSION AUTHORIZATION statement.

Fields

§scope: Option<SetScope>

Scope in which this syntax applies.

§user: Box<SpecialSetValue>

The target authorization (SET SESSION AUTHORIZATION <user> / DEFAULT); see SpecialSetValue.

§meta: Meta

Source location and node identity.

§

SetConstraints

SET CONSTRAINTS { ALL | <name> [, ...] } { DEFERRED | IMMEDIATE }.

Sets the check timing of the current transaction’s deferrable constraints; it is its own statement in the grammar and takes no SESSION/LOCAL scope.

Fields

§constraints: ConstraintsTarget

Which constraints (ALL or a name list); see ConstraintsTarget.

§check_time: ConstraintCheckTime

The new check timing (DEFERRED/IMMEDIATE); see ConstraintCheckTime.

§meta: Meta

Source location and node identity.

§

SetNames

SET NAMES { <charset> [COLLATE <collation>] | DEFAULT } (MySQL): set the client connection character set. The value is boxed to keep the common SET/RESET/SHOW shapes lean.

Fields

§value: Box<SetNamesValue>

Value supplied by this syntax.

§meta: Meta

Source location and node identity.

§

SetSessionCharacteristics

SET SESSION CHARACTERISTICS AS TRANSACTION <mode> [, ...].

Sets the default characteristics for subsequent transactions in the session, distinct from the per-transaction SET TRANSACTION — which is why it is a session statement reusing the shared TransactionMode.

Fields

§modes: ThinVec<TransactionMode>

modes in source order.

§meta: Meta

Source location and node identity.

§

Reset

RESET [SESSION | LOCAL | GLOBAL] <name> / RESET ALL.

The optional scope is a DuckDB extension (gated by UtilitySyntax::reset_scope); PostgreSQL’s RESET takes no scope qualifier (RESET SESSION x is a PG parser error), so scope is None for every non-DuckDB dialect.

Fields

§scope: Option<SetScope>

Scope in which this syntax applies.

§target: ConfigParameter

Object targeted by this syntax.

§meta: Meta

Source location and node identity.

§

Show

SHOW { ALL | <name> } [VERBOSE].

The VERBOSE tail is the sqlparser-rs/DataFusion planner spelling on SHOW ALL / SHOW <setting>; no shipped oracle accepts it (pg_query and DuckDB both reject SHOW ALL VERBOSE and SHOW <setting> VERBOSE), so it is admitted only under the permissive superset via ShowSyntax::show_verbose and carried here as data — verbose is false for every form the oracle-backed dialects parse.

Fields

§target: ConfigParameter

Object targeted by this syntax.

§verbose: bool

Whether the verbose form was present in the source.

§meta: Meta

Source location and node identity.

§

SetVariables

The MySQL SET variable-assignment statement: a comma-separated list of heterogeneous assignments, each a system variable (with optional scope) or a user-defined @var.

Distinct from the generic single-target Set: MySQL assigns a list (SET @a = 1, GLOBAL x = 2, SESSION y = 3), each item carrying its own scope and a full-expression value — where PostgreSQL’s SET takes one name and a restricted literal/bareword value list. Gated by SessionVariableSyntax::variable_assignment.

Fields

§assignments: ThinVec<SetVariableAssignment<X>>

The assignments in source order (at least one).

§meta: Meta

Source location and node identity.

§

SetCharacterSet

MySQL SET { CHARACTER SET | CHARSET } { <charset> | DEFAULT }: set the client connection character set (and reset the collation to that charset’s default).

A sibling of SetNames — the same client-charset surface with a narrower value (no COLLATE) and its own leading keyword spelling. Gated by SessionVariableSyntax::variable_assignment.

Fields

§keyword: CharacterSetKeyword

Which of the exact-synonym CHARACTER SET / CHARSET spellings the source wrote.

§value: Box<SetCharacterSetValue>

Value supplied by this syntax. Boxed to keep the common SET/RESET/SHOW shapes lean (mirroring SetNames).

§meta: Meta

Source location and node identity.

§

SetResourceGroup

The MySQL SET RESOURCE GROUP <name> [FOR <thread_id> [, ...]] statement (sql_yacc.yy set_resource_group_stmt): assign a thread (or the current session) to a resource group.

It shares the SET statement head with the variable-assignment forms above but is a distinct grammar (SQLCOM_SET_RESOURCE_GROUP), not a variable assignment — so it is dispatched off the RESOURCE GROUP two-word lookahead in the SET parser and carried here rather than in SetVariables. It is the resource-group family’s session-statement member; its CREATE/ALTER/DROP siblings are top-level Statement DDL. Gated by StatementDdlGates::resource_group.

Fields

§name: Ident

The resource-group name (ident).

§thread_ids: Option<ThinVec<Literal>>

The FOR <thread_id> [, ...] thread-id list (thread_id_list), or None for the bare form that binds the current session’s thread. Non-empty when present; each id is a real_ulong_num unsigned-integer literal. The opt_comma separator (comma or whitespace both parse) is normalized to , on render.

§meta: Meta

Source location and node identity.

Trait Implementations§

Source§

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

Source§

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

Source§

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

Source§

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

Source§

fn span(&self) -> Span

Return the span for this value.
Source§

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

Auto Trait Implementations§

§

impl<X> Freeze for SessionStatement<X>

§

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

§

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

§

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

§

impl<X> Unpin for SessionStatement<X>

§

impl<X> UnsafeUnpin for SessionStatement<X>

§

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