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>
impl<'a> GuaranteeRewriter<'a>
pub fn new( guarantees: impl IntoIterator<Item = &'a (Expr, NullableInterval)>, ) -> GuaranteeRewriter<'a>
Trait Implementations§
source§impl<'a> TreeNodeRewriter for GuaranteeRewriter<'a>
impl<'a> TreeNodeRewriter for GuaranteeRewriter<'a>
source§fn f_up(&mut self, expr: Expr) -> Result<Transformed<Expr>, DataFusionError>
fn f_up(&mut self, expr: Expr) -> Result<Transformed<Expr>, DataFusionError>
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>
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> 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> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§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