pub struct FilterDescription {
child_filter_descriptions: Vec<ChildFilterDescription>,
}Expand description
Describes how filters should be pushed down to children.
This structure contains filter descriptions for each child node, specifying:
- Which parent filters can be pushed down to each child
- Which self-generated filters should be pushed down to each child
The filter routing is determined by column analysis - filters can only be pushed to children whose schemas contain all the referenced columns.
Fields§
§child_filter_descriptions: Vec<ChildFilterDescription>Implementations§
Source§impl FilterDescription
impl FilterDescription
Sourcepub fn new() -> FilterDescription
pub fn new() -> FilterDescription
Create a new empty FilterDescription
Sourcepub fn with_child(self, child: ChildFilterDescription) -> FilterDescription
pub fn with_child(self, child: ChildFilterDescription) -> FilterDescription
Add a child filter description
Sourcepub fn from_children(
parent_filters: Vec<Arc<dyn PhysicalExpr>>,
children: &[&Arc<dyn ExecutionPlan>],
) -> Result<FilterDescription, DataFusionError>
pub fn from_children( parent_filters: Vec<Arc<dyn PhysicalExpr>>, children: &[&Arc<dyn ExecutionPlan>], ) -> Result<FilterDescription, DataFusionError>
Build a filter description by analyzing which parent filters can be pushed to each child. This method automatically determines filter routing based on column analysis:
- If all columns referenced by a filter exist in a child’s schema, it can be pushed down
- Otherwise, it cannot be pushed down to that child
Sourcepub fn all_unsupported(
parent_filters: &[Arc<dyn PhysicalExpr>],
children: &[&Arc<dyn ExecutionPlan>],
) -> FilterDescription
pub fn all_unsupported( parent_filters: &[Arc<dyn PhysicalExpr>], children: &[&Arc<dyn ExecutionPlan>], ) -> FilterDescription
Mark all parent filters as unsupported for all children.
pub fn parent_filters(&self) -> Vec<Vec<PushedDownPredicate>>
pub fn self_filters(&self) -> Vec<Vec<Arc<dyn PhysicalExpr>>>
Trait Implementations§
Source§impl Clone for FilterDescription
impl Clone for FilterDescription
Source§fn clone(&self) -> FilterDescription
fn clone(&self) -> FilterDescription
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for FilterDescription
impl Debug for FilterDescription
Source§impl Default for FilterDescription
impl Default for FilterDescription
Source§fn default() -> FilterDescription
fn default() -> FilterDescription
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for FilterDescription
impl !RefUnwindSafe for FilterDescription
impl Send for FilterDescription
impl Sync for FilterDescription
impl Unpin for FilterDescription
impl !UnwindSafe for FilterDescription
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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