pub trait PhysicalExpr: Send + Sync + Display + Debug + PartialEq<dyn Any + 'static> {
    // Required methods
    fn as_any(&self) -> &(dyn Any + 'static);
    fn data_type(
        &self,
        input_schema: &Schema
    ) -> Result<DataType, DataFusionError>;
    fn nullable(&self, input_schema: &Schema) -> Result<bool, DataFusionError>;
    fn evaluate(
        &self,
        batch: &RecordBatch
    ) -> Result<ColumnarValue, DataFusionError>;
    fn children(&self) -> Vec<Arc<dyn PhysicalExpr + 'static>, Global> ;
    fn with_new_children(
        self: Arc<Self>,
        children: Vec<Arc<dyn PhysicalExpr + 'static>, Global>
    ) -> Result<Arc<dyn PhysicalExpr + 'static>, DataFusionError>;

    // Provided methods
    fn evaluate_selection(
        &self,
        batch: &RecordBatch,
        selection: &BooleanArray
    ) -> Result<ColumnarValue, DataFusionError> { ... }
    fn analyze(&self, context: AnalysisContext) -> AnalysisContext { ... }
}
Expand description

Expression that can be evaluated against a RecordBatch A Physical expression knows its type, nullability and how to evaluate itself.

Required Methods§

source

fn as_any(&self) -> &(dyn Any + 'static)

Returns the physical expression as Any so that it can be downcast to a specific implementation.

source

fn data_type(&self, input_schema: &Schema) -> Result<DataType, DataFusionError>

Get the data type of this expression, given the schema of the input

source

fn nullable(&self, input_schema: &Schema) -> Result<bool, DataFusionError>

Determine whether this expression is nullable, given the schema of the input

source

fn evaluate(&self, batch: &RecordBatch) -> Result<ColumnarValue, DataFusionError>

Evaluate an expression against a RecordBatch

source

fn children(&self) -> Vec<Arc<dyn PhysicalExpr + 'static>, Global>

Get a list of child PhysicalExpr that provide the input for this expr.

source

fn with_new_children( self: Arc<Self>, children: Vec<Arc<dyn PhysicalExpr + 'static>, Global> ) -> Result<Arc<dyn PhysicalExpr + 'static>, DataFusionError>

Returns a new PhysicalExpr where all children were replaced by new exprs.

Provided Methods§

source

fn evaluate_selection( &self, batch: &RecordBatch, selection: &BooleanArray ) -> Result<ColumnarValue, DataFusionError>

Evaluate an expression against a RecordBatch after first applying a validity array

source

fn analyze(&self, context: AnalysisContext) -> AnalysisContext

Return the boundaries of this expression. This method (and all the related APIs) are experimental and subject to change.

Implementors§