Struct datafusion::optimizer::filter_push_down::FilterPushDown
source · [−]pub struct FilterPushDown {}
Expand description
Filter Push Down optimizer rule pushes filter clauses down the plan
Introduction
A filter-commutative operation is an operation whose result of filter(op(data)) = op(filter(data)).
An example of a filter-commutative operation is a projection; a counter-example is limit
.
The filter-commutative property is column-specific. An aggregate grouped by A on SUM(B) can commute with a filter that depends on A only, but does not commute with a filter that depends on SUM(B).
This optimizer commutes filters with filter-commutative operations to push the filters the closest possible to the scans, re-writing the filter expressions by every projection that changes the filter’s expression.
Filter: #b Gt Int64(10) Projection: #a AS b
is optimized to
Projection: #a AS b Filter: #a Gt Int64(10) <— changed from #b to #a
This performs a single pass through the plan. When it passes through a filter, it stores that filter,
and when it reaches a node that does not commute with it, it adds the filter to that place.
When it passes through a projection, it re-writes the filter’s expression taking into account that projection.
When multiple filters would have been written, it AND
their expressions into a single expression.
Implementations
sourceimpl FilterPushDown
impl FilterPushDown
Trait Implementations
sourceimpl Default for FilterPushDown
impl Default for FilterPushDown
sourcefn default() -> FilterPushDown
fn default() -> FilterPushDown
Returns the “default value” for a type. Read more
sourceimpl OptimizerRule for FilterPushDown
impl OptimizerRule for FilterPushDown
sourcefn optimize(
&self,
plan: &LogicalPlan,
_: &ExecutionProps
) -> Result<LogicalPlan>
fn optimize(
&self,
plan: &LogicalPlan,
_: &ExecutionProps
) -> Result<LogicalPlan>
Rewrite plan
to an optimized form
Auto Trait Implementations
impl RefUnwindSafe for FilterPushDown
impl Send for FilterPushDown
impl Sync for FilterPushDown
impl Unpin for FilterPushDown
impl UnwindSafe for FilterPushDown
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more