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

    // Provided methods
    fn evaluate_selection(
        &self,
        batch: &RecordBatch,
        selection: &BooleanArray
    ) -> Result<ColumnarValue> { ... }
    fn analyze(&self, context: AnalysisContext) -> AnalysisContext { ... }
    fn evaluate_bounds(&self, _children: &[&Interval]) -> Result<Interval> { ... }
    fn propagate_constraints(
        &self,
        _interval: &Interval,
        _children: &[&Interval]
    ) -> Result<Vec<Option<Interval>>> { ... }
}
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

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>

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

source

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

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

source

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

Evaluate an expression against a RecordBatch

source

fn children(&self) -> Vec<Arc<dyn PhysicalExpr>>

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>> ) -> Result<Arc<dyn PhysicalExpr>>

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>

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.

source

fn evaluate_bounds(&self, _children: &[&Interval]) -> Result<Interval>

Computes bounds for the expression using interval arithmetic.

source

fn propagate_constraints( &self, _interval: &Interval, _children: &[&Interval] ) -> Result<Vec<Option<Interval>>>

Updates/shrinks bounds for the expression using interval arithmetic. If constraint propagation reveals an infeasibility, returns None for the child causing infeasibility. If none of the children intervals change, may return an empty vector instead of cloning children.

Trait Implementations§

source§

impl DynTreeNode for dyn PhysicalExpr

source§

fn arc_children(&self) -> Vec<Arc<Self>>

Returns all children of the specified TreeNode
source§

fn with_new_arc_children( &self, arc_self: Arc<Self>, new_children: Vec<Arc<Self>> ) -> Result<Arc<Self>>

construct a new self with the specified children

Implementors§