Skip to main content

VariableResolver

Trait VariableResolver 

Source
pub trait VariableResolver {
    // Required methods
    fn resolve_name(&mut self, name: &str) -> Result<Option<ResolvedVariable>>;
    fn resolve_qualified(
        &mut self,
        qualifier: &str,
        column: &str,
    ) -> Result<Option<ResolvedVariable>>;
    fn resolve_param(
        &mut self,
        index: usize,
    ) -> Result<Option<ResolvedVariable>>;

    // Provided methods
    fn rewrite_name(&mut self, name: &str) -> Result<Option<Expr>> { ... }
    fn rewrite_qualified(
        &mut self,
        qualifier: &str,
        column: &str,
    ) -> Result<Option<Expr>> { ... }
    fn rewrite_qualified_star(
        &mut self,
        _qualifier: &str,
    ) -> Result<Option<Vec<Expr>>> { ... }
    fn rewrite_qualified_whole_row(
        &mut self,
        _qualifier: &str,
    ) -> Result<Option<Expr>> { ... }
    fn rewrite_param(&mut self, index: usize) -> Result<Option<Expr>> { ... }
    fn rewrite_internal(
        &mut self,
        _column: InternalColumnRef,
    ) -> Result<Option<Expr>> { ... }
}
Expand description

Resolves routine variables while a compiled expression / statement is being specialized for one execution.

Required Methods§

Source

fn resolve_name(&mut self, name: &str) -> Result<Option<ResolvedVariable>>

Current value of an unqualified name. Ok(None) leaves the column reference for the engine to resolve.

Source

fn resolve_qualified( &mut self, qualifier: &str, column: &str, ) -> Result<Option<ResolvedVariable>>

Current value of qualifier.column (record field access).

Source

fn resolve_param(&mut self, index: usize) -> Result<Option<ResolvedVariable>>

Value of a positional $n reference (function arguments).

Provided Methods§

Source

fn rewrite_name(&mut self, name: &str) -> Result<Option<Expr>>

Optional expression-level rewrite hook. The default preserves the variable-substitution behavior used by PL/pgSQL while allowing catalog lifecycle code to rewrite a reference without fabricating a literal value.

Source

fn rewrite_qualified( &mut self, qualifier: &str, column: &str, ) -> Result<Option<Expr>>

Expression-level counterpart of Self::resolve_qualified.

Source

fn rewrite_qualified_star( &mut self, _qualifier: &str, ) -> Result<Option<Vec<Expr>>>

Expand qualifier.* when the containing SQL construct treats it as a list item. Scalar binding deliberately does not call this hook because PostgreSQL treats the same syntax as a composite whole-row value in scalar contexts.

Source

fn rewrite_qualified_whole_row( &mut self, _qualifier: &str, ) -> Result<Option<Expr>>

Resolve qualifier.* when it appears in a scalar context and therefore denotes one composite whole-row value rather than a projection list.

Source

fn rewrite_param(&mut self, index: usize) -> Result<Option<Expr>>

Expression-level counterpart of Self::resolve_param.

Source

fn rewrite_internal( &mut self, _column: InternalColumnRef, ) -> Result<Option<Expr>>

Observe or replace an executor-only structural column reference. SQL variable resolvers normally leave these untouched.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§