FilterPushdownPropagation

Struct FilterPushdownPropagation 

Source
pub struct FilterPushdownPropagation<T> {
    pub filters: Vec<PushedDown>,
    pub updated_node: Option<T>,
}
Expand description

The result of pushing down filters into a node.

Returned from ExecutionPlan::handle_child_pushdown_result to communicate to the optimizer:

  1. What to do with any parent filters that were could not be pushed down into the children.
  2. If the node needs to be replaced in the execution plan with a new node or not.

Fields§

§filters: Vec<PushedDown>

What filters were pushed into the parent node.

§updated_node: Option<T>

The updated node, if it was updated during pushdown

Implementations§

Source§

impl<T> FilterPushdownPropagation<T>

Source

pub fn if_all(child_pushdown_result: ChildPushdownResult) -> Self

Create a new FilterPushdownPropagation that tells the parent node that each parent filter is supported if it was supported by all children.

Source

pub fn if_any(child_pushdown_result: ChildPushdownResult) -> Self

Create a new FilterPushdownPropagation that tells the parent node that each parent filter is supported if it was supported by any child.

Source

pub fn all_unsupported(child_pushdown_result: ChildPushdownResult) -> Self

Create a new FilterPushdownPropagation that tells the parent node that no filters were pushed down regardless of the child results.

Source

pub fn with_parent_pushdown_result(filters: Vec<PushedDown>) -> Self

Create a new FilterPushdownPropagation with the specified filter support. This transmits up to our parent node what the result of pushing down the filters into our node and possibly our subtree was.

Source

pub fn with_updated_node(self, updated_node: T) -> Self

Bind an updated node to the FilterPushdownPropagation. Use this when the current node wants to update itself in the tree or replace itself with a new node (e.g. one of it’s children). You do not need to call this if one of the children of the current node may have updated itself, that is handled by the optimizer.

Trait Implementations§

Source§

impl<T: Clone> Clone for FilterPushdownPropagation<T>

Source§

fn clone(&self) -> FilterPushdownPropagation<T>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for FilterPushdownPropagation<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> ErasedDestructor for T
where T: 'static,