pub enum FilterPushdownPhase {
Pre,
Post,
}Variants§
Pre
Pushdown that happens before most other optimizations.
This pushdown allows static filters that do not reference any ExecutionPlans to be pushed down.
Filters that reference an ExecutionPlan cannot be pushed down at this stage since the whole plan tree may be rewritten
by other optimizations.
Implementers are however allowed to modify the execution plan themselves during this phase, for example by returning a completely
different ExecutionPlan from ExecutionPlan::handle_child_pushdown_result.
Pushdown of FilterExec into DataSourceExec is an example of a pre-pushdown.
Unlike filter pushdown in the logical phase, which operates on the logical plan to push filters into the logical table scan,
the Pre phase in the physical plan targets the actual physical scan, pushing filters down to specific data source implementations.
For example, Parquet supports filter pushdown to reduce data read during scanning, while CSV typically does not.
Post
Pushdown that happens after most other optimizations.
This stage of filter pushdown allows filters that reference an ExecutionPlan to be pushed down.
Since subsequent optimizations should not change the structure of the plan tree except for calling ExecutionPlan::with_new_children
(which generally preserves internal references) it is safe for references between ExecutionPlans to be established at this stage.
This phase is used to link a SortExec (with a TopK operator) or a HashJoinExec to a DataSourceExec.
Trait Implementations§
Source§impl Clone for FilterPushdownPhase
impl Clone for FilterPushdownPhase
Source§fn clone(&self) -> FilterPushdownPhase
fn clone(&self) -> FilterPushdownPhase
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FilterPushdownPhase
impl Debug for FilterPushdownPhase
Source§impl Display for FilterPushdownPhase
impl Display for FilterPushdownPhase
Source§impl PartialEq for FilterPushdownPhase
impl PartialEq for FilterPushdownPhase
impl Copy for FilterPushdownPhase
impl Eq for FilterPushdownPhase
impl StructuralPartialEq for FilterPushdownPhase
Auto Trait Implementations§
impl Freeze for FilterPushdownPhase
impl RefUnwindSafe for FilterPushdownPhase
impl Send for FilterPushdownPhase
impl Sync for FilterPushdownPhase
impl Unpin for FilterPushdownPhase
impl UnwindSafe for FilterPushdownPhase
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§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§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.