pub struct GuaranteeRewriter<'a> { /* private fields */ }
Expand description

Rewrite expressions to incorporate guarantees.

Guarantees are a mapping from an expression (which currently is always a column reference) to a NullableInterval. The interval represents the known possible values of the column. Using these known values, expressions are rewritten so they can be simplified using ConstEvaluator and Simplifier.

For example, if we know that a column is not null and has values in the range [1, 10), we can rewrite x IS NULL to false or x < 10 to true.

See a full example in ExprSimplifier::with_guarantees().

Implementations§

source§

impl<'a> GuaranteeRewriter<'a>

source

pub fn new( guarantees: impl IntoIterator<Item = &'a (Expr, NullableInterval)>, ) -> Self

Trait Implementations§

source§

impl<'a> TreeNodeRewriter for GuaranteeRewriter<'a>

§

type Node = Expr

The node type which is rewritable.
source§

fn f_up(&mut self, expr: Expr) -> Result<Transformed<Expr>>

Invoked while traversing up the tree after all children have been rewritten. Default implementation returns the node as is and continues recursion.
source§

fn f_down( &mut self, node: Self::Node, ) -> Result<Transformed<Self::Node>, DataFusionError>

Invoked while traversing down the tree before any children are rewritten. Default implementation returns the node as is and continues recursion.

Auto Trait Implementations§

§

impl<'a> Freeze for GuaranteeRewriter<'a>

§

impl<'a> !RefUnwindSafe for GuaranteeRewriter<'a>

§

impl<'a> Send for GuaranteeRewriter<'a>

§

impl<'a> Sync for GuaranteeRewriter<'a>

§

impl<'a> Unpin for GuaranteeRewriter<'a>

§

impl<'a> !UnwindSafe for GuaranteeRewriter<'a>

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.