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§
sourcefn as_any(&self) -> &dyn Any
fn as_any(&self) -> &dyn Any
Returns the physical expression as Any
so that it can be
downcast to a specific implementation.
sourcefn data_type(&self, input_schema: &Schema) -> Result<DataType>
fn data_type(&self, input_schema: &Schema) -> Result<DataType>
Get the data type of this expression, given the schema of the input
sourcefn nullable(&self, input_schema: &Schema) -> Result<bool>
fn nullable(&self, input_schema: &Schema) -> Result<bool>
Determine whether this expression is nullable, given the schema of the input
sourcefn evaluate(&self, batch: &RecordBatch) -> Result<ColumnarValue>
fn evaluate(&self, batch: &RecordBatch) -> Result<ColumnarValue>
Evaluate an expression against a RecordBatch
sourcefn children(&self) -> Vec<Arc<dyn PhysicalExpr>> ⓘ
fn children(&self) -> Vec<Arc<dyn PhysicalExpr>> ⓘ
Get a list of child PhysicalExpr that provide the input for this expr.
sourcefn with_new_children(
self: Arc<Self>,
children: Vec<Arc<dyn PhysicalExpr>>
) -> Result<Arc<dyn PhysicalExpr>>
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§
sourcefn evaluate_selection(
&self,
batch: &RecordBatch,
selection: &BooleanArray
) -> Result<ColumnarValue>
fn evaluate_selection( &self, batch: &RecordBatch, selection: &BooleanArray ) -> Result<ColumnarValue>
Evaluate an expression against a RecordBatch after first applying a validity array
sourcefn analyze(&self, context: AnalysisContext) -> AnalysisContext
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.
sourcefn evaluate_bounds(&self, _children: &[&Interval]) -> Result<Interval>
fn evaluate_bounds(&self, _children: &[&Interval]) -> Result<Interval>
Computes bounds for the expression using interval arithmetic.
sourcefn propagate_constraints(
&self,
_interval: &Interval,
_children: &[&Interval]
) -> Result<Vec<Option<Interval>>>
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
.