Skip to main content

ObjectReference

Enum ObjectReference 

Source
pub enum ObjectReference<X: Extension = NoExt> {
    Named {
        kind: ObjectRefKind,
        name: ObjectName,
        meta: Meta,
    },
    Routine {
        kind: RoutineObjectKind,
        signature: RoutineSignature<X>,
        meta: Meta,
    },
    Aggregate {
        name: ObjectName,
        args: AggregateArgs<X>,
        meta: Meta,
    },
    Operator {
        schema: ObjectName,
        op: Symbol,
        args: OperatorArgs<X>,
        meta: Meta,
    },
    OperatorClass {
        family: bool,
        name: ObjectName,
        access_method: Ident,
        meta: Meta,
    },
    Cast {
        from: DataType<X>,
        to: DataType<X>,
        meta: Meta,
    },
    Type {
        domain: bool,
        name: DataType<X>,
        meta: Meta,
    },
    Transform {
        type_name: DataType<X>,
        language: Ident,
        meta: Meta,
    },
    Trigger {
        name: Ident,
        table: ObjectName,
        meta: Meta,
    },
}
Expand description

A reference to a database object by kind and kind-appropriate signature — the shared object-reference axis for PostgreSQL object-membership DDL.

PostgreSQL’s ALTER EXTENSION … ADD|DROP <member> grammar (AlterExtensionContentsStmt) names a member object by a kind keyword plus a signature whose shape depends on the kind: a bare or qualified name, a routine argument-type signature, an aggregate/operator signature, a cast type pair, a type name, or a transform. The sibling object-DDL heads name objects the same way — the parse-pg-alter-object-depends head (ALTER … DEPENDS ON EXTENSION) reuses Routine and Named for its FUNCTION/PROCEDURE/ ROUTINE, MATERIALIZED VIEW, and INDEX objects, and parse-pg-drop-transform reuses Transform — so the axis lives here once rather than being re-derived per head.

Trigger is the one shape no ALTER EXTENSION member takes: its TRIGGER <name> ON <table> form is exclusive to the DEPENDS ON EXTENSION head (ALTER EXTENSION … ADD TRIGGER is a reject), so it was added to the axis additively when that head’s measured grammar demanded it, keeping every object-DDL head on one shared reference type.

Variants§

§

Named

A kind keyword and a name. kind records whether the name may be schema-qualified: PostgreSQL’s object_type_any_name kinds (TABLE, VIEW, …) accept a dotted any_name, its object_type_name kinds (SCHEMA, ROLE, …) only a single name.

Fields

§kind: ObjectRefKind

The object kind; see ObjectRefKind.

§name: ObjectName

The referenced name.

§meta: Meta

Source location and node identity.

§

Routine

FUNCTION/PROCEDURE/ROUTINE <name>[(<argtypes>)] (PostgreSQL’s function_with_argtypes; the argument list is optional).

Fields

§kind: RoutineObjectKind

Which routine kind; see RoutineObjectKind.

§signature: RoutineSignature<X>

The routine name and optional argument-type signature.

§meta: Meta

Source location and node identity.

§

Aggregate

AGGREGATE <name>(<aggr_args>).

Fields

§name: ObjectName

The aggregate name.

§args: AggregateArgs<X>

The aggregate argument signature.

§meta: Meta

Source location and node identity.

§

Operator

OPERATOR [<schema>.]<sym>(<left>, <right>) (PostgreSQL’s operator_with_argtypes).

Fields

§schema: ObjectName

The optional schema qualification (empty for an unqualified operator).

§op: Symbol

The symbolic operator spelling, interned exact-case.

§args: OperatorArgs<X>

The operand types.

§meta: Meta

Source location and node identity.

§

OperatorClass

OPERATOR CLASS/OPERATOR FAMILY <name> USING <access_method>.

Fields

§family: bool

true for OPERATOR FAMILY, false for OPERATOR CLASS.

§name: ObjectName

The operator class/family name.

§access_method: Ident

The USING <access_method> index access method.

§meta: Meta

Source location and node identity.

§

Cast

CAST (<from> AS <to>).

Fields

§from: DataType<X>

The cast’s source type.

§to: DataType<X>

The cast’s target type.

§meta: Meta

Source location and node identity.

§

Type

DOMAIN/TYPE <typename> — a type-named object.

Fields

§domain: bool

true for the DOMAIN keyword, false for TYPE (both name a type via a Typename).

§name: DataType<X>

The type name (a Typename, possibly schema-qualified).

§meta: Meta

Source location and node identity.

§

Transform

TRANSFORM FOR <typename> LANGUAGE <language>.

Fields

§type_name: DataType<X>

The type the transform is FOR.

§language: Ident

The transform’s procedural language name.

§meta: Meta

Source location and node identity.

§

Trigger

TRIGGER <name> ON <table> — a trigger named by its bare name plus the table it is defined on (PostgreSQL’s ALTER TRIGGER name ON qualified_name). Unlike the other object kinds, a trigger is not schema-qualifiable on its own name (it is a name, a single ColId); the table carries the qualification.

This variant is reached only by the DEPENDS ON EXTENSION head — no ALTER EXTENSION member is a trigger — so parse_object_reference never constructs it.

Fields

§name: Ident

The trigger’s bare name.

§table: ObjectName

The table the trigger is defined on (a qualified_name).

§meta: Meta

Source location and node identity.

Trait Implementations§

Source§

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

Source§

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

Source§

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

Source§

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

Source§

fn span(&self) -> Span

Return the span for this value.
Source§

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

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

§

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

§

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