Skip to content

Commit 97a1d80

Browse files
committed
[CALCITE-7280] Introduce RelNode.copy, which can copy variables set
1 parent 253ed46 commit 97a1d80

File tree

39 files changed

+259
-66
lines changed

39 files changed

+259
-66
lines changed

arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowFilter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@
2121
import org.apache.calcite.plan.RelOptPlanner;
2222
import org.apache.calcite.plan.RelTraitSet;
2323
import org.apache.calcite.rel.RelNode;
24+
import org.apache.calcite.rel.core.CorrelationId;
2425
import org.apache.calcite.rel.core.Filter;
2526
import org.apache.calcite.rel.metadata.RelMetadataQuery;
2627
import org.apache.calcite.rex.RexNode;
2728

2829
import java.util.List;
30+
import java.util.Set;
31+
32+
import static com.google.common.base.Preconditions.checkArgument;
2933

3034
import static java.util.Objects.requireNonNull;
3135

@@ -51,7 +55,9 @@ class ArrowFilter extends Filter implements ArrowRel {
5155
return requireNonNull(cost, "cost").multiplyBy(0.1);
5256
}
5357

54-
@Override public ArrowFilter copy(RelTraitSet traitSet, RelNode input, RexNode condition) {
58+
@Override public ArrowFilter copy(RelTraitSet traitSet, RelNode input, RexNode condition,
59+
Set<CorrelationId> variablesSet) {
60+
checkArgument(variablesSet.isEmpty());
5561
return new ArrowFilter(getCluster(), traitSet, input, condition);
5662
}
5763

arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowProject.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.calcite.plan.RelOptPlanner;
2222
import org.apache.calcite.plan.RelTraitSet;
2323
import org.apache.calcite.rel.RelNode;
24+
import org.apache.calcite.rel.core.CorrelationId;
2425
import org.apache.calcite.rel.core.Project;
2526
import org.apache.calcite.rel.metadata.RelMetadataQuery;
2627
import org.apache.calcite.rel.type.RelDataType;
@@ -34,6 +35,9 @@
3435

3536
import java.util.ArrayList;
3637
import java.util.List;
38+
import java.util.Set;
39+
40+
import static com.google.common.base.Preconditions.checkArgument;
3741

3842
import static java.util.Objects.requireNonNull;
3943

@@ -52,7 +56,8 @@ class ArrowProject extends Project implements ArrowRel {
5256
}
5357

5458
@Override public Project copy(RelTraitSet traitSet, RelNode input,
55-
List<RexNode> projects, RelDataType rowType) {
59+
List<RexNode> projects, RelDataType rowType, Set<CorrelationId> variablesSet) {
60+
checkArgument(variablesSet.isEmpty());
5661
return new ArrowProject(getCluster(), traitSet, input, projects,
5762
rowType);
5863
}

cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraFilter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.calcite.rel.RelCollations;
2626
import org.apache.calcite.rel.RelFieldCollation;
2727
import org.apache.calcite.rel.RelNode;
28+
import org.apache.calcite.rel.core.CorrelationId;
2829
import org.apache.calcite.rel.core.Filter;
2930
import org.apache.calcite.rel.metadata.RelMetadataQuery;
3031
import org.apache.calcite.rel.type.RelDataType;
@@ -48,6 +49,8 @@
4849
import java.util.List;
4950
import java.util.Set;
5051

52+
import static com.google.common.base.Preconditions.checkArgument;
53+
5154
import static org.apache.calcite.util.DateTimeStringUtils.ISO_DATETIME_FRACTIONAL_SECOND_FORMAT;
5255
import static org.apache.calcite.util.DateTimeStringUtils.getDateFormatter;
5356

@@ -98,7 +101,8 @@ public CassandraFilter(
98101
}
99102

100103
@Override public CassandraFilter copy(RelTraitSet traitSet, RelNode input,
101-
RexNode condition) {
104+
RexNode condition, Set<CorrelationId> variablesSet) {
105+
checkArgument(variablesSet.isEmpty());
102106
return new CassandraFilter(getCluster(), traitSet, input, condition,
103107
partitionKeys, clusteringKeys, implicitFieldCollations);
104108
}

cassandra/src/main/java/org/apache/calcite/adapter/cassandra/CassandraProject.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.calcite.plan.RelOptPlanner;
2222
import org.apache.calcite.plan.RelTraitSet;
2323
import org.apache.calcite.rel.RelNode;
24+
import org.apache.calcite.rel.core.CorrelationId;
2425
import org.apache.calcite.rel.core.Project;
2526
import org.apache.calcite.rel.metadata.RelMetadataQuery;
2627
import org.apache.calcite.rel.type.RelDataType;
@@ -35,6 +36,9 @@
3536
import java.util.LinkedHashMap;
3637
import java.util.List;
3738
import java.util.Map;
39+
import java.util.Set;
40+
41+
import static com.google.common.base.Preconditions.checkArgument;
3842

3943
import static java.util.Objects.requireNonNull;
4044

@@ -51,7 +55,8 @@ public CassandraProject(RelOptCluster cluster, RelTraitSet traitSet,
5155
}
5256

5357
@Override public Project copy(RelTraitSet traitSet, RelNode input,
54-
List<RexNode> projects, RelDataType rowType) {
58+
List<RexNode> projects, RelDataType rowType, Set<CorrelationId> variablesSet) {
59+
checkArgument(variablesSet.isEmpty());
5560
return new CassandraProject(getCluster(), traitSet, input, projects,
5661
rowType);
5762
}

core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAsofJoin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ public static EnumerableAsofJoin create(
9696
}
9797

9898
@Override public EnumerableAsofJoin copy(RelTraitSet traitSet, RexNode condition,
99-
RelNode left, RelNode right, JoinRelType joinType,
100-
boolean semiJoinDone) {
99+
RelNode left, RelNode right, Set<CorrelationId> variablesSet, JoinRelType joinType,
100+
boolean semiJoinDone) {
101101
// This method does not know about the matchCondition, so it should not be called
102102
throw new RuntimeException("This method should not be called");
103103
}

core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableBatchNestedLoopJoin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ public static EnumerableBatchNestedLoopJoin create(
113113
}
114114

115115
@Override public EnumerableBatchNestedLoopJoin copy(RelTraitSet traitSet,
116-
RexNode condition, RelNode left, RelNode right, JoinRelType joinType,
117-
boolean semiJoinDone) {
116+
RexNode condition, RelNode left, RelNode right, Set<CorrelationId> variablesSet,
117+
JoinRelType joinType, boolean semiJoinDone) {
118118
return new EnumerableBatchNestedLoopJoin(getCluster(), traitSet,
119119
left, right, condition, variablesSet, requiredColumns, joinType);
120120
}

core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableFilter.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.calcite.rel.RelCollations;
2424
import org.apache.calcite.rel.RelDistributionTraitDef;
2525
import org.apache.calcite.rel.RelNode;
26+
import org.apache.calcite.rel.core.CorrelationId;
2627
import org.apache.calcite.rel.core.Filter;
2728
import org.apache.calcite.rel.metadata.RelMdCollation;
2829
import org.apache.calcite.rel.metadata.RelMdDistribution;
@@ -35,6 +36,9 @@
3536
import org.checkerframework.checker.nullness.qual.Nullable;
3637

3738
import java.util.List;
39+
import java.util.Set;
40+
41+
import static com.google.common.base.Preconditions.checkArgument;
3842

3943
/** Implementation of {@link org.apache.calcite.rel.core.Filter} in
4044
* {@link org.apache.calcite.adapter.enumerable.EnumerableConvention enumerable calling convention}. */
@@ -69,7 +73,8 @@ public static EnumerableFilter create(final RelNode input,
6973
}
7074

7175
@Override public EnumerableFilter copy(RelTraitSet traitSet, RelNode input,
72-
RexNode condition) {
76+
RexNode condition, Set<CorrelationId> variablesSet) {
77+
checkArgument(variablesSet.isEmpty());
7378
return new EnumerableFilter(getCluster(), traitSet, input, condition);
7479
}
7580

core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableHashJoin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ public static EnumerableHashJoin create(
9898
variablesSet, joinType);
9999
}
100100

