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
name: ObjectNameName referenced by this syntax.
assignment: SetAssignmentWhich 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.
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
value: Box<SpecialSetValue>Value supplied by this syntax.
SetRole
A SET ROLE statement.
Fields
role: Box<SpecialSetValue>The target role (SET ROLE <role> / NONE); see SpecialSetValue.
SetSessionAuthorization
A SET SESSION AUTHORIZATION statement.
Fields
user: Box<SpecialSetValue>The target authorization (SET SESSION AUTHORIZATION <user> / DEFAULT); see SpecialSetValue.
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: ConstraintsTargetWhich constraints (ALL or a name list); see ConstraintsTarget.
check_time: ConstraintCheckTimeThe new check timing (DEFERRED/IMMEDIATE); see ConstraintCheckTime.
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.
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.
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
target: ConfigParameterObject targeted by this syntax.
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: ConfigParameterObject targeted by this syntax.
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).
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: CharacterSetKeywordWhich 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).
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
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.
Trait Implementations§
Source§impl<X: Clone + Extension> Clone for SessionStatement<X>
impl<X: Clone + Extension> Clone for SessionStatement<X>
Source§fn clone(&self) -> SessionStatement<X>
fn clone(&self) -> SessionStatement<X>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'de, X> Deserialize<'de> for SessionStatement<X>where
X: Deserialize<'de> + Extension,
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>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl<X: Eq + Extension> Eq for SessionStatement<X>
Source§impl<X: Extension + Render> Render for SessionStatement<X>
impl<X: Extension + Render> Render for SessionStatement<X>
Source§fn render(&self, ctx: &RenderCtx<'_>, f: &mut Formatter<'_>) -> Result
fn render(&self, ctx: &RenderCtx<'_>, f: &mut Formatter<'_>) -> Result
Source§fn operand_binding_power(&self) -> Option<BindingPower>
fn operand_binding_power(&self) -> Option<BindingPower>
None (the default) for a self-delimiting node — an atom, call, or
constructor — that never needs parentheses. Read moreSource§impl<X> Serialize for SessionStatement<X>
impl<X> Serialize for SessionStatement<X>
Source§impl<X: Extension> Spanned for SessionStatement<X>
impl<X: Extension> Spanned for SessionStatement<X>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> DynAstExt for T
impl<T> DynAstExt for T
Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&dyn Any for downcasting a node back to its concrete type.Source§fn dyn_clone(&self) -> Box<dyn DynAstExt>
fn dyn_clone(&self) -> Box<dyn DynAstExt>
Clone (whose
Self-returning signature cannot go through a vtable).Source§fn dyn_eq(&self, other: &dyn DynAstExt) -> bool
fn dyn_eq(&self, other: &dyn DynAstExt) -> bool
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.