Skip to main content

EvaluationHandler

Trait EvaluationHandler 

Source
pub trait EvaluationHandler: AsAny {
    // Required methods
    fn new_expression_evaluator(
        &self,
        input_schema: SchemaRef,
        expression: ExpressionRef,
        output_type: DataType,
    ) -> DeltaResult<Arc<dyn ExpressionEvaluator>>;
    fn new_predicate_evaluator(
        &self,
        input_schema: SchemaRef,
        predicate: PredicateRef,
    ) -> DeltaResult<Arc<dyn PredicateEvaluator>>;
    fn null_row(
        &self,
        output_schema: SchemaRef,
    ) -> DeltaResult<Box<dyn EngineData>>;
    fn create_many(
        &self,
        schema: SchemaRef,
        rows: &[&[Scalar]],
    ) -> DeltaResult<Box<dyn EngineData>>;
}
Expand description

Provides expression evaluation capability to Delta Kernel.

Delta Kernel can use this handler to evaluate a predicate on partition filters, fill up partition column values, and any computation on data using Expressions.

Required Methods§

Source

fn new_expression_evaluator( &self, input_schema: SchemaRef, expression: ExpressionRef, output_type: DataType, ) -> DeltaResult<Arc<dyn ExpressionEvaluator>>

Create an ExpressionEvaluator that can evaluate the given Expression on columnar batches with the given Schema to produce data of DataType.

If the provided output type is a struct, its fields describe the columns of output produced by the evaluator. Otherwise, the output schema is a single column named “output” of the specified output_type. In all cases, the output schema is only used for its names (all field names will be updated to match) and nullability (non-nullable columns can be converted to nullable). Any mismatch in types (including number of columns) will produce an error.

§Parameters
  • input_schema: Schema of the input data.
  • expression: Expression to evaluate.
  • output_type: Expected result data type.
Source

fn new_predicate_evaluator( &self, input_schema: SchemaRef, predicate: PredicateRef, ) -> DeltaResult<Arc<dyn PredicateEvaluator>>

Create a PredicateEvaluator that can evaluate the given Predicate on columnar batches with the given Schema to produce a column of boolean results.

The output schema is a single nullable boolean column named “output”.

§Parameters
  • input_schema: Schema of the input data.
  • predicate: Predicate to evaluate.
Source

fn null_row(&self, output_schema: SchemaRef) -> DeltaResult<Box<dyn EngineData>>

Create a single-row all-null-value EngineData with the schema specified by output_schema.

Source

fn create_many( &self, schema: SchemaRef, rows: &[&[Scalar]], ) -> DeltaResult<Box<dyn EngineData>>

Create a multi-row EngineData by applying the given schema to multiple rows of values.

Each element in rows represents one row of data, where each row is a slice of structured scalar values (one scalar per top-level field in the schema).

§Parameters
  • schema: Schema describing the structure of each row.
  • rows: Slice of rows, where each row contains one structured scalar per top-level schema field.
§Returns

A multi-row EngineData containing all rows.

§Errors

Returns an error if any row has a number of scalars that does not match the number of top-level fields in schema, or if any scalar value cannot be appended to its corresponding field’s builder (e.g. due to a type mismatch).

§Example

For a schema with fields [add: Struct, remove: Struct], each row should contain exactly 2 scalars: one for the add field and one for the remove field.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl EvaluationHandler for ArrowEvaluationHandler

Available on crate feature arrow-expression and crate feature default-engine-base and (crate features arrow-conversion or declarative-plans or default-engine-base) only.