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§
Sourcefn resolve_name(&mut self, name: &str) -> Result<Option<ResolvedVariable>>
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.
Sourcefn resolve_qualified(
&mut self,
qualifier: &str,
column: &str,
) -> Result<Option<ResolvedVariable>>
fn resolve_qualified( &mut self, qualifier: &str, column: &str, ) -> Result<Option<ResolvedVariable>>
Current value of qualifier.column (record field access).
Sourcefn resolve_param(&mut self, index: usize) -> Result<Option<ResolvedVariable>>
fn resolve_param(&mut self, index: usize) -> Result<Option<ResolvedVariable>>
Value of a positional $n reference (function arguments).
Provided Methods§
Sourcefn rewrite_name(&mut self, name: &str) -> Result<Option<Expr>>
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.
Sourcefn rewrite_qualified(
&mut self,
qualifier: &str,
column: &str,
) -> Result<Option<Expr>>
fn rewrite_qualified( &mut self, qualifier: &str, column: &str, ) -> Result<Option<Expr>>
Expression-level counterpart of Self::resolve_qualified.
Sourcefn rewrite_qualified_star(
&mut self,
_qualifier: &str,
) -> Result<Option<Vec<Expr>>>
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.
Sourcefn rewrite_qualified_whole_row(
&mut self,
_qualifier: &str,
) -> Result<Option<Expr>>
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.
Sourcefn rewrite_param(&mut self, index: usize) -> Result<Option<Expr>>
fn rewrite_param(&mut self, index: usize) -> Result<Option<Expr>>
Expression-level counterpart of Self::resolve_param.
Sourcefn rewrite_internal(
&mut self,
_column: InternalColumnRef,
) -> Result<Option<Expr>>
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".