Interface | Description |
---|---|
ExpressionRewriteRuleSet.ExpressionRewriter | |
RowExpressionRewriteRuleSet.PlanRowExpressionRewriter |
Class | Description |
---|---|
AddIntermediateAggregations |
Adds INTERMEDIATE aggregations between an un-grouped FINAL aggregation and its preceding
PARTIAL aggregation.
|
CanonicalizeExpressionRewriter | |
CanonicalizeExpressions | |
CreatePartialTopN | |
DesugarAtTimeZone | |
DesugarCurrentUser | |
DesugarLambdaExpression | |
DesugarRowSubscript | |
DesugarTryExpression | |
DetermineJoinDistributionType | |
DetermineSemiJoinDistributionType |
This rule must run after the distribution type has already been set for delete queries,
since semi joins in delete queries must be replicated.
|
EliminateCrossJoins | |
EvaluateZeroLimit | |
EvaluateZeroSample |
Replaces 0% sample node with empty values node.
|
ExpressionRewriteRuleSet | |
ExtractCommonPredicatesExpressionRewriter | |
ExtractSpatialJoins |
Applies to broadcast spatial joins, inner and left, expressed via ST_Contains,
ST_Intersects and ST_Distance functions.
|
ExtractSpatialJoins.ExtractSpatialInnerJoin | |
ExtractSpatialJoins.ExtractSpatialLeftJoin | |
GatherAndMergeWindows | |
GatherAndMergeWindows.MergeAdjacentWindowsOverProjects | |
GatherAndMergeWindows.SwapAdjacentWindowsBySpecifications | |
ImplementBernoulliSampleAsFilter |
Transforms:
|
ImplementFilteredAggregations |
Implements filtered aggregations by transforming plans of the following shape:
|
InlineProjections |
Inlines expressions from a child project node into a parent project node
as long as they are simple constants, or they are referenced only once (to
avoid introducing duplicate computation) and the references don't appear
within a TRY block (to avoid changing semantics).
|
InlineSqlFunctions | |
InlineSqlFunctions.InlineSqlFunctionsRewriter | |
LambdaCaptureDesugaringRewriter | |
MergeFilters | |
MergeLimits | |
MergeLimitWithDistinct | |
MergeLimitWithSort | |
MergeLimitWithTopN | |
MultipleDistinctAggregationToMarkDistinct |
Implements distinct aggregations with different inputs by transforming plans of the following shape:
|
PickTableLayout |
These rules should not be run after AddExchanges so as not to overwrite the TableLayout
chosen by AddExchanges
|
PlanNodeWithCost | |
PlanRemotePojections | |
PlanRemotePojections.ProjectionContext | |
PreconditionRules | |
ProjectOffPushDownRule<N extends PlanNode> | |
PruneAggregationColumns | |
PruneAggregationSourceColumns | |
PruneCountAggregationOverScalar |
A count over a subquery can be reduced to a VALUES(1) provided
the subquery is a scalar
|
PruneCrossJoinColumns |
Cross joins don't support output symbol selection, so push the project-off through the node.
|
PruneFilterColumns | |
PruneIndexSourceColumns | |
PruneJoinChildrenColumns |
Non-Cross joins support output variable selection, so make any project-off of child columns explicit in project nodes.
|
PruneJoinColumns |
Non-cross joins support output symbol selection, so absorb any project-off into the node.
|
PruneLimitColumns | |
PruneMarkDistinctColumns | |
PruneOrderByInAggregation | |
PruneOutputColumns | |
PruneProjectColumns | |
PruneRedundantProjectionAssignments | |
PruneSemiJoinColumns | |
PruneSemiJoinFilteringSourceColumns | |
PruneTableScanColumns | |
PruneTopNColumns | |
PruneValuesColumns | |
PruneWindowColumns | |
PushAggregationThroughOuterJoin |
This optimizer pushes aggregations below outer joins when: the aggregation
is on top of the outer join, it groups by all columns in the outer table, and
the outer rows are guaranteed to be distinct.
|
PushDownDereferences |
Push down dereferences as follows:
|
PushDownNegationsExpressionRewriter | |
PushLimitThroughMarkDistinct | |
PushLimitThroughOuterJoin |
Transforms:
|
PushLimitThroughProject | |
PushLimitThroughSemiJoin | |
PushLimitThroughUnion |
Transforms:
|
PushPartialAggregationThroughExchange | |
PushPartialAggregationThroughJoin | |
PushProjectionThroughExchange |
Transforms:
|
PushProjectionThroughUnion | |
PushRemoteExchangeThroughAssignUniqueId |
Pushes RemoteExchange node down through the AssignUniqueId to preserve
partitioned_on(unique) and grouped(unique) properties for the output of
the AssignUniqueId.
|
PushTableWriteThroughUnion | |
PushTopNThroughUnion | |
RemoveEmptyDelete |
If the predicate for a delete is optimized to false, the target table scan
of the delete will be replaced with an empty values node.
|
RemoveFullSample |
Removes 100% sample nodes.
|
RemoveRedundantIdentityProjections |
Removes projection nodes that only perform non-renaming identity projections
|
RemoveTrivialFilters | |
RemoveUnreferencedScalarApplyNodes | |
RemoveUnreferencedScalarLateralNodes | |
RemoveUnsupportedDynamicFilters |
Dynamic filters are supported only right after TableScan and only if the subtree is on the probe side of some downstream join node
Dynamic filters are removed from JoinNode if there is no consumer for it on probe side
|
ReorderJoins | |
RewriteFilterWithExternalFunctionToProject | |
RewriteSpatialPartitioningAggregation |
Re-writes spatial_partitioning(geometry) aggregations into spatial_partitioning(envelope, partition_count)
on top of ST_Envelope(geometry) projection, e.g.
|
RowExpressionRewriteRuleSet | |
RuntimeReorderJoinSides | |
SimplifyCountOverConstant | |
SimplifyExpressions | |
SimplifyRowExpressions | |
SingleDistinctAggregationToGroupBy |
Implements distinct aggregations with similar inputs by transforming plans of the following shape:
|
TransformCorrelatedInPredicateToJoin |
Replaces correlated ApplyNode with InPredicate expression with SemiJoin
|
TransformCorrelatedLateralJoinToJoin |
Tries to decorrelate subquery and rewrite it using normal join.
|
TransformCorrelatedScalarAggregationToJoin |
Scalar aggregation is aggregation with GROUP BY 'a constant' (or empty GROUP BY).
|
TransformCorrelatedScalarSubquery |
Scalar filter scan query is something like:
|
TransformCorrelatedSingleRowSubqueryToProject |
This optimizer can rewrite correlated single row subquery to projection in a way described here:
From:
|
TransformExistsApplyToLateralNode |
EXISTS is modeled as (if correlated predicates are equality comparisons):
|
TransformUncorrelatedInPredicateSubqueryToSemiJoin |
This optimizers looks for InPredicate expressions in ApplyNodes and replaces the nodes with SemiJoin nodes.
|
TransformUncorrelatedLateralToJoin | |
TranslateExpressions |
Copyright © 2012–2021. All rights reserved.