pub struct ChildFilterDescription {
pub(crate) parent_filters: Vec<PushedDownPredicate>,
pub(crate) self_filters: Vec<Arc<dyn PhysicalExpr>>,
}Expand description
Describes filter pushdown for a single child node.
This structure contains two types of filters:
- Parent filters: Filters received from the parent node, marked as supported or unsupported
- Self filters: Filters generated by the current node to be pushed down to this child
Fields§
§parent_filters: Vec<PushedDownPredicate>Description of which parent filters can be pushed down into this node. Since we need to transmit filter pushdown results back to this node’s parent we need to track each parent filter for each child, even those that are unsupported / won’t be pushed down.
self_filters: Vec<Arc<dyn PhysicalExpr>>Description of which filters this node is pushing down to its children. Since this is not transmitted back to the parents we can have variable sized inner arrays instead of having to track supported/unsupported.
Implementations§
Source§impl ChildFilterDescription
impl ChildFilterDescription
Sourcepub fn from_child(
parent_filters: &[Arc<dyn PhysicalExpr>],
child: &Arc<dyn ExecutionPlan>,
) -> Result<Self>
pub fn from_child( parent_filters: &[Arc<dyn PhysicalExpr>], child: &Arc<dyn ExecutionPlan>, ) -> Result<Self>
Build a child filter description by analyzing which parent filters can be pushed to a specific child.
This method performs column analysis to determine which filters can be pushed down:
- If all columns referenced by a filter exist in the child’s schema, it can be pushed down
- Otherwise, it cannot be pushed down to that child
See FilterDescription::from_children for more details
Sourcepub fn with_self_filter(self, filter: Arc<dyn PhysicalExpr>) -> Self
pub fn with_self_filter(self, filter: Arc<dyn PhysicalExpr>) -> Self
Add a self filter (from the current node) to be pushed down to this child.
Sourcepub fn with_self_filters(self, filters: Vec<Arc<dyn PhysicalExpr>>) -> Self
pub fn with_self_filters(self, filters: Vec<Arc<dyn PhysicalExpr>>) -> Self
Add multiple self filters.
Trait Implementations§
Source§impl Clone for ChildFilterDescription
impl Clone for ChildFilterDescription
Source§fn clone(&self) -> ChildFilterDescription
fn clone(&self) -> ChildFilterDescription
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ChildFilterDescription
impl !RefUnwindSafe for ChildFilterDescription
impl Send for ChildFilterDescription
impl Sync for ChildFilterDescription
impl Unpin for ChildFilterDescription
impl !UnwindSafe for ChildFilterDescription
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