pub struct RoutineInliningContext<'a> {
pub routines: &'a dyn RoutineResolution,
pub types: &'a dyn RoutineTypeCatalog,
pub parsers: &'a dyn RoutineParserCatalog,
pub catalog: &'a dyn RoutineCompilationCatalog,
pub authority: &'a dyn RoutineExecutionAuthority,
pub volatility: &'a dyn VolatilityCatalog,
pub expressions: &'a dyn RoutinePlanExpressions,
}Fields§
§routines: &'a dyn RoutineResolution§types: &'a dyn RoutineTypeCatalog§parsers: &'a dyn RoutineParserCatalog§catalog: &'a dyn RoutineCompilationCatalog§volatility: &'a dyn VolatilityCatalog§expressions: &'a dyn RoutinePlanExpressionsImplementations§
Source§impl RoutineInliningContext<'_>
impl RoutineInliningContext<'_>
Sourcepub fn expression_volatility(
&self,
expression: &ScalarExpr,
schema: &RowSchema,
) -> Result<FunctionVolatility, SQLError>
pub fn expression_volatility( &self, expression: &ScalarExpr, schema: &RowSchema, ) -> Result<FunctionVolatility, SQLError>
Classify an analyzed/planned expression in its own row scope, including casts and selected operators.
Sourcepub fn prepare(
&self,
binding: &FunctionBinding,
arguments: &[ScalarExpr],
active: &[[u8; 16]],
) -> Result<Option<InlineRoutineExpression>, SQLError>
pub fn prepare( &self, binding: &FunctionBinding, arguments: &[ScalarExpr], active: &[[u8; 16]], ) -> Result<Option<InlineRoutineExpression>, SQLError>
Try the selected routine only; a same-named overload cannot replace it. Argument simplification and lazy branches belong to the caller’s planner.
Sourcepub fn materialize_call(
&self,
binding: &FunctionBinding,
arguments: &[ScalarExpr],
) -> Result<Option<(FunctionBinding, Vec<ScalarExpr>)>, SQLError>
pub fn materialize_call( &self, binding: &FunctionBinding, arguments: &[ScalarExpr], ) -> Result<Option<(FunctionBinding, Vec<ScalarExpr>)>, SQLError>
Expand defaults, named arguments and implicit casts before the planner simplifies children. Returning an exact invocation prevents a second overload selection and keeps discarded or repeated arguments typed.
Sourcepub fn requires_replanning(&self, plan: &UnifiedPlan) -> bool
pub fn requires_replanning(&self, plan: &UnifiedPlan) -> bool
Ordinary messages repeat optimizer-time routine work. Prepared plans intentionally keep their own custom/generic planning lifetime instead.
Trait Implementations§
Source§impl<'a> Clone for RoutineInliningContext<'a>
impl<'a> Clone for RoutineInliningContext<'a>
impl<'a> Copy for RoutineInliningContext<'a>
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for RoutineInliningContext<'a>
impl<'a> !Send for RoutineInliningContext<'a>
impl<'a> !Sync for RoutineInliningContext<'a>
impl<'a> !UnwindSafe for RoutineInliningContext<'a>
impl<'a> Freeze for RoutineInliningContext<'a>
impl<'a> Unpin for RoutineInliningContext<'a>
impl<'a> UnsafeUnpin for RoutineInliningContext<'a>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more