pub enum ValidateOnlyKind {
Show 16 variants
LockTable,
RoleName,
SecurityLabel,
ExtensionAvailable,
TypeName,
AggregateName,
ConversionName,
LanguageName,
CollationName,
TsConfigName,
EventTriggerName,
TablespaceName,
LargeObjectOid,
ForeignInfra,
ExtensionInstalled,
SessionAuthorization,
}Expand description
v7.39 (round 696) — which operand a Statement::ValidateOnly names,
and therefore which catalog answers whether it exists.
Variants§
LockTable
LOCK TABLE <t> [, …] — the relation must exist.
RoleName
Every role named must exist: DROP OWNED BY <r> [, …],
REASSIGN OWNED BY <r> [, …] TO <r>, ALTER ROLE <r> ….
SecurityLabel
SECURITY LABEL … — PG refuses unconditionally, because no label
provider is loaded. SPG has none either.
ExtensionAvailable
v7.39 (round 697) — CREATE EXTENSION <e>: the extension must be
AVAILABLE (PG: extension "x" is not available).
TypeName
v7.39 (round 708) — ALTER TYPE <t> <any no-op form>: the TYPE must
exist (PG: type "x" does not exist); the action itself stays a
no-op (PG genuinely renames; that residual is recorded).
AggregateName
v7.39 (round 708) — ALTER AGGREGATE name(args) …: names[0] is the
aggregate, the rest its argument type names (* = the (*) form).
Existence only; the action no-ops (PG really renames built-ins —
measured — and SPG does not model that).
ConversionName
v7.39 (round 708) — DROP CONVERSION <c>: SPG ships no conversions,
so every name answers PG’s conversion "x" does not exist.
LanguageName
v7.39 (round 708) — DROP LANGUAGE <l>: an unknown language does
not exist; a shipped one is required (PG’s two wordings, measured).
CollationName
v7.39 (round 709) — a collation name: performable or PG’s
collation "x" for encoding "UTF8" does not exist.
TsConfigName
v7.39 (round 709) — a text search configuration name.
EventTriggerName
v7.39 (round 709) — an event trigger name. SPG has none, so the not-found answer is total.
TablespaceName
v7.39 (round 709) — a tablespace name. SPG has none beyond PG’s two
built-ins, whose drop PG refuses with permission denied (measured).
LargeObjectOid
v7.39 (round 709) — a large-object oid (names[0], decimal). The registry is real (round 287), so the check is a lookup.
ForeignInfra
v7.39 (round 706) — CREATE SERVER / CREATE FOREIGN TABLE /
CREATE FOREIGN DATA WRAPPER. SPG has no foreign-data
infrastructure at all, so PG’s refusals (foreign-data wrapper "x" does not exist, server "x" does not exist) cannot be copied —
PG can refuse because the missing piece is installable there.
Accepted with a WARNING, the extension resolution (round 697):
refusing turns a dump that restores today into one that needs
editing, and silent acceptance was the actual defect.
ExtensionInstalled
v7.39 (round 697) — DROP EXTENSION <e>: it must be installed
(PG: extension "x" does not exist).
SessionAuthorization
v7.40.12 — SET SESSION AUTHORIZATION <r>. APPENDED, not
inserted: putting it beside RoleName where it belongs read
better and shifted thirteen discriminants, which
cargo-semver-checks calls out as its own breaking change
(enum_no_repr_variant_discriminant_changed) for anyone casting
the enum. Reading order is not worth a break nobody asked for.
It used to share RoleName with the three role statements, and one question separates
them: PG does NOT count this statement as a query, so a later
SET TRANSACTION ISOLATION LEVEL still succeeds, while after
DROP OWNED BY, REASSIGN OWNED BY or ALTER ROLE it is
refused with 25001. All four measured on PG 18.6. The role check
is identical; the snapshot answer is not.
Trait Implementations§
Source§impl Clone for ValidateOnlyKind
impl Clone for ValidateOnlyKind
Source§fn clone(&self) -> ValidateOnlyKind
fn clone(&self) -> ValidateOnlyKind
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more