pub(crate) trait LazyVariadicFunc: Display {
// Required methods
fn eval<'a>(
&'a self,
datums: &[Datum<'a>],
temp_storage: &'a RowArena,
exprs: &'a [MirScalarExpr],
) -> Result<Datum<'a>, EvalError>;
fn output_type(&self, input_types: &[SqlColumnType]) -> SqlColumnType;
fn propagates_nulls(&self) -> bool;
fn introduces_nulls(&self) -> bool;
// Provided methods
fn could_error(&self) -> bool { ... }
fn is_monotone(&self) -> bool { ... }
fn is_associative(&self) -> bool { ... }
fn is_infix_op(&self) -> bool { ... }
}Required Methods§
fn eval<'a>( &'a self, datums: &[Datum<'a>], temp_storage: &'a RowArena, exprs: &'a [MirScalarExpr], ) -> Result<Datum<'a>, EvalError>
Sourcefn output_type(&self, input_types: &[SqlColumnType]) -> SqlColumnType
fn output_type(&self, input_types: &[SqlColumnType]) -> SqlColumnType
The output SqlColumnType of this function.
Sourcefn propagates_nulls(&self) -> bool
fn propagates_nulls(&self) -> bool
Whether this function will produce NULL on NULL input.
Sourcefn introduces_nulls(&self) -> bool
fn introduces_nulls(&self) -> bool
Whether this function will produce NULL on non-NULL input.
Provided Methods§
Sourcefn could_error(&self) -> bool
fn could_error(&self) -> bool
Whether this function might error on non-error input.
Sourcefn is_monotone(&self) -> bool
fn is_monotone(&self) -> bool
Returns true if the function is monotone.
Sourcefn is_associative(&self) -> bool
fn is_associative(&self) -> bool
Returns true if the function is associative.
Sourcefn is_infix_op(&self) -> bool
fn is_infix_op(&self) -> bool
Returns true if the function is an infix operator.
Implementors§
impl LazyVariadicFunc for And
impl LazyVariadicFunc for Coalesce
impl LazyVariadicFunc for ErrorIfNull
impl LazyVariadicFunc for Greatest
impl LazyVariadicFunc for Least
impl LazyVariadicFunc for Or
impl<T: EagerVariadicFunc> LazyVariadicFunc for T
Blanket LazyVariadicFunc impl for each eager type, bridging
expression evaluation and null propagation via InputDatumType::try_from_iter.