Expand description
§DataFusion Optimizer
Contains rules for rewriting LogicalPlan
s
-
Analyzer
appliesAnalyzerRule
s to transformLogicalPlan
s to make the plan valid prior to the rest of the DataFusion optimization process (for example,TypeCoercion
). -
Optimizer
appliesOptimizerRule
s to transformLogicalPlan
s into equivalent, but more efficient plans.
Re-exports§
pub use analyzer::Analyzer;
pub use analyzer::AnalyzerRule;
pub use optimizer::ApplyOrder;
pub use optimizer::Optimizer;
pub use optimizer::OptimizerConfig;
pub use optimizer::OptimizerContext;
pub use optimizer::OptimizerRule;
pub use utils::optimize_children;
Deprecated
Modules§
- analyzer
Analyzer
andAnalyzerRule
- common_
subexpr_ eliminate CommonSubexprEliminate
to avoid redundant computation of common sub-expressions- decorrelate
PullUpCorrelatedExpr
converts correlated subqueries toJoins
- decorrelate_
predicate_ subquery DecorrelatePredicateSubquery
convertsIN
/EXISTS
subquery predicates toSEMI
/ANTI
joins- eliminate_
cross_ join EliminateCrossJoin
convertsCROSS JOIN
toINNER JOIN
if join predicates are available.- eliminate_
duplicated_ expr EliminateDuplicatedExpr
Removes redundant expressions- eliminate_
filter EliminateFilter
replaceswhere false
orwhere null
with an empty relation.- eliminate_
group_ by_ constant EliminateGroupByConstant
removes constant expressions fromGROUP BY
clause- eliminate_
join EliminateJoin
rewritesINNER JOIN
withtrue
/null
- eliminate_
limit EliminateLimit
eliminatesLIMIT
when possible- eliminate_
nested_ union EliminateNestedUnion
: flattens nestedUnion
to a singleUnion
- eliminate_
one_ union EliminateOneUnion
eliminates single elementUnion
- eliminate_
outer_ join EliminateOuterJoin
convertsLEFT/RIGHT/FULL
joins toINNER
joins- extract_
equijoin_ predicate ExtractEquijoinPredicate
identifies equality join (equijoin) predicates- filter_
null_ join_ keys FilterNullJoinKeys
adds filters to join inputs when input isn’t nullable- optimize_
projections OptimizeProjections
identifies and eliminates unused columns- optimizer
Optimizer
andOptimizerRule
- propagate_
empty_ relation PropagateEmptyRelation
eliminates nodes fed byEmptyRelation
- push_
down_ filter PushDownFilter
applies filters as early as possible- push_
down_ limit PushDownLimit
pushesLIMIT
earlier in the query plan- replace_
distinct_ aggregate ReplaceDistinctWithAggregate
replacesDISTINCT ...
withGROUP BY ...
- scalar_
subquery_ to_ join ScalarSubqueryToJoin
rewriting scalar subquery filters toJOIN
s- simplify_
expressions SimplifyExpressions
simplifies expressions in the logical plan,ExprSimplifier
simplifies individualExpr
s.- single_
distinct_ to_ groupby SingleDistinctToGroupBy
replacesAGG(DISTINCT ..)
withAGG(..) GROUP BY ..
- unwrap_
cast_ in_ comparison UnwrapCastInComparison
rewritesCAST(col) = lit
tocol = CAST(lit)
- utils
- Utility functions leveraged by the query optimizer rules