Module datafusion_optimizer::utils
source · Expand description
Collection of utility functions that are leveraged by the query optimizer rules
Functions
returns a new LogicalPlan that wraps
plan
in a LogicalPlan::Filter with
its predicate be all predicates
ANDed.Tries to convert an expression to conjunctive normal form (CNF).
Combines an array of filter expressions into a single filter
expression consisting of the input filter expressions joined with
logical AND.
Combines an array of filter expressions into a single filter
expression consisting of the input filter expressions joined with
logical OR.
Extracts correlating columns from expressions
Looks for correlating expressions: equality expressions with one field from the subquery, and
one not in the subquery (closed upon from outer scope)
Merge and deduplicate two sets Column slices
Returns the first (and only) element in a slice, or an error
Convenience rule for writing optimizers: recursively invoke
optimize on plan’s children and then return a node of the same
type. Useful for optimizer rules which want to leave the type
of plan unchanged but still apply to the children.
This also handles the case when the
plan
is a LogicalPlan::Explain
.Rewrites
expr
using rewriter
, ensuring that the output has the
same name as expr
prior to rewrite, adding an alias if necessary.Change the relation on a slice of Columns
Recursively un-alias an expressions
Recursively scans a slice of expressions for any
Or
operators