pub struct ExpressionEvaluator {
pub subquery_fn: Option<SubqueryFn>,
pub sequence_fn: Option<SequenceFn>,
/* private fields */
}Fields§
§subquery_fn: Option<SubqueryFn>Optional callback to execute subqueries at evaluation time. Takes a parsed Query and returns DataChunks.
sequence_fn: Option<SequenceFn>Optional callback for sequence operations (nextval/currval). Takes (sequence_name, is_nextval) and returns the resulting value.
Implementations§
Source§impl ExpressionEvaluator
impl ExpressionEvaluator
pub fn new(registry: Arc<Mutex<FunctionRegistry>>) -> Self
Sourcepub fn with_subquery_fn(self, f: SubqueryFn) -> Self
pub fn with_subquery_fn(self, f: SubqueryFn) -> Self
Set the subquery execution callback.
Sourcepub fn with_sequence_fn(self, f: SequenceFn) -> Self
pub fn with_sequence_fn(self, f: SequenceFn) -> Self
Set the sequence operation callback (for nextval/currval).
Sourcepub fn evaluate_to_arrow(
&self,
expr: &Expression,
chunk: &DataChunk,
) -> Result<ArrowVector, ProcessorError>
pub fn evaluate_to_arrow( &self, expr: &Expression, chunk: &DataChunk, ) -> Result<ArrowVector, ProcessorError>
Evaluate an expression for every row in the chunk, returning an ArrowVector directly. Delegates to evaluate_arrow which uses Arrow compute kernels for the hot path (comparisons, arithmetic, boolean ops).
Sourcepub fn evaluate(
&self,
expr: &Expression,
chunk: &DataChunk,
) -> Result<ValueVector, ProcessorError>
pub fn evaluate( &self, expr: &Expression, chunk: &DataChunk, ) -> Result<ValueVector, ProcessorError>
Evaluate an expression for every row in the chunk, returning a ValueVector.
Sourcepub fn evaluate_arrow(
&self,
expr: &Expression,
chunk: &DataChunk,
) -> Result<ArrowVector, ProcessorError>
pub fn evaluate_arrow( &self, expr: &Expression, chunk: &DataChunk, ) -> Result<ArrowVector, ProcessorError>
Evaluate an expression returning an ArrowVector directly. For operations supported by Arrow compute kernels (comparisons, arithmetic, boolean), this is vectorized and avoids Value enum boxing.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for ExpressionEvaluator
impl !UnwindSafe for ExpressionEvaluator
impl Freeze for ExpressionEvaluator
impl Send for ExpressionEvaluator
impl Sync for ExpressionEvaluator
impl Unpin for ExpressionEvaluator
impl UnsafeUnpin for ExpressionEvaluator
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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