This is an automated email from the ASF dual-hosted git repository.
amaliujia pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new 1bf6b08 [CALCITE-4461] Do not use `Logical` nodes inside Enumerable
rules (Vladimir Ozerov)
1bf6b08 is described below
commit 1bf6b08a81f471f979e1b52174f225f03ff77a2e
Author: devozerov <[email protected]>
AuthorDate: Mon Jan 25 16:44:11 2021 +0300
[CALCITE-4461] Do not use `Logical` nodes inside Enumerable rules (Vladimir
Ozerov)
---
.../calcite/adapter/enumerable/EnumerableAggregateRule.java | 7 ++++---
.../adapter/enumerable/EnumerableBatchNestedLoopJoinRule.java | 5 ++---
.../apache/calcite/adapter/enumerable/EnumerableCalcRule.java | 7 ++++---
.../calcite/adapter/enumerable/EnumerableCorrelateRule.java | 3 ++-
.../apache/calcite/adapter/enumerable/EnumerableFilterRule.java | 7 ++++---
.../calcite/adapter/enumerable/EnumerableIntersectRule.java | 8 ++++----
.../apache/calcite/adapter/enumerable/EnumerableJoinRule.java | 6 ++++--
.../calcite/adapter/enumerable/EnumerableLimitSortRule.java | 2 +-
.../apache/calcite/adapter/enumerable/EnumerableMatchRule.java | 7 ++++---
.../calcite/adapter/enumerable/EnumerableMergeJoinRule.java | 6 ++++--
.../apache/calcite/adapter/enumerable/EnumerableMinusRule.java | 7 ++++---
.../apache/calcite/adapter/enumerable/EnumerableProjectRule.java | 7 ++++---
.../calcite/adapter/enumerable/EnumerableRepeatUnionRule.java | 7 ++++---
.../adapter/enumerable/EnumerableSortedAggregateRule.java | 6 +++---
.../adapter/enumerable/EnumerableTableFunctionScanRule.java | 8 ++++----
.../calcite/adapter/enumerable/EnumerableTableModifyRule.java | 9 ++++-----
.../calcite/adapter/enumerable/EnumerableTableScanRule.java | 8 ++++----
.../calcite/adapter/enumerable/EnumerableTableSpoolRule.java | 7 ++++---
.../apache/calcite/adapter/enumerable/EnumerableUnionRule.java | 7 ++++---
.../apache/calcite/adapter/enumerable/EnumerableValuesRule.java | 9 ++++-----
.../apache/calcite/adapter/enumerable/EnumerableWindowRule.java | 7 ++++---
21 files changed, 76 insertions(+), 64 deletions(-)
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateRule.java
index 6e85a11..db06fea 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregateRule.java
@@ -21,13 +21,14 @@ import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.InvalidRelException;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Aggregate;
import org.apache.calcite.rel.logical.LogicalAggregate;
import org.checkerframework.checker.nullness.qual.Nullable;
/**
- * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalAggregate}
- * to an {@link EnumerableAggregate}.
+ * Rule to convert a {@link LogicalAggregate} to an {@link
EnumerableAggregate}.
+ * You may provide a custom config to convert other nodes that extend {@link
Aggregate}.
*
* @see EnumerableRules#ENUMERABLE_AGGREGATE_RULE
*/
@@ -44,7 +45,7 @@ class EnumerableAggregateRule extends ConverterRule {
}
@Override public @Nullable RelNode convert(RelNode rel) {
- final LogicalAggregate agg = (LogicalAggregate) rel;
+ final Aggregate agg = (Aggregate) rel;
final RelTraitSet traitSet = rel.getCluster()
.traitSet().replace(EnumerableConvention.INSTANCE);
try {
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoinRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoinRule.java
index a2c0d0a..7e0f3cc 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoinRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoinRule.java
@@ -39,9 +39,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-/** Planner rule that converts a
- * {@link org.apache.calcite.rel.logical.LogicalJoin} into an
- * {@link org.apache.calcite.adapter.enumerable.EnumerableBatchNestedLoopJoin}.
+/** Rule to convert a {@link LogicalJoin} to an {@link
EnumerableBatchNestedLoopJoin}.
+ * You may provide a custom config to convert other nodes that extend {@link
Join}.
*
* @see EnumerableRules#ENUMERABLE_BATCH_NESTED_LOOP_JOIN_RULE
*/
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
index 1818feb..e4be772 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCalcRule.java
@@ -20,11 +20,12 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelOptUtil;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Calc;
import org.apache.calcite.rel.logical.LogicalCalc;
/**
- * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalCalc} to an
- * {@link EnumerableCalc}.
+ * Rule to convert a {@link LogicalCalc} to an {@link EnumerableCalc}.
+ * You may provide a custom config to convert other nodes that extend {@link
Calc}.
*
* @see EnumerableRules#ENUMERABLE_CALC_RULE
*/
@@ -44,7 +45,7 @@ class EnumerableCalcRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalCalc calc = (LogicalCalc) rel;
+ final Calc calc = (Calc) rel;
final RelNode input = calc.getInput();
return EnumerableCalc.create(
convert(input,
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
index fd1456c..a7224fd 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableCorrelateRule.java
@@ -19,6 +19,7 @@ package org.apache.calcite.adapter.enumerable;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Correlate;
import org.apache.calcite.rel.logical.LogicalCorrelate;
/**
@@ -40,7 +41,7 @@ public class EnumerableCorrelateRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalCorrelate c = (LogicalCorrelate) rel;
+ final Correlate c = (Correlate) rel;
return EnumerableCorrelate.create(
convert(c.getLeft(), c.getLeft().getTraitSet()
.replace(EnumerableConvention.INSTANCE)),
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
index 4f1df08..760d2f1 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilterRule.java
@@ -19,11 +19,12 @@ package org.apache.calcite.adapter.enumerable;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Filter;
import org.apache.calcite.rel.logical.LogicalFilter;
/**
- * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalFilter} to an
- * {@link EnumerableFilter}.
+ * Rule to convert a {@link LogicalFilter} to an {@link EnumerableFilter}.
+ * You may provide a custom config to convert other nodes that extend {@link
Filter}.
*
* @see EnumerableRules#ENUMERABLE_FILTER_RULE
*/
@@ -41,7 +42,7 @@ class EnumerableFilterRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalFilter filter = (LogicalFilter) rel;
+ final Filter filter = (Filter) rel;
return new EnumerableFilter(rel.getCluster(),
rel.getTraitSet().replace(EnumerableConvention.INSTANCE),
convert(filter.getInput(),
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableIntersectRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableIntersectRule.java
index e5fadf5..0a26144 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableIntersectRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableIntersectRule.java
@@ -20,12 +20,12 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Intersect;
import org.apache.calcite.rel.logical.LogicalIntersect;
/**
- * Rule to convert a
- * {@link org.apache.calcite.rel.logical.LogicalIntersect} to an
- * {@link EnumerableIntersect}.
+ * Rule to convert a {@link LogicalIntersect} to an {@link
EnumerableIntersect}.
+ * You may provide a custom config to convert other nodes that extend {@link
Intersect}.
*
* @see EnumerableRules#ENUMERABLE_INTERSECT_RULE
*/
@@ -42,7 +42,7 @@ class EnumerableIntersectRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalIntersect intersect = (LogicalIntersect) rel;
+ final Intersect intersect = (Intersect) rel;
final EnumerableConvention out = EnumerableConvention.INSTANCE;
final RelTraitSet traitSet = intersect.getTraitSet().replace(out);
return new EnumerableIntersect(rel.getCluster(), traitSet,
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoinRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoinRule.java
index a71bf00..57a6778 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoinRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableJoinRule.java
@@ -19,6 +19,7 @@ package org.apache.calcite.adapter.enumerable;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.logical.LogicalJoin;
import org.apache.calcite.rex.RexBuilder;
@@ -30,8 +31,9 @@ import java.util.Arrays;
import java.util.List;
/** Planner rule that converts a
- * {@link org.apache.calcite.rel.logical.LogicalJoin} relational expression
+ * {@link LogicalJoin} relational expression
* {@link org.apache.calcite.adapter.enumerable.EnumerableConvention
enumerable calling convention}.
+ * You may provide a custom config to convert other nodes that extend {@link
Join}.
*
* @see EnumerableRules#ENUMERABLE_JOIN_RULE */
class EnumerableJoinRule extends ConverterRule {
@@ -47,7 +49,7 @@ class EnumerableJoinRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- LogicalJoin join = (LogicalJoin) rel;
+ Join join = (Join) rel;
List<RelNode> newInputs = new ArrayList<>();
for (RelNode input : join.getInputs()) {
if (!(input.getConvention() instanceof EnumerableConvention)) {
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java
index 851e411..9373f5e 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableLimitSortRule.java
@@ -36,7 +36,7 @@ public class EnumerableLimitSortRule extends
RelRule<EnumerableLimitSortRule.Con
}
@Override public void onMatch(RelOptRuleCall call) {
- final LogicalSort sort = call.rel(0);
+ final Sort sort = call.rel(0);
RelNode input = sort.getInput();
final Sort o = EnumerableLimitSort.create(
convert(input,
input.getTraitSet().replace(EnumerableConvention.INSTANCE)),
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatchRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatchRule.java
index 73192f9..fa6c4c5 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatchRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMatchRule.java
@@ -19,11 +19,12 @@ package org.apache.calcite.adapter.enumerable;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Match;
import org.apache.calcite.rel.logical.LogicalMatch;
/**
- * Rule to convert a {@link LogicalMatch} to an
- * {@link EnumerableMatch}.
+ * Rule to convert a {@link LogicalMatch} to an {@link EnumerableMatch}.
+ * You may provide a custom config to convert other nodes that extend {@link
Match}.
*
* @see EnumerableRules#ENUMERABLE_MATCH_RULE
*/
@@ -40,7 +41,7 @@ public class EnumerableMatchRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalMatch match = (LogicalMatch) rel;
+ final Match match = (Match) rel;
return EnumerableMatch.create(
convert(match.getInput(),
match.getInput().getTraitSet()
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
index 36deb59..f69d1c5 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoinRule.java
@@ -25,6 +25,7 @@ import org.apache.calcite.rel.RelCollations;
import org.apache.calcite.rel.RelFieldCollation;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Join;
import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.logical.LogicalJoin;
import org.apache.calcite.rex.RexBuilder;
@@ -38,8 +39,9 @@ import java.util.Arrays;
import java.util.List;
/** Planner rule that converts a
- * {@link org.apache.calcite.rel.logical.LogicalJoin} relational expression
+ * {@link LogicalJoin} relational expression
* {@link EnumerableConvention enumerable calling convention}.
+ * You may provide a custom config to convert other nodes that extend {@link
Join}.
*
* @see EnumerableJoinRule
* @see EnumerableRules#ENUMERABLE_MERGE_JOIN_RULE
@@ -57,7 +59,7 @@ class EnumerableMergeJoinRule extends ConverterRule {
}
@Override public @Nullable RelNode convert(RelNode rel) {
- LogicalJoin join = (LogicalJoin) rel;
+ Join join = (Join) rel;
final JoinInfo info = join.analyzeCondition();
if (!EnumerableMergeJoin.isMergeJoinSupported(join.getJoinType())) {
// EnumerableMergeJoin only supports certain join types.
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMinusRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMinusRule.java
index ecbd0e0..ad6a48f 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMinusRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMinusRule.java
@@ -20,11 +20,12 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.logical.LogicalMinus;
/**
- * Rule to convert an {@link org.apache.calcite.rel.logical.LogicalMinus} to an
- * {@link EnumerableMinus}.
+ * Rule to convert an {@link LogicalMinus} to an {@link EnumerableMinus}.
+ * You may provide a custom config to convert other nodes that extend {@link
Minus}.
*
* @see EnumerableRules#ENUMERABLE_MINUS_RULE
*/
@@ -41,7 +42,7 @@ class EnumerableMinusRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalMinus minus = (LogicalMinus) rel;
+ final Minus minus = (Minus) rel;
final EnumerableConvention out = EnumerableConvention.INSTANCE;
final RelTraitSet traitSet =
rel.getTraitSet().replace(
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectRule.java
index 3b5420b..249dca7 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableProjectRule.java
@@ -19,11 +19,12 @@ package org.apache.calcite.adapter.enumerable;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Project;
import org.apache.calcite.rel.logical.LogicalProject;
/**
- * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalProject} to
an
- * {@link EnumerableProject}.
+ * Rule to convert a {@link LogicalProject} to an {@link EnumerableProject}.
+ * You may provide a custom config to convert other nodes that extend {@link
Project}.
*
* @see EnumerableRules#ENUMERABLE_PROJECT_RULE
*/
@@ -42,7 +43,7 @@ class EnumerableProjectRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalProject project = (LogicalProject) rel;
+ final Project project = (Project) rel;
return EnumerableProject.create(
convert(project.getInput(),
project.getInput().getTraitSet()
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnionRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnionRule.java
index 1ae3511..cb3cdf3 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnionRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRepeatUnionRule.java
@@ -20,11 +20,12 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.RepeatUnion;
import org.apache.calcite.rel.logical.LogicalRepeatUnion;
/**
- * Rule to convert a {@link LogicalRepeatUnion} into an
- * {@link EnumerableRepeatUnion}.
+ * Rule to convert a {@link LogicalRepeatUnion} into an {@link
EnumerableRepeatUnion}.
+ * You may provide a custom config to convert other nodes that extend {@link
RepeatUnion}.
*
* @see EnumerableRules#ENUMERABLE_REPEAT_UNION_RULE
*/
@@ -41,7 +42,7 @@ public class EnumerableRepeatUnionRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- LogicalRepeatUnion union = (LogicalRepeatUnion) rel;
+ RepeatUnion union = (RepeatUnion) rel;
EnumerableConvention out = EnumerableConvention.INSTANCE;
RelTraitSet traitSet = union.getTraitSet().replace(out);
RelNode seedRel = union.getSeedRel();
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java
index 24ab258..31e401d 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSortedAggregateRule.java
@@ -28,8 +28,8 @@ import org.apache.calcite.util.ImmutableIntList;
import org.checkerframework.checker.nullness.qual.Nullable;
/**
- * Rule to convert a {@link LogicalAggregate}
- * to an {@link EnumerableSortedAggregate}.
+ * Rule to convert a {@link LogicalAggregate} to an {@link
EnumerableSortedAggregate}.
+ * You may provide a custom config to convert other nodes that extend {@link
Aggregate}.
*
* @see EnumerableRules#ENUMERABLE_SORTED_AGGREGATE_RULE
*/
@@ -46,7 +46,7 @@ class EnumerableSortedAggregateRule extends ConverterRule {
}
@Override public @Nullable RelNode convert(RelNode rel) {
- final LogicalAggregate agg = (LogicalAggregate) rel;
+ final Aggregate agg = (Aggregate) rel;
if (!Aggregate.isSimple(agg)) {
return null;
}
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScanRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScanRule.java
index f684a00..469c784 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScanRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableFunctionScanRule.java
@@ -20,11 +20,11 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.TableFunctionScan;
import org.apache.calcite.rel.logical.LogicalTableFunctionScan;
-/** Planner rule that converts a
- * {@link org.apache.calcite.rel.logical.LogicalTableFunctionScan} to
- * {@link org.apache.calcite.adapter.enumerable.EnumerableConvention
enumerable calling convention}.
+/** Rule to convert a {@link LogicalTableFunctionScan} to an {@link
EnumerableTableFunctionScan}.
+ * You may provide a custom config to convert other nodes that extend {@link
TableFunctionScan}.
*
* @see EnumerableRules#ENUMERABLE_TABLE_FUNCTION_SCAN_RULE */
public class EnumerableTableFunctionScanRule extends ConverterRule {
@@ -43,7 +43,7 @@ public class EnumerableTableFunctionScanRule extends
ConverterRule {
@Override public RelNode convert(RelNode rel) {
final RelTraitSet traitSet =
rel.getTraitSet().replace(EnumerableConvention.INSTANCE);
- LogicalTableFunctionScan scan = (LogicalTableFunctionScan) rel;
+ TableFunctionScan scan = (TableFunctionScan) rel;
return new EnumerableTableFunctionScan(rel.getCluster(), traitSet,
convertList(scan.getInputs(), traitSet.getTrait(0)),
scan.getElementType(), scan.getRowType(),
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModifyRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModifyRule.java
index 768d0a0..4e111fe 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModifyRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableModifyRule.java
@@ -20,14 +20,14 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.TableModify;
import org.apache.calcite.rel.logical.LogicalTableModify;
import org.apache.calcite.schema.ModifiableTable;
import org.checkerframework.checker.nullness.qual.Nullable;
-/** Planner rule that converts a
- * {@link org.apache.calcite.rel.logical.LogicalTableModify} to
- * {@link org.apache.calcite.adapter.enumerable.EnumerableConvention
enumerable calling convention}.
+/** Planner rule that converts a {@link LogicalTableModify} to an {@link
EnumerableTableModify}.
+ * You may provide a custom config to convert other nodes that extend {@link
TableModify}.
*
* @see EnumerableRules#ENUMERABLE_TABLE_MODIFICATION_RULE */
public class EnumerableTableModifyRule extends ConverterRule {
@@ -43,8 +43,7 @@ public class EnumerableTableModifyRule extends ConverterRule {
}
@Override public @Nullable RelNode convert(RelNode rel) {
- final LogicalTableModify modify =
- (LogicalTableModify) rel;
+ final TableModify modify = (TableModify) rel;
final ModifiableTable modifiableTable =
modify.getTable().unwrap(ModifiableTable.class);
if (modifiableTable == null) {
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScanRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScanRule.java
index 9a4b3d8..635879d 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScanRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableScanRule.java
@@ -20,15 +20,15 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.TableScan;
import org.apache.calcite.rel.logical.LogicalTableScan;
import org.apache.calcite.schema.QueryableTable;
import org.apache.calcite.schema.Table;
import org.checkerframework.checker.nullness.qual.Nullable;
-/** Planner rule that converts a
- * {@link org.apache.calcite.rel.logical.LogicalTableScan} to
- * {@link EnumerableConvention enumerable calling convention}.
+/** Planner rule that converts a {@link LogicalTableScan} to an {@link
EnumerableTableScan}.
+ * You may provide a custom config to convert other nodes that extend {@link
TableScan}.
*
* @see EnumerableRules#ENUMERABLE_TABLE_SCAN_RULE */
public class EnumerableTableScanRule extends ConverterRule {
@@ -46,7 +46,7 @@ public class EnumerableTableScanRule extends ConverterRule {
}
@Override public @Nullable RelNode convert(RelNode rel) {
- LogicalTableScan scan = (LogicalTableScan) rel;
+ TableScan scan = (TableScan) rel;
final RelOptTable relOptTable = scan.getTable();
final Table table = relOptTable.unwrap(Table.class);
// The QueryableTable can only be implemented as ENUMERABLE convention,
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpoolRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpoolRule.java
index dd546ff..829a8d8 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpoolRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableTableSpoolRule.java
@@ -20,11 +20,12 @@ import org.apache.calcite.linq4j.function.Experimental;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.TableSpool;
import org.apache.calcite.rel.logical.LogicalTableSpool;
/**
- * Rule to convert a {@link LogicalTableSpool} into an
- * {@link EnumerableTableSpool}.
+ * Rule to convert a {@link LogicalTableSpool} into an {@link
EnumerableTableSpool}.
+ * You may provide a custom config to convert other nodes that extend {@link
TableSpool}.
*
* <p>NOTE: The current API is experimental and subject to change without
* notice.
@@ -45,7 +46,7 @@ public class EnumerableTableSpoolRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- LogicalTableSpool spool = (LogicalTableSpool) rel;
+ TableSpool spool = (TableSpool) rel;
return EnumerableTableSpool.create(
convert(spool.getInput(),
spool.getInput().getTraitSet().replace(EnumerableConvention.INSTANCE)),
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java
index fc69eab..fc0b94d 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableUnionRule.java
@@ -20,14 +20,15 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Union;
import org.apache.calcite.rel.logical.LogicalUnion;
import org.apache.calcite.util.Util;
import java.util.List;
/**
- * Rule to convert an {@link org.apache.calcite.rel.logical.LogicalUnion} to an
- * {@link EnumerableUnion}.
+ * Rule to convert an {@link LogicalUnion} to an {@link EnumerableUnion}.
+ * You may provide a custom config to convert other nodes that extend {@link
Union}.
*
* @see EnumerableRules#ENUMERABLE_UNION_RULE
*/
@@ -44,7 +45,7 @@ class EnumerableUnionRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalUnion union = (LogicalUnion) rel;
+ final Union union = (Union) rel;
final EnumerableConvention out = EnumerableConvention.INSTANCE;
final RelTraitSet traitSet = rel.getCluster().traitSet().replace(out);
final List<RelNode> newInputs = Util.transform(
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java
index 605e922..9314b2e 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableValuesRule.java
@@ -19,12 +19,11 @@ package org.apache.calcite.adapter.enumerable;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Values;
import org.apache.calcite.rel.logical.LogicalValues;
-/** Planner rule that converts a
- * {@link org.apache.calcite.rel.logical.LogicalValues}
- * relational expression
- * {@link org.apache.calcite.adapter.enumerable.EnumerableConvention
enumerable calling convention}.
+/** Planner rule that converts a {@link LogicalValues} to an {@link
EnumerableValues}.
+ * You may provide a custom config to convert other nodes that extend {@link
Values}.
*
* @see EnumerableRules#ENUMERABLE_VALUES_RULE */
public class EnumerableValuesRule extends ConverterRule {
@@ -40,7 +39,7 @@ public class EnumerableValuesRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalValues logicalValues = (LogicalValues) rel;
+ final Values logicalValues = (Values) rel;
final EnumerableValues enumerableValues = EnumerableValues.create(
logicalValues.getCluster(), logicalValues.getRowType(),
logicalValues.getTuples());
return enumerableValues.copy(
diff --git
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindowRule.java
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindowRule.java
index 837a664..d23432a 100644
---
a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindowRule.java
+++
b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableWindowRule.java
@@ -20,11 +20,12 @@ import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.convert.ConverterRule;
+import org.apache.calcite.rel.core.Window;
import org.apache.calcite.rel.logical.LogicalWindow;
/**
- * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalWindow} to
- * an {@link org.apache.calcite.adapter.enumerable.EnumerableWindow}.
+ * Rule to convert a {@link LogicalWindow} to an {@link EnumerableWindow}.
+ * You may provide a custom config to convert other nodes that extend {@link
Window}.
*
* @see EnumerableRules#ENUMERABLE_WINDOW_RULE
*/
@@ -41,7 +42,7 @@ class EnumerableWindowRule extends ConverterRule {
}
@Override public RelNode convert(RelNode rel) {
- final LogicalWindow winAgg = (LogicalWindow) rel;
+ final Window winAgg = (Window) rel;
final RelTraitSet traitSet =
winAgg.getTraitSet().replace(EnumerableConvention.INSTANCE);
final RelNode child = winAgg.getInput();