| Interface | Description |
|---|---|
| ExpressionRewriteRuleSet.ExpressionRewriter |
| Class | Description |
|---|---|
| AddExchangesBelowPartialAggregationOverGroupIdRuleSet |
Transforms
|
| AddIntermediateAggregations |
Adds INTERMEDIATE aggregations between an un-grouped FINAL aggregation and its preceding
PARTIAL aggregation.
|
| CanonicalizeExpressionRewriter | |
| CanonicalizeExpressions | |
| CreatePartialTopN | |
| DesugarAtTimeZone | |
| DesugarCurrentPath | |
| DesugarCurrentUser | |
| DesugarLambdaExpression | |
| 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 | |
| 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:
|
| ImplementOffset |
Transforms:
|
| 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).
|
| LambdaCaptureDesugaringRewriter | |
| MergeFilters | |
| MergeLimitOverProjectWithSort |
Transforms:
|
| MergeLimits | |
| MergeLimitWithDistinct | |
| MergeLimitWithSort | |
| MergeLimitWithTopN | |
| MultipleDistinctAggregationToMarkDistinct |
Implements distinct aggregations with different inputs by transforming plans of the following shape:
|
| PlanNodeWithCost | |
| 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 symbol 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 | |
| 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.
|
| PushDownNegationsExpressionRewriter | |
| PushLimitIntoTableScan | |
| PushLimitThroughMarkDistinct | |
| PushLimitThroughOffset |
Transforms:
|
| PushLimitThroughOuterJoin |
Transforms:
|
| PushLimitThroughProject | |
| PushLimitThroughSemiJoin | |
| PushLimitThroughUnion |
Transforms:
|
| PushOffsetThroughProject |
Transforms:
|
| PushPartialAggregationThroughExchange | |
| PushPartialAggregationThroughJoin | |
| PushPredicateIntoTableScan |
These rules should not be run after AddExchanges so as not to overwrite the TableLayout
chosen by AddExchanges
|
| 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.
|
| PushSampleIntoTableScan | |
| PushTableWriteThroughUnion | |
| PushTopNThroughOuterJoin |
Transforms:
|
| PushTopNThroughProject |
Transforms:
|
| PushTopNThroughUnion | |
| RemoveAggregationInSemiJoin |
Remove the aggregation node that produces distinct rows from the Filtering source of a Semi join.
|
| RemoveDuplicateConditions |
Flattens and removes duplicate conjuncts or disjuncts.
|
| 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.
|
| RemoveRedundantDistinctLimit |
Replace DistinctLimit node
1.
|
| RemoveRedundantIdentityProjections |
Removes projection nodes that only perform non-renaming identity projections
|
| RemoveRedundantLimit |
Remove Limit node when the subplan is guaranteed to produce fewer rows than the limit and
replace the plan with empty values if the limit count is 0.
|
| RemoveRedundantSort | |
| RemoveRedundantTopN |
Replace TopN node
1.
|
| RemoveTrivialFilters | |
| RemoveUnreferencedScalarApplyNodes | |
| RemoveUnreferencedScalarLateralNodes | |
| ReorderJoins | |
| RewriteSpatialPartitioningAggregation |
Re-writes spatial_partitioning(geometry) aggregations into spatial_partitioning(envelope, partition_count)
on top of ST_Envelope(geometry) projection, e.g.
|
| SimplifyCountOverConstant | |
| SimplifyExpressions | |
| 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 | |
| UnwrapCastInComparison |
Given s of type S, a constant expression t of type T, and when an implicit
cast exists between S->T, converts expression of the form:
|
Copyright © 2012–2019. All rights reserved.