pub struct PredicatePushdown {
    recursion_guard: RecursionGuard,
}
Expand description

Pushes predicates down through other operators.

Fields

recursion_guard: RecursionGuard

Implementations

Predicate pushdown

This method looks for opportunities to push predicates toward sources of data. Primarily, this is the Filter expression, and moving its predicates through the operators it contains.

In addition, the method accumulates the intersection of predicates applied to each Get expression, so that the predicate can then be pushed through to a Let binding, or to the external source of the data if the Get binds to another view.

Computes “safe” predicates to push through a Map.

In the case of a Filter { Map {…} }, we can always push down the Filter by inlining expressions from the Map. We don’t want to do this in general, however, since general inlining can result in exponential blowup in the size of expressions, so we only do this in the case where we deem the referenced expressions “safe.” See the comment above can_inline for more details. Note that this means we can always push down filters that only reference input columns.

Returns the predicates that can be pushed down, followed by ones that cannot.

Computes “safe” predicate to push through a FlatMap.

In the case of a Filter { FlatMap {…} }, we want to push through all predicates that (1) are not literal errors and (2) have support exclusively in the columns provided by the FlatMap input.

Returns the predicates that can be pushed down, followed by ones that cannot.

If s is of the form (isnull(expr1) && isnull(expr2)) || (expr1 = expr2), or (decompose_is_null(expr1) && decompose_is_null(expr2)) || (expr1 = expr2), extract expr1 and expr2.

Reduces the given expression and returns its AND-ed terms.

Defines a criteria for inlining scalar expressions.

Trait Implementations

Extracts a reference to the recursion guard embedded within the type.

Checks whether it is safe to recur and calls f if so. Read more

Like CheckedRecursion::checked_recur, but operates on a mutable reference to Self. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Transform a relation into a functionally equivalent relation.

A string describing the transform. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Attaches the provided Context to this type, returning a WithContext wrapper. Read more

Attaches the current Context to this type, returning a WithContext wrapper. Read more

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

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

Wrap the input message T in a tonic::Request

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

Drops the object pointed to by the given pointer. Read more

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more