public class RelDecorrelator extends Object implements ReflectiveVisitor
TODO:
CorelMap constructor parameter with a RelNode
currentRel immutable (would require a fresh
RelDecorrelator for each node being decorrelated)CorelMap immutable| Modifier and Type | Class and Description |
|---|---|
static class |
RelDecorrelator.AdjustProjectForCountAggregateRule
Planner rule that adjusts projects when counts are added.
|
static interface |
RelDecorrelator.Config
Base configuration for rules that are non-static in a RelDecorrelator.
|
protected static class |
RelDecorrelator.CorelMap
|
static class |
RelDecorrelator.CorelMapBuilder
Builds a
RelDecorrelator.CorelMap. |
static class |
RelDecorrelator.RemoveCorrelationForScalarAggregateRule
Planner rule that removes correlations for scalar aggregates.
|
static class |
RelDecorrelator.RemoveCorrelationForScalarProjectRule
Planner rule that removes correlations for scalar projects.
|
static class |
RelDecorrelator.RemoveSingleAggregateRule
Rule to remove single_value rel.
|
| Modifier and Type | Field and Description |
|---|---|
protected RelDecorrelator.CorelMap |
cm |
| Modifier | Constructor and Description |
|---|---|
protected |
RelDecorrelator(RelDecorrelator.CorelMap cm,
Context context,
RelBuilder relBuilder) |
| Modifier and Type | Method and Description |
|---|---|
protected RelNode |
decorrelate(RelNode root) |
protected RexNode |
decorrelateExpr(RelNode currentRel,
Map<RelNode,org.apache.calcite.sql2rel.RelDecorrelator.Frame> map,
RelDecorrelator.CorelMap cm,
RexNode exp) |
static RelNode |
decorrelateQuery(RelNode rootRel)
Deprecated.
|
static RelNode |
decorrelateQuery(RelNode rootRel,
RelBuilder relBuilder)
Decorrelates a query.
|
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(Aggregate rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(Correlate rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(Filter rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(Join rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(LogicalAggregate rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(LogicalCorrelate rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(LogicalFilter rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(LogicalJoin rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(LogicalProject rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(LogicalSnapshot rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(LogicalTableFunctionScan rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(Project rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(RelNode rel)
Fallback if none of the other
decorrelateRel methods match. |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(Sort rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
decorrelateRel(Values rel) |
org.apache.calcite.sql2rel.RelDecorrelator.Frame |
getInvoke(RelNode r,
RelNode parent) |
protected RelBuilderFactory |
relBuilderFactory() |
protected RexNode |
removeCorrelationExpr(RexNode exp,
boolean projectPulledAboveLeftCorrelator) |
protected RexNode |
removeCorrelationExpr(RexNode exp,
boolean projectPulledAboveLeftCorrelator,
RexInputRef nullIndicator) |
protected RexNode |
removeCorrelationExpr(RexNode exp,
boolean projectPulledAboveLeftCorrelator,
Set<Integer> isCount) |
RelNode |
removeCorrelationViaRule(RelNode root) |
protected RelDecorrelator.CorelMap cm
protected RelDecorrelator(RelDecorrelator.CorelMap cm, Context context, RelBuilder relBuilder)
@Deprecated public static RelNode decorrelateQuery(RelNode rootRel)
public static RelNode decorrelateQuery(RelNode rootRel, RelBuilder relBuilder)
This is the main entry point to RelDecorrelator.
rootRel - Root node of the queryrelBuilder - Builder for relational expressionsCorrelate instances removedprotected RelBuilderFactory relBuilderFactory()
protected RexNode decorrelateExpr(RelNode currentRel, Map<RelNode,org.apache.calcite.sql2rel.RelDecorrelator.Frame> map, RelDecorrelator.CorelMap cm, RexNode exp)
protected RexNode removeCorrelationExpr(RexNode exp, boolean projectPulledAboveLeftCorrelator)
protected RexNode removeCorrelationExpr(RexNode exp, boolean projectPulledAboveLeftCorrelator, RexInputRef nullIndicator)
protected RexNode removeCorrelationExpr(RexNode exp, boolean projectPulledAboveLeftCorrelator, Set<Integer> isCount)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(RelNode rel)
decorrelateRel methods match.public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(Sort rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(Values rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(LogicalAggregate rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(Aggregate rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame getInvoke(RelNode r, RelNode parent)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(LogicalProject rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(Project rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(LogicalSnapshot rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(LogicalTableFunctionScan rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(LogicalFilter rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(Filter rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(LogicalCorrelate rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(Correlate rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(LogicalJoin rel)
public org.apache.calcite.sql2rel.RelDecorrelator.Frame decorrelateRel(Join rel)
Copyright © 2012-2020 Apache Software Foundation. All Rights Reserved.