pub struct FilterExec {
predicate: Arc<dyn PhysicalExpr>,
input: Arc<dyn ExecutionPlan>,
metrics: ExecutionPlanMetricsSet,
default_selectivity: u8,
cache: PlanProperties,
projection: Option<Vec<usize>>,
}Expand description
FilterExec evaluates a boolean predicate against all input batches to determine which rows to include in its output batches.
Fields§
§predicate: Arc<dyn PhysicalExpr>The expression to filter on. This expression must evaluate to a boolean value.
input: Arc<dyn ExecutionPlan>The input plan
metrics: ExecutionPlanMetricsSetExecution metrics
default_selectivity: u8Selectivity for statistics. 0 = no rows, 100 = all rows
cache: PlanPropertiesProperties equivalence properties, partitioning, etc.
projection: Option<Vec<usize>>The projection indices of the columns in the output schema of join
Implementations§
Source§impl FilterExec
impl FilterExec
Sourcepub fn try_new(
predicate: Arc<dyn PhysicalExpr>,
input: Arc<dyn ExecutionPlan>,
) -> Result<Self>
pub fn try_new( predicate: Arc<dyn PhysicalExpr>, input: Arc<dyn ExecutionPlan>, ) -> Result<Self>
Create a FilterExec on an input
pub fn with_default_selectivity( self, default_selectivity: u8, ) -> Result<Self, DataFusionError>
Sourcepub fn with_projection(&self, projection: Option<Vec<usize>>) -> Result<Self>
pub fn with_projection(&self, projection: Option<Vec<usize>>) -> Result<Self>
Return new instance of FilterExec with the given projection.
Sourcepub fn predicate(&self) -> &Arc<dyn PhysicalExpr>
pub fn predicate(&self) -> &Arc<dyn PhysicalExpr>
The expression to filter on. This expression must evaluate to a boolean value.
Sourcepub fn input(&self) -> &Arc<dyn ExecutionPlan>
pub fn input(&self) -> &Arc<dyn ExecutionPlan>
The input plan
Sourcepub fn default_selectivity(&self) -> u8
pub fn default_selectivity(&self) -> u8
The default selectivity
Sourcepub fn projection(&self) -> Option<&Vec<usize>>
pub fn projection(&self) -> Option<&Vec<usize>>
Projection
Sourcefn statistics_helper(
schema: SchemaRef,
input_stats: Statistics,
predicate: &Arc<dyn PhysicalExpr>,
default_selectivity: u8,
) -> Result<Statistics>
fn statistics_helper( schema: SchemaRef, input_stats: Statistics, predicate: &Arc<dyn PhysicalExpr>, default_selectivity: u8, ) -> Result<Statistics>
Calculates Statistics for FilterExec, by applying selectivity (either default, or estimated) to input statistics.
fn extend_constants( input: &Arc<dyn ExecutionPlan>, predicate: &Arc<dyn PhysicalExpr>, ) -> Vec<ConstExpr>
Sourcefn compute_properties(
input: &Arc<dyn ExecutionPlan>,
predicate: &Arc<dyn PhysicalExpr>,
default_selectivity: u8,
projection: Option<&Vec<usize>>,
) -> Result<PlanProperties>
fn compute_properties( input: &Arc<dyn ExecutionPlan>, predicate: &Arc<dyn PhysicalExpr>, default_selectivity: u8, projection: Option<&Vec<usize>>, ) -> Result<PlanProperties>
This function creates the cache object that stores the plan properties such as schema, equivalence properties, ordering, partitioning, etc.
Trait Implementations§
Source§impl Clone for FilterExec
impl Clone for FilterExec
Source§fn clone(&self) -> FilterExec
fn clone(&self) -> FilterExec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FilterExec
impl Debug for FilterExec
Source§impl DisplayAs for FilterExec
impl DisplayAs for FilterExec
Source§impl EmbeddedProjection for FilterExec
impl EmbeddedProjection for FilterExec
Source§impl ExecutionPlan for FilterExec
impl ExecutionPlan for FilterExec
Source§fn statistics(&self) -> Result<Statistics>
👎Deprecated since 48.0.0: Use partition_statistics method instead
fn statistics(&self) -> Result<Statistics>
partition_statistics method insteadThe output statistics of a filtering operation can be estimated if the predicate’s selectivity value can be determined for the incoming data.
Source§fn try_swapping_with_projection(
&self,
projection: &ProjectionExec,
) -> Result<Option<Arc<dyn ExecutionPlan>>>
fn try_swapping_with_projection( &self, projection: &ProjectionExec, ) -> Result<Option<Arc<dyn ExecutionPlan>>>
Tries to swap projection with its input (filter). If possible, performs
the swap and returns FilterExec as the top plan. Otherwise, returns None.
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Source§fn properties(&self) -> &PlanProperties
fn properties(&self) -> &PlanProperties
ExecutionPlan, such as output
ordering(s), partitioning information etc. Read moreSource§fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
fn children(&self) -> Vec<&Arc<dyn ExecutionPlan>>
ExecutionPlans that act as inputs to this plan.
The returned list will be empty for leaf nodes such as scans, will contain
a single value for unary nodes, or two values for binary nodes (such as
joins).Source§fn maintains_input_order(&self) -> Vec<bool>
fn maintains_input_order(&self) -> Vec<bool>
false if this ExecutionPlan’s implementation may reorder
rows within or between partitions. Read moreSource§fn with_new_children(
self: Arc<Self>,
children: Vec<Arc<dyn ExecutionPlan>>,
) -> Result<Arc<dyn ExecutionPlan>>
fn with_new_children( self: Arc<Self>, children: Vec<Arc<dyn ExecutionPlan>>, ) -> Result<Arc<dyn ExecutionPlan>>
ExecutionPlan where all existing children were replaced
by the children, in orderSource§fn execute(
&self,
partition: usize,
context: Arc<TaskContext>,
) -> Result<SendableRecordBatchStream>
fn execute( &self, partition: usize, context: Arc<TaskContext>, ) -> Result<SendableRecordBatchStream>
Source§fn metrics(&self) -> Option<MetricsSet>
fn metrics(&self) -> Option<MetricsSet>
Metrics for this
ExecutionPlan. If no Metrics are available, return None. Read moreSource§fn partition_statistics(&self, partition: Option<usize>) -> Result<Statistics>
fn partition_statistics(&self, partition: Option<usize>) -> Result<Statistics>
ExecutionPlan node.
If statistics are not available, should return Statistics::new_unknown
(the default), not an error.
If partition is None, it returns statistics for the entire plan.Source§fn cardinality_effect(&self) -> CardinalityEffect
fn cardinality_effect(&self) -> CardinalityEffect
Source§fn gather_filters_for_pushdown(
&self,
phase: FilterPushdownPhase,
parent_filters: Vec<Arc<dyn PhysicalExpr>>,
_config: &ConfigOptions,
) -> Result<FilterDescription>
fn gather_filters_for_pushdown( &self, phase: FilterPushdownPhase, parent_filters: Vec<Arc<dyn PhysicalExpr>>, _config: &ConfigOptions, ) -> Result<FilterDescription>
ExecutionPlan::gather_filters_for_pushdown: Read moreSource§fn handle_child_pushdown_result(
&self,
phase: FilterPushdownPhase,
child_pushdown_result: ChildPushdownResult,
_config: &ConfigOptions,
) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>>
fn handle_child_pushdown_result( &self, phase: FilterPushdownPhase, child_pushdown_result: ChildPushdownResult, _config: &ConfigOptions, ) -> Result<FilterPushdownPropagation<Arc<dyn ExecutionPlan>>>
ExecutionPlan::gather_filters_for_pushdown.
It allows the current node to process the results of filter pushdown from
its children, deciding whether to absorb filters, modify the plan, or pass
filters back up to its parent. Read moreSource§fn static_name() -> &'static strwhere
Self: Sized,
fn static_name() -> &'static strwhere
Self: Sized,
name but can be called without an instance.Source§fn check_invariants(&self, check: InvariantLevel) -> Result<()>
fn check_invariants(&self, check: InvariantLevel) -> Result<()>
Source§fn required_input_distribution(&self) -> Vec<Distribution>
fn required_input_distribution(&self) -> Vec<Distribution>
ExecutionPlan, By default it’s [Distribution::UnspecifiedDistribution] for each child,Source§fn required_input_ordering(&self) -> Vec<Option<OrderingRequirements>>
fn required_input_ordering(&self) -> Vec<Option<OrderingRequirements>>
ExecutionPlan. Read moreSource§fn benefits_from_input_partitioning(&self) -> Vec<bool>
fn benefits_from_input_partitioning(&self) -> Vec<bool>
ExecutionPlan benefits from increased
parallelization at its input for each child. Read moreSource§fn reset_state(self: Arc<Self>) -> Result<Arc<dyn ExecutionPlan>>
fn reset_state(self: Arc<Self>) -> Result<Arc<dyn ExecutionPlan>>
ExecutionPlan. Read moreSource§fn repartitioned(
&self,
_target_partitions: usize,
_config: &ConfigOptions,
) -> Result<Option<Arc<dyn ExecutionPlan>>>
fn repartitioned( &self, _target_partitions: usize, _config: &ConfigOptions, ) -> Result<Option<Arc<dyn ExecutionPlan>>>
ExecutionPlan to
produce target_partitions partitions. Read moreSource§fn supports_limit_pushdown(&self) -> bool
fn supports_limit_pushdown(&self) -> bool
Source§fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
fn with_fetch(&self, _limit: Option<usize>) -> Option<Arc<dyn ExecutionPlan>>
ExecutionPlan node, if it supports
fetch limits. Returns None otherwise.Auto Trait Implementations§
impl Freeze for FilterExec
impl !RefUnwindSafe for FilterExec
impl Send for FilterExec
impl Sync for FilterExec
impl Unpin for FilterExec
impl !UnwindSafe for FilterExec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more