101-
@Override public EnumerableHashJoin copy(RelTraitSet traitSet, RexNode condition,
102-
RelNode left, RelNode right, JoinRelType joinType,
103-
boolean semiJoinDone) {
101+
@Override public EnumerableHashJoin copy(RelTraitSet traitSet,
102+
RexNode condition, RelNode left, RelNode right, Set<CorrelationId> variablesSet,
103+
JoinRelType joinType, boolean semiJoinDone) {
104104
return new EnumerableHashJoin(getCluster(), traitSet, left, right,
105105
condition, variablesSet, joinType);
106106
}

core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableMergeJoin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,8 +416,8 @@ public static EnumerableMergeJoin create(RelNode left, RelNode right,
416416
}
417417

418418
@Override public EnumerableMergeJoin copy(RelTraitSet traitSet,
419-
RexNode condition, RelNode left, RelNode right, JoinRelType joinType,
420-
boolean semiJoinDone) {
419+
RexNode condition, RelNode left, RelNode right, Set<CorrelationId> variablesSet,
420+
JoinRelType joinType, boolean semiJoinDone) {
421421
return new EnumerableMergeJoin(getCluster(), traitSet, left, right,
422422
condition, variablesSet, joinType);
423423
}

core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableNestedLoopJoin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ protected EnumerableNestedLoopJoin(RelOptCluster cluster, RelTraitSet traits,
6464
}
6565

6666
@Override public EnumerableNestedLoopJoin copy(RelTraitSet traitSet,
67-
RexNode condition, RelNode left, RelNode right, JoinRelType joinType,
68-
boolean semiJoinDone) {
67+
RexNode condition, RelNode left, RelNode right, Set<CorrelationId> variablesSet,
68+
JoinRelType joinType, boolean semiJoinDone) {
6969
return new EnumerableNestedLoopJoin(getCluster(), traitSet, left, right,
7070
condition, variablesSet, joinType);
7171
}

0 commit comments

Comments
 (0)