Trait ExprEvaluator

Source
pub trait ExprEvaluator: Send + Sync {
    // Required method
    fn evaluate_expr<'life0, 'async_trait>(
        &'life0 self,
        row_mask: RowMask,
        expr: ExprRef,
    ) -> Pin<Box<dyn Future<Output = VortexResult<ArrayRef>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;

    // Provided method
    fn refine_mask<'life0, 'async_trait>(
        &'life0 self,
        row_mask: RowMask,
        _expr: ExprRef,
    ) -> Pin<Box<dyn Future<Output = VortexResult<RowMask>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
}
Expand description

A trait for evaluating expressions against a LayoutReader.

FIXME(ngates): what if this was evaluating_predicate(mask, expr) -> mask, evaluate_filter(mask, scan) -> Array, and evaluate_projection(mask, expr) -> Array?

Required Methods§

Source

fn evaluate_expr<'life0, 'async_trait>( &'life0 self, row_mask: RowMask, expr: ExprRef, ) -> Pin<Box<dyn Future<Output = VortexResult<ArrayRef>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Provided Methods§

Source

fn refine_mask<'life0, 'async_trait>( &'life0 self, row_mask: RowMask, _expr: ExprRef, ) -> Pin<Box<dyn Future<Output = VortexResult<RowMask>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Refine the row mask by evaluating any pruning. This should be relatively cheap, statistics based evaluation, and returns an approximate result.

Implementations on Foreign Types§

Source§

impl ExprEvaluator for Arc<dyn LayoutReader>

Source§

fn evaluate_expr<'life0, 'async_trait>( &'life0 self, row_mask: RowMask, expr: ExprRef, ) -> Pin<Box<dyn Future<Output = VortexResult<ArrayRef>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn refine_mask<'life0, 'async_trait>( &'life0 self, row_mask: RowMask, expr: ExprRef, ) -> Pin<Box<dyn Future<Output = VortexResult<RowMask>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Implementors§