This is an automated email from the ASF dual-hosted git repository. xiong pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 264636e803f6b971112d826e268e309e3ed1e513 Author: Stamatis Zampetakis <zabe...@gmail.com> AuthorDate: Wed Dec 8 17:29:10 2021 +0100 [CALCITE-4927] Remove deprecated RelBuilder#groupKey(ImmutableBitSet, ImmutableList) clashing with new replacement API Keeping the deprecated API creates ambiguity and requires everybody to upcast to Iterable if they want to use the new API. Removing it on the other hand does not seem to affect much backward compatibility (new API does not allow nulls) since callers will automatically use the new API with no changes required in their code. Close apache/calcite#2635 --- .../calcite/rel/logical/ToLogicalConverter.java | 4 +--- .../apache/calcite/rel/mutable/MutableRels.java | 4 +--- .../rel/rules/AggregateCaseToFilterRule.java | 4 +--- .../AggregateExpandDistinctAggregatesRule.java | 9 +++----- .../rules/AggregateExpandWithinDistinctRule.java | 7 ++---- .../rel/rules/AggregateJoinTransposeRule.java | 3 +-- .../rel/rules/AggregateReduceFunctionsRule.java | 4 +--- .../rel/rules/AggregateUnionTransposeRule.java | 4 +--- .../rel/rules/ProjectAggregateMergeRule.java | 3 +-- .../apache/calcite/sql2rel/RelFieldTrimmer.java | 4 +--- .../apache/calcite/sql2rel/SqlToRelConverter.java | 2 +- .../java/org/apache/calcite/tools/RelBuilder.java | 10 --------- .../calcite/rel/rel2sql/RelToSqlConverterTest.java | 26 +++++++++------------- .../org/apache/calcite/test/RelBuilderTest.java | 14 ++++-------- .../org/apache/calcite/piglet/PigRelOpVisitor.java | 3 +-- .../calcite/piglet/PigToSqlAggregateRule.java | 4 +--- 16 files changed, 30 insertions(+), 75 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/rel/logical/ToLogicalConverter.java b/core/src/main/java/org/apache/calcite/rel/logical/ToLogicalConverter.java index a7629d7..eaf8513 100644 --- a/core/src/main/java/org/apache/calcite/rel/logical/ToLogicalConverter.java +++ b/core/src/main/java/org/apache/calcite/rel/logical/ToLogicalConverter.java @@ -40,7 +40,6 @@ import org.apache.calcite.rel.core.Union; import org.apache.calcite.rel.core.Values; import org.apache.calcite.rel.core.Window; import org.apache.calcite.tools.RelBuilder; -import org.apache.calcite.util.ImmutableBitSet; import java.util.Collections; @@ -63,8 +62,7 @@ public class ToLogicalConverter extends RelShuttleImpl { final Aggregate agg = (Aggregate) relNode; return relBuilder.push(visit(agg.getInput())) .aggregate( - relBuilder.groupKey(agg.getGroupSet(), - (Iterable<ImmutableBitSet>) agg.groupSets), + relBuilder.groupKey(agg.getGroupSet(), agg.groupSets), agg.getAggCallList()) .build(); } diff --git a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java index 866cbf3..ee6f6c1 100644 --- a/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java +++ b/core/src/main/java/org/apache/calcite/rel/mutable/MutableRels.java @@ -54,7 +54,6 @@ import org.apache.calcite.rex.RexInputRef; import org.apache.calcite.rex.RexNode; import org.apache.calcite.rex.RexUtil; import org.apache.calcite.tools.RelBuilder; -import org.apache.calcite.util.ImmutableBitSet; import org.apache.calcite.util.Util; import org.apache.calcite.util.mapping.Mapping; import org.apache.calcite.util.mapping.MappingType; @@ -235,8 +234,7 @@ public abstract class MutableRels { final MutableAggregate aggregate = (MutableAggregate) node; relBuilder.push(fromMutable(aggregate.input, relBuilder)); relBuilder.aggregate( - relBuilder.groupKey(aggregate.groupSet, - (Iterable<ImmutableBitSet>) aggregate.groupSets), + relBuilder.groupKey(aggregate.groupSet, aggregate.groupSets), aggregate.aggCalls); return relBuilder.build(); case SORT: diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java index c2b20a1..e11e8c5 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateCaseToFilterRule.java @@ -35,7 +35,6 @@ import org.apache.calcite.sql.fun.SqlStdOperatorTable; import org.apache.calcite.sql.type.SqlTypeName; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.tools.RelBuilderFactory; -import org.apache.calcite.util.ImmutableBitSet; import com.google.common.collect.ImmutableList; @@ -142,8 +141,7 @@ public class AggregateCaseToFilterRule .project(newProjects); final RelBuilder.GroupKey groupKey = - relBuilder.groupKey(aggregate.getGroupSet(), - (Iterable<ImmutableBitSet>) aggregate.getGroupSets()); + relBuilder.groupKey(aggregate.getGroupSet(), aggregate.getGroupSets()); relBuilder.aggregate(groupKey, newCalls) .convert(aggregate.getRowType(), false); diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java index 38ae615..8190653 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java @@ -249,8 +249,7 @@ public final class AggregateExpandDistinctAggregatesRule int n = 0; if (!newAggCallList.isEmpty()) { final RelBuilder.GroupKey groupKey = - relBuilder.groupKey(groupSet, - (Iterable<ImmutableBitSet>) aggregate.getGroupSets()); + relBuilder.groupKey(groupSet, aggregate.getGroupSets()); relBuilder.aggregate(groupKey, newAggCallList); ++n; } @@ -478,8 +477,7 @@ public final class AggregateExpandDistinctAggregatesRule groupSets.size(), relBuilder.peek(), null, "$g")); relBuilder.aggregate( - relBuilder.groupKey(fullGroupSet, - (Iterable<ImmutableBitSet>) groupSets), + relBuilder.groupKey(fullGroupSet, groupSets), distinctAggCalls); // GROUPING returns an integer (0 or 1). Add a project to convert those @@ -537,8 +535,7 @@ public final class AggregateExpandDistinctAggregatesRule relBuilder.aggregate( relBuilder.groupKey( remap(fullGroupSet, groupSet), - (Iterable<ImmutableBitSet>) - remap(fullGroupSet, aggregate.getGroupSets())), + remap(fullGroupSet, aggregate.getGroupSets())), newCalls); relBuilder.convert(aggregate.getRowType(), true); call.transformTo(relBuilder.build()); diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java index 370f120..f6a8c2e 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandWithinDistinctRule.java @@ -366,9 +366,7 @@ public class AggregateExpandWithinDistinctRule SqlStdOperatorTable.GROUPING, b.fields(fullGroupList))) : -1; - b.aggregate( - b.groupKey(fullGroupSet, - (Iterable<ImmutableBitSet>) groupSets), aggCalls); + b.aggregate(b.groupKey(fullGroupSet, groupSets), aggCalls); // Build the outer query // @@ -449,8 +447,7 @@ public class AggregateExpandWithinDistinctRule b.aggregate( b.groupKey( remap(fullGroupSet, aggregate.getGroupSet()), - (Iterable<ImmutableBitSet>) - remap(fullGroupSet, aggregate.getGroupSets())), + remap(fullGroupSet, aggregate.getGroupSets())), aggCalls); b.convert(aggregate.getRowType(), false); call.transformTo(b.build()); diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java index c6697e8..509094d 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinTransposeRule.java @@ -376,8 +376,7 @@ public class AggregateJoinTransposeRule if (!aggConvertedToProjects) { relBuilder.aggregate( relBuilder.groupKey(Mappings.apply(mapping, aggregate.getGroupSet()), - (Iterable<ImmutableBitSet>) - Mappings.apply2(mapping, aggregate.getGroupSets())), + Mappings.apply2(mapping, aggregate.getGroupSets())), newAggCalls); } diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java index 70d0285..47dd5d1 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java @@ -34,7 +34,6 @@ import org.apache.calcite.sql.fun.SqlStdOperatorTable; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.tools.RelBuilderFactory; import org.apache.calcite.util.CompositeList; -import org.apache.calcite.util.ImmutableBitSet; import org.apache.calcite.util.ImmutableIntList; import org.apache.calcite.util.Util; @@ -812,8 +811,7 @@ public class AggregateReduceFunctionsRule Aggregate oldAggregate, List<AggregateCall> newCalls) { relBuilder.aggregate( - relBuilder.groupKey(oldAggregate.getGroupSet(), - (Iterable<ImmutableBitSet>) oldAggregate.getGroupSets()), + relBuilder.groupKey(oldAggregate.getGroupSet(), oldAggregate.getGroupSets()), newCalls); } diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java index 7d61d00..e67ef89 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateUnionTransposeRule.java @@ -39,7 +39,6 @@ import org.apache.calcite.sql.fun.SqlSumAggFunction; import org.apache.calcite.sql.fun.SqlSumEmptyIsZeroAggFunction; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.tools.RelBuilderFactory; -import org.apache.calcite.util.ImmutableBitSet; import com.google.common.collect.ImmutableList; @@ -158,8 +157,7 @@ public class AggregateUnionTransposeRule // create a new union whose children are the aggregates created above relBuilder.union(true, union.getInputs().size()); relBuilder.aggregate( - relBuilder.groupKey(aggRel.getGroupSet(), - (Iterable<ImmutableBitSet>) aggRel.getGroupSets()), + relBuilder.groupKey(aggRel.getGroupSet(), aggRel.getGroupSets()), transformedAggCalls); call.transformTo(relBuilder.build()); } diff --git a/core/src/main/java/org/apache/calcite/rel/rules/ProjectAggregateMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/ProjectAggregateMergeRule.java index 66b2a77..100b09b 100644 --- a/core/src/main/java/org/apache/calcite/rel/rules/ProjectAggregateMergeRule.java +++ b/core/src/main/java/org/apache/calcite/rel/rules/ProjectAggregateMergeRule.java @@ -152,8 +152,7 @@ public class ProjectAggregateMergeRule final RelBuilder builder = call.builder(); builder.push(aggregate.getInput()); builder.aggregate( - builder.groupKey(aggregate.getGroupSet(), - (Iterable<ImmutableBitSet>) aggregate.groupSets), aggCallList); + builder.groupKey(aggregate.getGroupSet(), aggregate.groupSets), aggCallList); builder.project( RexPermuteInputsShuttle.of(mapping).visitList(projects2)); call.transformTo(builder.build()); diff --git a/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java b/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java index fddd1f5..151ff57 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/RelFieldTrimmer.java @@ -1095,9 +1095,7 @@ public class RelFieldTrimmer implements ReflectiveVisitor { newAggCallList.add(relBuilder.count(false, "DUMMY")); } - final RelBuilder.GroupKey groupKey = - relBuilder.groupKey(newGroupSet, - (Iterable<ImmutableBitSet>) newGroupSets); + final RelBuilder.GroupKey groupKey = relBuilder.groupKey(newGroupSet, newGroupSets); relBuilder.aggregate(groupKey, newAggCallList); final RelNode newAggregate = RelOptUtil.propagateRelHints(aggregate, relBuilder.build()); diff --git a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java index 9265278..852e923 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java @@ -3355,7 +3355,7 @@ public class SqlToRelConverter { ImmutableList<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) { relBuilder.push(bb.root()); final RelBuilder.GroupKey groupKey = - relBuilder.groupKey(groupSet, (Iterable<ImmutableBitSet>) groupSets); + relBuilder.groupKey(groupSet, groupSets); return relBuilder.aggregate(groupKey, aggCalls) .build(); } diff --git a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java index df81877..3eb759d 100644 --- a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java +++ b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java @@ -1283,16 +1283,6 @@ public class RelBuilder { } // CHECKSTYLE: IGNORE 1 - /** @deprecated Use {@link #groupKey(ImmutableBitSet)} - * or {@link #groupKey(ImmutableBitSet, Iterable)}. */ - @Deprecated // to be removed before 2.0 - public GroupKey groupKey(ImmutableBitSet groupSet, - @Nullable ImmutableList<ImmutableBitSet> groupSets) { - return groupKey_(groupSet, groupSets == null - ? ImmutableList.of(groupSet) : ImmutableList.copyOf(groupSets)); - } - - // CHECKSTYLE: IGNORE 1 /** @deprecated Use {@link #groupKey(ImmutableBitSet, Iterable)}. */ @Deprecated // to be removed before 2.0 public GroupKey groupKey(ImmutableBitSet groupSet, boolean indicator, diff --git a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java index 5a88068..89f48a6 100644 --- a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java +++ b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java @@ -455,8 +455,7 @@ class RelToSqlConverterTest { .scan("EMP") .aggregate( b.groupKey(ImmutableBitSet.of(0, 1, 2), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), + ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), b.count(false, "C"), b.sum(false, "S", b.field("SAL"))) .filter(b.equals(b.field("JOB"), b.literal("DEVELOP"))) @@ -480,8 +479,7 @@ class RelToSqlConverterTest { .scan("EMP") .aggregate( b.groupKey(ImmutableBitSet.of(0, 1, 2), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), + ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), b.count(false, "C"), b.sum(false, "S", b.field("SAL"))) .filter( @@ -512,9 +510,9 @@ class RelToSqlConverterTest { .scan("EMP") .aggregate( b.groupKey(ImmutableBitSet.of(0, 1, 2), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(0, 1), - ImmutableBitSet.of(0), ImmutableBitSet.of())), + ImmutableList.of(ImmutableBitSet.of(0, 1), + ImmutableBitSet.of(0), + ImmutableBitSet.of())), b.count(false, "C"), b.sum(false, "S", b.field("SAL"))) .filter( @@ -545,9 +543,7 @@ class RelToSqlConverterTest { .scan("EMP") .aggregate( b.groupKey(ImmutableBitSet.of(0, 1, 2), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(0, 1), - ImmutableBitSet.of(0))), + ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), b.count(false, "C"), b.sum(false, "S", b.field("SAL"))) .project(b.field("JOB")) @@ -567,9 +563,7 @@ class RelToSqlConverterTest { .scan("EMP") .aggregate( b.groupKey(ImmutableBitSet.of(0, 1, 2), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(0, 1), - ImmutableBitSet.of(0))), + ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), b.count(false, "C"), b.sum(false, "S", b.field("SAL"))) .sort(b.field("C")) @@ -590,9 +584,9 @@ class RelToSqlConverterTest { .scan("EMP") .aggregate( b.groupKey(ImmutableBitSet.of(0, 1, 2), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(0, 1), - ImmutableBitSet.of(0), ImmutableBitSet.of())), + ImmutableList.of(ImmutableBitSet.of(0, 1), + ImmutableBitSet.of(0), + ImmutableBitSet.of())), b.count(false, "C"), b.sum(false, "S", b.field("SAL"))) .filter( diff --git a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java index c210874..2edf701 100644 --- a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java +++ b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java @@ -1437,9 +1437,7 @@ public class RelBuilderTest { builder.scan("EMP") .aggregate( builder.groupKey(ImmutableBitSet.of(7), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(7), - ImmutableBitSet.of())), + ImmutableList.of(ImmutableBitSet.of(7), ImmutableBitSet.of())), builder.count() .filter( builder.greaterThan(builder.field("EMPNO"), @@ -1669,9 +1667,7 @@ public class RelBuilderTest { builder.scan("EMP") .aggregate( builder.groupKey(ImmutableBitSet.of(7), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(4), - ImmutableBitSet.of()))) + ImmutableList.of(ImmutableBitSet.of(4), ImmutableBitSet.of()))) .build(); fail("expected error, got " + root); } catch (IllegalArgumentException e) { @@ -1689,8 +1685,7 @@ public class RelBuilderTest { builder.scan("EMP") .aggregate( builder.groupKey(ImmutableBitSet.of(7, 6), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(7), + ImmutableList.of(ImmutableBitSet.of(7), ImmutableBitSet.of(6), ImmutableBitSet.of(7)))) .build(); @@ -1712,8 +1707,7 @@ public class RelBuilderTest { .aggregate( builder.groupKey( ImmutableBitSet.of(0, 1, 2), - (Iterable<ImmutableBitSet>) - ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), + ImmutableList.of(ImmutableBitSet.of(0, 1), ImmutableBitSet.of(0))), builder.count(false, "C"), builder.sum(false, "S", builder.field("SAL"))) .filter( diff --git a/piglet/src/main/java/org/apache/calcite/piglet/PigRelOpVisitor.java b/piglet/src/main/java/org/apache/calcite/piglet/PigRelOpVisitor.java index 350119d..3b31977 100644 --- a/piglet/src/main/java/org/apache/calcite/piglet/PigRelOpVisitor.java +++ b/piglet/src/main/java/org/apache/calcite/piglet/PigRelOpVisitor.java @@ -309,8 +309,7 @@ class PigRelOpVisitor extends PigRelOpWalker.PlanPreVisitor { final ImmutableList<ImmutableBitSet> groupSets = (groupType == GroupType.CUBE) ? ImmutableList.copyOf(groupSet.powerSet()) : groupsetBuilder.build(); - RelBuilder.GroupKey groupKey = builder.groupKey(groupSet, - (Iterable<ImmutableBitSet>) groupSets); + RelBuilder.GroupKey groupKey = builder.groupKey(groupSet, groupSets); // Finally, do COLLECT aggregate. builder.cogroup(ImmutableList.of(groupKey)); diff --git a/piglet/src/main/java/org/apache/calcite/piglet/PigToSqlAggregateRule.java b/piglet/src/main/java/org/apache/calcite/piglet/PigToSqlAggregateRule.java index fae1539..1f7d9ba 100644 --- a/piglet/src/main/java/org/apache/calcite/piglet/PigToSqlAggregateRule.java +++ b/piglet/src/main/java/org/apache/calcite/piglet/PigToSqlAggregateRule.java @@ -34,7 +34,6 @@ import org.apache.calcite.sql.SqlAggFunction; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.sql.fun.SqlStdOperatorTable; import org.apache.calcite.tools.RelBuilder; -import org.apache.calcite.util.ImmutableBitSet; import org.immutables.value.Value; @@ -258,8 +257,7 @@ public class PigToSqlAggregateRule // Step 2 build new Aggregate // Copy the group key final RelBuilder.GroupKey groupKey = - relBuilder.groupKey(oldAgg.getGroupSet(), - (Iterable<ImmutableBitSet>) oldAgg.groupSets); + relBuilder.groupKey(oldAgg.getGroupSet(), oldAgg.groupSets); // The construct the agg call list final List<RelBuilder.AggCall> aggCalls = new ArrayList<>(); if (needGroupingCol) {