You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2019/06/01 23:28:46 UTC
[calcite] branch master updated: Following [CALCITE-2944] remove
internal uses of Aggregate.indicator
This is an automated email from the ASF dual-hosted git repository.
jhyde 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 b0e83c4 Following [CALCITE-2944] remove internal uses of Aggregate.indicator
b0e83c4 is described below
commit b0e83c469ff57257c1ea621ff943ca76f626a9b7
Author: Julian Hyde <jh...@apache.org>
AuthorDate: Fri May 31 20:36:14 2019 -0700
Following [CALCITE-2944] remove internal uses of Aggregate.indicator
These were generating deprecation warnings.
---
.../adapter/enumerable/EnumerableAggregate.java | 21 ++++++----
.../enumerable/EnumerableAggregateRule.java | 1 -
.../adapter/enumerable/EnumerableRules.java | 5 ++-
.../adapter/enumerable/EnumerableSemiJoin.java | 3 +-
.../org/apache/calcite/adapter/jdbc/JdbcRules.java | 19 ++++++---
.../org/apache/calcite/interpreter/Bindables.java | 16 +++++---
.../org/apache/calcite/rel/core/Aggregate.java | 43 +++++++++++++-------
.../org/apache/calcite/rel/core/RelFactories.java | 17 +++++---
.../calcite/rel/logical/LogicalAggregate.java | 47 +++++++++++-----------
.../org/apache/calcite/rel/metadata/RelMdUtil.java | 3 +-
.../rel/rules/AbstractMaterializedViewRule.java | 2 +-
.../AggregateExpandDistinctAggregatesRule.java | 15 +++----
.../rel/rules/AggregateFilterTransposeRule.java | 5 +--
.../calcite/rel/rules/AggregateJoinRemoveRule.java | 7 ++--
.../calcite/rel/rules/AggregateMergeRule.java | 3 +-
.../rel/rules/AggregateProjectMergeRule.java | 3 +-
.../calcite/rel/rules/AggregateStarTableRule.java | 2 +-
.../rel/rules/AggregateUnionTransposeRule.java | 2 +-
.../java/org/apache/calcite/tools/RelBuilder.java | 44 ++++++++------------
.../calcite/plan/volcano/TraitPropagationTest.java | 17 ++++----
.../apache/calcite/adapter/druid/DruidQuery.java | 3 +-
.../apache/calcite/adapter/druid/DruidRules.java | 9 ++---
.../elasticsearch/ElasticsearchAggregate.java | 21 +++++++---
.../adapter/elasticsearch/ElasticsearchRules.java | 1 -
.../calcite/adapter/geode/rel/GeodeAggregate.java | 21 +++++++---
.../calcite/adapter/geode/rel/GeodeRules.java | 1 -
.../calcite/adapter/mongodb/MongoAggregate.java | 22 ++++++----
.../apache/calcite/adapter/mongodb/MongoRules.java | 1 -
.../apache/calcite/adapter/pig/PigAggregate.java | 24 +++++++----
.../calcite/adapter/pig/PigRelFactories.java | 6 +--
.../org/apache/calcite/adapter/pig/PigRules.java | 2 +-
31 files changed, 215 insertions(+), 171 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java
index 8605409..31b2b56 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableAggregate.java
@@ -47,7 +47,6 @@ import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Pair;
import org.apache.calcite.util.Util;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.lang.reflect.Type;
@@ -62,15 +61,12 @@ public class EnumerableAggregate extends Aggregate implements EnumerableRel {
public EnumerableAggregate(
RelOptCluster cluster,
RelTraitSet traitSet,
- RelNode child,
- boolean indicator,
+ RelNode input,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls)
throws InvalidRelException {
- super(cluster, traitSet, child, groupSet, groupSets, aggCalls);
- Preconditions.checkArgument(!indicator,
- "EnumerableAggregate no longer supports indicator fields");
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
assert getConvention() instanceof EnumerableConvention;
for (AggregateCall aggCall : aggCalls) {
@@ -87,11 +83,20 @@ public class EnumerableAggregate extends Aggregate implements EnumerableRel {
}
}
+ @Deprecated // to be removed before 2.0
+ public EnumerableAggregate(RelOptCluster cluster, RelTraitSet traitSet,
+ RelNode input, boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls)
+ throws InvalidRelException {
+ this(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ }
+
@Override public EnumerableAggregate copy(RelTraitSet traitSet, RelNode input,
- boolean indicator, ImmutableBitSet groupSet,
+ ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
try {
- return new EnumerableAggregate(getCluster(), traitSet, input, indicator,
+ return new EnumerableAggregate(getCluster(), traitSet, input,
groupSet, groupSets, aggCalls);
} catch (InvalidRelException e) {
// Semantic error not possible. Must be a bug. Convert to
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 b640314..1eeeeaa 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
@@ -42,7 +42,6 @@ class EnumerableAggregateRule extends ConverterRule {
rel.getCluster(),
traitSet,
convert(agg.getInput(), EnumerableConvention.INSTANCE),
- false,
agg.getGroupSet(),
agg.getGroupSets(),
agg.getAggCallList());
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java
index 19d30bf..f3ca806 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableRules.java
@@ -44,8 +44,9 @@ public class EnumerableRules {
public static final RelOptRule ENUMERABLE_MERGE_JOIN_RULE =
new EnumerableMergeJoinRule();
- /** @deprecated To be removed along with {@link SemiJoin};
- * use {@link #ENUMERABLE_JOIN_RULE} */
+ /** @deprecated To be removed along with
+ * {@link org.apache.calcite.rel.core.SemiJoin};
+ * use {@link #ENUMERABLE_JOIN_RULE} instead. */
@Deprecated // to be removed before 1.21
public static final RelOptRule ENUMERABLE_SEMI_JOIN_RULE =
new EnumerableSemiJoinRule();
diff --git a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java
index cde97b6..bf13091 100644
--- a/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java
+++ b/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableSemiJoin.java
@@ -38,7 +38,8 @@ import org.apache.calcite.util.Util;
/** Implementation of {@link org.apache.calcite.rel.core.SemiJoin} in
* {@link org.apache.calcite.adapter.enumerable.EnumerableConvention enumerable calling convention}.
*
- * @deprecated This class is deprecated along with {@link SemiJoin};
+ * @deprecated This class is deprecated along with
+ * {@link org.apache.calcite.rel.core.SemiJoin};
* the function is merged into {@link EnumerableHashJoin};
* see {@link EnumerableJoinRule} for details.
*/
diff --git a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
index 85575ba..abfbeec 100644
--- a/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
+++ b/core/src/main/java/org/apache/calcite/adapter/jdbc/JdbcRules.java
@@ -141,11 +141,11 @@ public class JdbcRules {
};
public static final RelFactories.AggregateFactory AGGREGATE_FACTORY =
- (input, indicator, groupSet, groupSets, aggCalls) -> {
+ (input, groupSet, groupSets, aggCalls) -> {
final RelOptCluster cluster = input.getCluster();
final RelTraitSet traitSet = cluster.traitSetOf(input.getConvention());
try {
- return new JdbcAggregate(cluster, traitSet, input, false, groupSet,
+ return new JdbcAggregate(cluster, traitSet, input, groupSet,
groupSets, aggCalls);
} catch (InvalidRelException e) {
throw new AssertionError(e);
@@ -683,7 +683,6 @@ public class JdbcRules {
RelOptCluster cluster,
RelTraitSet traitSet,
RelNode input,
- boolean indicator,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls)
@@ -691,7 +690,6 @@ public class JdbcRules {
super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
assert getConvention() instanceof JdbcConvention;
assert this.groupSets.size() == 1 : "Grouping sets not supported";
- assert !indicator;
final SqlDialect dialect = ((JdbcConvention) getConvention()).dialect;
for (AggregateCall aggCall : aggCalls) {
if (!canImplement(aggCall.getAggregation(), dialect)) {
@@ -701,11 +699,20 @@ public class JdbcRules {
}
}
+ @Deprecated // to be removed before 2.0
+ public JdbcAggregate(RelOptCluster cluster, RelTraitSet traitSet,
+ RelNode input, boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls)
+ throws InvalidRelException {
+ this(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ }
+
@Override public JdbcAggregate copy(RelTraitSet traitSet, RelNode input,
- boolean indicator, ImmutableBitSet groupSet,
+ ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
try {
- return new JdbcAggregate(getCluster(), traitSet, input, indicator,
+ return new JdbcAggregate(getCluster(), traitSet, input,
groupSet, groupSets, aggCalls);
} catch (InvalidRelException e) {
// Semantic error not possible. Must be a bug. Convert to
diff --git a/core/src/main/java/org/apache/calcite/interpreter/Bindables.java b/core/src/main/java/org/apache/calcite/interpreter/Bindables.java
index 3541bfa..e481de0 100644
--- a/core/src/main/java/org/apache/calcite/interpreter/Bindables.java
+++ b/core/src/main/java/org/apache/calcite/interpreter/Bindables.java
@@ -612,7 +612,6 @@ public class Bindables {
RelOptCluster cluster,
RelTraitSet traitSet,
RelNode input,
- boolean indicator,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls)
@@ -620,8 +619,6 @@ public class Bindables {
super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
assert getConvention() instanceof BindableConvention;
- Preconditions.checkArgument(!indicator,
- "indicator is not supported, use GROUPING function instead");
for (AggregateCall aggCall : aggCalls) {
if (aggCall.isDistinct()) {
throw new InvalidRelException(
@@ -636,11 +633,20 @@ public class Bindables {
}
}
+ @Deprecated // to be removed before 2.0
+ public BindableAggregate(RelOptCluster cluster, RelTraitSet traitSet,
+ RelNode input, boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls)
+ throws InvalidRelException {
+ this(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ }
+
@Override public BindableAggregate copy(RelTraitSet traitSet, RelNode input,
- boolean indicator, ImmutableBitSet groupSet,
+ ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
try {
- return new BindableAggregate(getCluster(), traitSet, input, indicator,
+ return new BindableAggregate(getCluster(), traitSet, input,
groupSet, groupSets, aggCalls);
} catch (InvalidRelException e) {
// Semantic error not possible. Must be a bug. Convert to
diff --git a/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java b/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java
index 55eafd1..79c75ee 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java
@@ -17,6 +17,7 @@
package org.apache.calcite.rel.core;
import org.apache.calcite.linq4j.Ord;
+import org.apache.calcite.linq4j.function.Experimental;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptCost;
import org.apache.calcite.plan.RelOptPlanner;
@@ -90,6 +91,14 @@ public abstract class Aggregate extends SingleRel {
public static final com.google.common.base.Predicate<Aggregate>
IS_NOT_GRAND_TOTAL = Aggregate::isNotGrandTotal;
+ /** Used internally; will removed when {@link #indicator} is removed,
+ * before 2.0. */
+ @Experimental
+ public static void checkIndicator(boolean indicator) {
+ Preconditions.checkArgument(!indicator,
+ "indicator is no longer supported; use GROUPING function instead");
+ }
+
//~ Instance fields --------------------------------------------------------
@Deprecated // unused field, to be removed before 2.0
@@ -120,20 +129,20 @@ public abstract class Aggregate extends SingleRel {
* {@code (0, 1, 2), (1), (0, 2), (0), ()}.
*
* @param cluster Cluster
- * @param traits Traits
- * @param child Child
+ * @param traitSet Trait set
+ * @param input Input relational expression
* @param groupSet Bit set of grouping fields
* @param groupSets List of all grouping sets; null for just {@code groupSet}
* @param aggCalls Collection of calls to aggregate functions
*/
protected Aggregate(
RelOptCluster cluster,
- RelTraitSet traits,
- RelNode child,
+ RelTraitSet traitSet,
+ RelNode input,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- super(cluster, traits, child);
+ super(cluster, traitSet, input);
this.aggCalls = ImmutableList.copyOf(aggCalls);
this.groupSet = Objects.requireNonNull(groupSet);
if (groupSets == null) {
@@ -145,11 +154,11 @@ public abstract class Aggregate extends SingleRel {
assert groupSet.contains(set);
}
}
- assert groupSet.length() <= child.getRowType().getFieldCount();
+ assert groupSet.length() <= input.getRowType().getFieldCount();
for (AggregateCall aggCall : aggCalls) {
assert typeMatchesInferred(aggCall, Litmus.THROW);
Preconditions.checkArgument(aggCall.filterArg < 0
- || isPredicate(child, aggCall.filterArg),
+ || isPredicate(input, aggCall.filterArg),
"filter must be BOOLEAN NOT NULL");
}
}
@@ -167,8 +176,7 @@ public abstract class Aggregate extends SingleRel {
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
this(cluster, traits, child, groupSet, groupSets, aggCalls);
- Preconditions.checkArgument(!indicator,
- "indicator is not supported, use GROUPING function instead");
+ checkIndicator(indicator);
}
public static boolean isNotGrandTotal(Aggregate aggregate) {
@@ -200,15 +208,13 @@ public abstract class Aggregate extends SingleRel {
@Override public final RelNode copy(RelTraitSet traitSet,
List<RelNode> inputs) {
- return copy(traitSet, sole(inputs), false, groupSet, groupSets,
- aggCalls);
+ return copy(traitSet, sole(inputs), groupSet, groupSets, aggCalls);
}
/** Creates a copy of this aggregate.
*
* @param traitSet Traits
* @param input Input
- * @param indicator Deprecated, always false
* @param groupSet Bit set of grouping fields
* @param groupSets List of all grouping sets; null for just {@code groupSet}
* @param aggCalls Collection of calls to aggregate functions
@@ -219,9 +225,17 @@ public abstract class Aggregate extends SingleRel {
* @see #copy(org.apache.calcite.plan.RelTraitSet, java.util.List)
*/
public abstract Aggregate copy(RelTraitSet traitSet, RelNode input,
- boolean indicator, ImmutableBitSet groupSet,
+ ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls);
+ @Deprecated // to be removed before 2.0
+ public Aggregate copy(RelTraitSet traitSet, RelNode input,
+ boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
+ checkIndicator(indicator);
+ return copy(traitSet, input, groupSet, groupSets, aggCalls);
+ }
+
/**
* Returns a list of calls to aggregate functions.
*
@@ -367,8 +381,7 @@ public abstract class Aggregate extends SingleRel {
builder.nullable(true);
}
}
- Preconditions.checkArgument(!indicator,
- "indicator is not supported, use GROUPING function instead");
+ checkIndicator(indicator);
for (Ord<AggregateCall> aggCall : Ord.zip(aggCalls)) {
final String base;
if (aggCall.e.name != null) {
diff --git a/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java b/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java
index 617e66b..ac8944f 100644
--- a/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java
+++ b/core/src/main/java/org/apache/calcite/rel/core/RelFactories.java
@@ -271,9 +271,16 @@ public class RelFactories {
*/
public interface AggregateFactory {
/** Creates an aggregate. */
- RelNode createAggregate(RelNode input, boolean indicator,
+ RelNode createAggregate(RelNode input, ImmutableBitSet groupSet,
+ ImmutableList<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls);
+
+ @Deprecated // to be removed before 2.0
+ default RelNode createAggregate(RelNode input, boolean indicator,
ImmutableBitSet groupSet, ImmutableList<ImmutableBitSet> groupSets,
- List<AggregateCall> aggCalls);
+ List<AggregateCall> aggCalls) {
+ Aggregate.checkIndicator(indicator);
+ return createAggregate(input, groupSet, groupSets, aggCalls);
+ }
}
/**
@@ -281,12 +288,10 @@ public class RelFactories {
* that returns a vanilla {@link LogicalAggregate}.
*/
private static class AggregateFactoryImpl implements AggregateFactory {
- @SuppressWarnings("deprecation")
- public RelNode createAggregate(RelNode input, boolean indicator,
+ public RelNode createAggregate(RelNode input,
ImmutableBitSet groupSet, ImmutableList<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- return LogicalAggregate.create(input, indicator,
- groupSet, groupSets, aggCalls);
+ return LogicalAggregate.create(input, groupSet, groupSets, aggCalls);
}
}
diff --git a/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java b/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java
index 3ddcbe1..8b10baf 100644
--- a/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java
+++ b/core/src/main/java/org/apache/calcite/rel/logical/LogicalAggregate.java
@@ -26,8 +26,6 @@ import org.apache.calcite.rel.core.Aggregate;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.util.ImmutableBitSet;
-import com.google.common.base.Preconditions;
-
import java.util.List;
/**
@@ -52,8 +50,7 @@ public final class LogicalAggregate extends Aggregate {
*
* @param cluster Cluster that this relational expression belongs to
* @param traitSet Traits
- * @param child input relational expression
- * @param indicator Unused field, alway false
+ * @param input Input relational expression
* @param groupSet Bit set of grouping fields
* @param groupSets Grouping sets, or null to use just {@code groupSet}
* @param aggCalls Array of aggregates to compute, not null
@@ -61,26 +58,28 @@ public final class LogicalAggregate extends Aggregate {
public LogicalAggregate(
RelOptCluster cluster,
RelTraitSet traitSet,
- RelNode child,
- boolean indicator,
+ RelNode input,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- super(cluster, traitSet, child, groupSet, groupSets, aggCalls);
- Preconditions.checkArgument(!indicator,
- "indicator is not supported, use GROUPING function instead");
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
}
@Deprecated // to be removed before 2.0
- public LogicalAggregate(
- RelOptCluster cluster,
- RelNode child,
- boolean indicator,
- ImmutableBitSet groupSet,
- List<ImmutableBitSet> groupSets,
- List<AggregateCall> aggCalls) {
- this(cluster, cluster.traitSetOf(Convention.NONE), child, indicator,
- groupSet, groupSets, aggCalls);
+ public LogicalAggregate(RelOptCluster cluster, RelTraitSet traitSet,
+ RelNode input, boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ }
+
+ @Deprecated // to be removed before 2.0
+ public LogicalAggregate(RelOptCluster cluster,
+ RelNode input, boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
+ super(cluster, cluster.traitSetOf(Convention.NONE), input, groupSet,
+ groupSets, aggCalls);
+ checkIndicator(indicator);
}
/**
@@ -94,7 +93,7 @@ public final class LogicalAggregate extends Aggregate {
public static LogicalAggregate create(final RelNode input,
ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- return create_(input, false, groupSet, groupSets, aggCalls);
+ return create_(input, groupSet, groupSets, aggCalls);
}
@Deprecated // to be removed before 2.0
@@ -103,27 +102,27 @@ public final class LogicalAggregate extends Aggregate {
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- return create_(input, indicator, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ return create_(input, groupSet, groupSets, aggCalls);
}
private static LogicalAggregate create_(final RelNode input,
- boolean indicator,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
final RelOptCluster cluster = input.getCluster();
final RelTraitSet traitSet = cluster.traitSetOf(Convention.NONE);
- return new LogicalAggregate(cluster, traitSet, input, indicator, groupSet,
+ return new LogicalAggregate(cluster, traitSet, input, groupSet,
groupSets, aggCalls);
}
//~ Methods ----------------------------------------------------------------
@Override public LogicalAggregate copy(RelTraitSet traitSet, RelNode input,
- boolean indicator, ImmutableBitSet groupSet,
+ ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
assert traitSet.containsIfApplicable(Convention.NONE);
- return new LogicalAggregate(getCluster(), traitSet, input, indicator,
+ return new LogicalAggregate(getCluster(), traitSet, input,
groupSet, groupSets, aggCalls);
}
diff --git a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
index 52ab057..e64bf4f 100644
--- a/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
+++ b/core/src/main/java/org/apache/calcite/rel/metadata/RelMdUtil.java
@@ -738,8 +738,7 @@ public class RelMdUtil {
return product * mq.getSelectivity(join, condition);
}
- /** Returns an estimate of the number of rows returned by a
- * {@link SemiJoin}. */
+ /** Returns an estimate of the number of rows returned by a semi-join. */
public static Double getSemiJoinRowCount(RelMetadataQuery mq, RelNode left,
RelNode right, JoinRelType joinType, RexNode condition) {
final Double leftCount = mq.getRowCount(left);
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
index 60f3f7b..06f33cc 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AbstractMaterializedViewRule.java
@@ -1035,7 +1035,7 @@ public abstract class AbstractMaterializedViewRule extends RelOptRule {
aggregateViewNode.getInput().getRowType().getFieldCount(),
aggregateViewNode.getInput().getRowType().getFieldCount() + offset));
final Aggregate newViewNode = aggregateViewNode.copy(
- aggregateViewNode.getTraitSet(), relBuilder.build(), false,
+ aggregateViewNode.getTraitSet(), relBuilder.build(),
groupSet.build(), null, aggregateViewNode.getAggCallList());
relBuilder.push(newViewNode);
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 3cb63be..d773d80 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
@@ -305,7 +305,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
// Generate the aggregate B (see the reference example above)
relBuilder.push(
aggregate.copy(aggregate.getTraitSet(), relBuilder.build(),
- false, bottomGroupSet, null, bottomAggregateCalls));
+ bottomGroupSet, null, bottomAggregateCalls));
// Add aggregate A (see the reference example above), the top aggregate
// to handle the rest of the aggregation that the bottom aggregate hasn't handled
@@ -369,8 +369,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
groupSetToAdd++;
}
relBuilder.push(
- aggregate.copy(aggregate.getTraitSet(),
- relBuilder.build(), false,
+ aggregate.copy(aggregate.getTraitSet(), relBuilder.build(),
ImmutableBitSet.of(topGroupSet), null, topAggregateCalls));
return relBuilder;
}
@@ -552,8 +551,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
final int cardinality = aggregate.getGroupSet().cardinality();
relBuilder.push(
aggregate.copy(aggregate.getTraitSet(), relBuilder.build(),
- false, ImmutableBitSet.range(cardinality), null,
- newAggCalls));
+ ImmutableBitSet.range(cardinality), null, newAggCalls));
return relBuilder;
}
@@ -696,7 +694,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
relBuilder.push(
aggregate.copy(aggregate.getTraitSet(), relBuilder.build(),
- false, newGroupSet, newGroupingSets, aggCallList));
+ newGroupSet, newGroupingSets, aggCallList));
// If there's no left child yet, no need to create the join
if (n == 0) {
@@ -844,9 +842,8 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
// Get the distinct values of the GROUP BY fields and the arguments
// to the agg functions.
relBuilder.push(
- aggregate.copy(aggregate.getTraitSet(), relBuilder.build(), false,
- ImmutableBitSet.range(projects.size()),
- null, ImmutableList.of()));
+ aggregate.copy(aggregate.getTraitSet(), relBuilder.build(),
+ ImmutableBitSet.range(projects.size()), null, ImmutableList.of()));
return relBuilder;
}
}
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
index a7bd0c3..06b0ecf 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
@@ -94,7 +94,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
contains(filterColumns);
final Aggregate newAggregate =
aggregate.copy(aggregate.getTraitSet(), input,
- false, newGroupSet, null, aggregate.getAggCallList());
+ newGroupSet, null, aggregate.getAggCallList());
final Mappings.TargetMapping mapping = Mappings.target(
newGroupSet::indexOf,
input.getRowType().getFieldCount(),
@@ -150,8 +150,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
}
final Aggregate topAggregate =
aggregate.copy(aggregate.getTraitSet(), newFilter,
- false, topGroupSet.build(),
- newGroupingSets, topAggCallList);
+ topGroupSet.build(), newGroupingSets, topAggCallList);
call.transformTo(topAggregate);
}
}
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java
index 1c98e9f..c3e5e23 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateJoinRemoveRule.java
@@ -98,10 +98,9 @@ public class AggregateJoinRemoveRule extends RelOptRule {
RelNode node;
if (isLeftJoin) {
- node = aggregate
- .copy(aggregate.getTraitSet(), join.getLeft(), false,
- aggregate.getGroupSet(), aggregate.getGroupSets(),
- aggregate.getAggCallList());
+ node = aggregate.copy(aggregate.getTraitSet(), join.getLeft(),
+ aggregate.getGroupSet(), aggregate.getGroupSets(),
+ aggregate.getAggCallList());
} else {
final Map<Integer, Integer> map = new HashMap<>();
allFields.forEach(index -> map.put(index, index - upper));
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateMergeRule.java
index cd14a9d..57c5e98 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateMergeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateMergeRule.java
@@ -142,8 +142,7 @@ public class AggregateMergeRule extends RelOptRule {
}
final Aggregate finalAgg =
- topAgg.copy(topAgg.getTraitSet(), bottomAgg.getInput(),
- false, topGroupSet,
+ topAgg.copy(topAgg.getTraitSet(), bottomAgg.getInput(), topGroupSet,
newGroupingSets, finalCalls);
call.transformTo(finalAgg);
}
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
index 4ad690d..3b4dd3f 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
@@ -111,8 +111,7 @@ public class AggregateProjectMergeRule extends RelOptRule {
final Aggregate newAggregate =
aggregate.copy(aggregate.getTraitSet(), project.getInput(),
- false, newGroupSet, newGroupingSets,
- aggCalls.build());
+ newGroupSet, newGroupingSets, aggCalls.build());
// Add a project if the group set is not in the same order or
// contains duplicates.
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java b/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
index f257609..21351f7 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/AggregateStarTableRule.java
@@ -178,7 +178,7 @@ public class AggregateStarTableRule extends RelOptRule {
aggCalls.add(copy);
}
relBuilder.push(
- aggregate.copy(aggregate.getTraitSet(), relBuilder.build(), false,
+ aggregate.copy(aggregate.getTraitSet(), relBuilder.build(),
groupSet.build(), null, aggCalls));
} else if (!tileKey.measures.equals(measures)) {
if (CalciteSystemProperty.DEBUG.value()) {
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 f723d75..901b640 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
@@ -108,7 +108,7 @@ public class AggregateUnionTransposeRule extends RelOptRule {
List<AggregateCall> transformedAggCalls =
transformAggCalls(
- aggRel.copy(aggRel.getTraitSet(), aggRel.getInput(), false,
+ aggRel.copy(aggRel.getTraitSet(), aggRel.getInput(),
aggRel.getGroupSet(), null, aggRel.getAggCallList()),
groupCount, aggRel.getAggCallList());
if (transformedAggCalls == null) {
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 d31312f..cfb7708 100644
--- a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
+++ b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java
@@ -712,13 +712,13 @@ public class RelBuilder {
/** Creates a group key. */
public GroupKey groupKey(Iterable<? extends RexNode> nodes) {
- return new GroupKeyImpl(ImmutableList.copyOf(nodes), false, null, null);
+ return new GroupKeyImpl(ImmutableList.copyOf(nodes), null, null);
}
/** Creates a group key with grouping sets. */
public GroupKey groupKey(Iterable<? extends RexNode> nodes,
Iterable<? extends Iterable<? extends RexNode>> nodeLists) {
- return groupKey_(nodes, false, nodeLists);
+ return groupKey_(nodes, nodeLists);
}
/** @deprecated Now that indicator is deprecated, use
@@ -727,18 +727,18 @@ public class RelBuilder {
@Deprecated // to be removed before 2.0
public GroupKey groupKey(Iterable<? extends RexNode> nodes, boolean indicator,
Iterable<? extends Iterable<? extends RexNode>> nodeLists) {
- return groupKey_(nodes, indicator, nodeLists);
+ Aggregate.checkIndicator(indicator);
+ return groupKey_(nodes, nodeLists);
}
private GroupKey groupKey_(Iterable<? extends RexNode> nodes,
- boolean indicator,
Iterable<? extends Iterable<? extends RexNode>> nodeLists) {
final ImmutableList.Builder<ImmutableList<RexNode>> builder =
ImmutableList.builder();
for (Iterable<? extends RexNode> nodeList : nodeLists) {
builder.add(ImmutableList.copyOf(nodeList));
}
- return new GroupKeyImpl(ImmutableList.copyOf(nodes), indicator, builder.build(), null);
+ return new GroupKeyImpl(ImmutableList.copyOf(nodes), builder.build(), null);
}
/** Creates a group key of fields identified by ordinal. */
@@ -769,14 +769,14 @@ public class RelBuilder {
* are coming from an existing {@link Aggregate}. */
public GroupKey groupKey(ImmutableBitSet groupSet,
@Nonnull Iterable<? extends ImmutableBitSet> groupSets) {
- return groupKey_(groupSet, false, ImmutableList.copyOf(groupSets));
+ return groupKey_(groupSet, ImmutableList.copyOf(groupSets));
}
/** As {@link #groupKey(ImmutableBitSet, Iterable)}. */
// deprecated, to be removed before 2.0
public GroupKey groupKey(ImmutableBitSet groupSet,
ImmutableList<ImmutableBitSet> groupSets) {
- return groupKey_(groupSet, false, groupSets == null
+ return groupKey_(groupSet, groupSets == null
? ImmutableList.of(groupSet) : ImmutableList.copyOf(groupSets));
}
@@ -784,11 +784,12 @@ public class RelBuilder {
@Deprecated // to be removed before 2.0
public GroupKey groupKey(ImmutableBitSet groupSet, boolean indicator,
ImmutableList<ImmutableBitSet> groupSets) {
- return groupKey_(groupSet, indicator, groupSets == null
+ Aggregate.checkIndicator(indicator);
+ return groupKey_(groupSet, groupSets == null
? ImmutableList.of(groupSet) : ImmutableList.copyOf(groupSets));
}
- private GroupKey groupKey_(ImmutableBitSet groupSet, boolean indicator,
+ private GroupKey groupKey_(ImmutableBitSet groupSet,
@Nonnull ImmutableList<ImmutableBitSet> groupSets) {
if (groupSet.length() > peek().getRowType().getFieldCount()) {
throw new IllegalArgumentException("out of bounds: " + groupSet);
@@ -799,7 +800,7 @@ public class RelBuilder {
final List<ImmutableList<RexNode>> nodeLists =
Util.transform(groupSets,
bitSet -> fields(ImmutableIntList.of(bitSet.toArray())));
- return groupKey_(nodes, indicator, nodeLists);
+ return groupKey_(nodes, nodeLists);
}
@Deprecated // to be removed before 2.0
@@ -1504,7 +1505,7 @@ public class RelBuilder {
final ImmutableBitSet groupSet =
ImmutableBitSet.of(registrar.registerExpressions(groupKey_.nodes));
label:
- if (Iterables.isEmpty(aggCalls) && !groupKey_.indicator) {
+ if (Iterables.isEmpty(aggCalls)) {
final RelMetadataQuery mq = peek().getCluster().getMetadataQuery();
if (groupSet.isEmpty()) {
final Double minRowCount = mq.getMinRowCount(peek());
@@ -1602,7 +1603,7 @@ public class RelBuilder {
assert groupSet.contains(set);
}
RelNode aggregate = aggregateFactory.createAggregate(r,
- groupKey_.indicator, groupSet, groupSets, aggregateCalls);
+ groupSet, groupSets, aggregateCalls);
// build field list
final ImmutableList.Builder<Field> fields = ImmutableList.builder();
@@ -1626,17 +1627,7 @@ public class RelBuilder {
}
i++;
}
- // second, indicator fields (copy from aggregate rel type)
- if (groupKey_.indicator) {
- for (int j = 0; j < groupSet.cardinality(); ++j) {
- final RelDataTypeField field = aggregateFields.get(i);
- final RelDataTypeField fieldType =
- new RelDataTypeFieldImpl(field.getName(), i, field.getType());
- fields.add(new Field(ImmutableSet.of(), fieldType));
- i++;
- }
- }
- // third, aggregate fields. retain `i' as field index
+ // second, aggregate fields. retain `i' as field index
for (int j = 0; j < aggregateCalls.size(); ++j) {
final AggregateCall call = aggregateCalls.get(j);
final RelDataTypeField fieldType =
@@ -2462,15 +2453,12 @@ public class RelBuilder {
/** Implementation of {@link GroupKey}. */
protected static class GroupKeyImpl implements GroupKey {
final ImmutableList<RexNode> nodes;
- final boolean indicator;
final ImmutableList<ImmutableList<RexNode>> nodeLists;
final String alias;
- GroupKeyImpl(ImmutableList<RexNode> nodes, boolean indicator,
+ GroupKeyImpl(ImmutableList<RexNode> nodes,
ImmutableList<ImmutableList<RexNode>> nodeLists, String alias) {
this.nodes = Objects.requireNonNull(nodes);
- assert !indicator;
- this.indicator = indicator;
this.nodeLists = nodeLists;
this.alias = alias;
}
@@ -2482,7 +2470,7 @@ public class RelBuilder {
public GroupKey alias(String alias) {
return Objects.equals(this.alias, alias)
? this
- : new GroupKeyImpl(nodes, indicator, nodeLists, alias);
+ : new GroupKeyImpl(nodes, nodeLists, alias);
}
}
diff --git a/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java b/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java
index 5743fdd..11701a6 100644
--- a/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java
+++ b/core/src/test/java/org/apache/calcite/plan/volcano/TraitPropagationTest.java
@@ -71,7 +71,6 @@ import org.apache.calcite.tools.RuleSet;
import org.apache.calcite.tools.RuleSets;
import org.apache.calcite.util.ImmutableBitSet;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
@@ -169,7 +168,7 @@ public class TraitPropagationTest {
false, false, false, Collections.singletonList(1), -1, RelCollations.EMPTY,
sqlBigInt, "cnt");
RelNode agg = new LogicalAggregate(cluster,
- cluster.traitSetOf(Convention.NONE), project, false,
+ cluster.traitSetOf(Convention.NONE), project,
ImmutableBitSet.of(0), null, Collections.singletonList(aggCall));
final RelNode rootRel = agg;
@@ -207,7 +206,7 @@ public class TraitPropagationTest {
RelNode convertedInput = convert(rel.getInput(), desiredTraits);
call.transformTo(
new PhysAgg(rel.getCluster(), empty.replace(PHYSICAL),
- convertedInput, false, rel.getGroupSet(),
+ convertedInput, rel.getGroupSet(),
rel.getGroupSets(), rel.getAggCallList()));
}
}
@@ -295,18 +294,16 @@ public class TraitPropagationTest {
/** Physical Aggregate RelNode */
private static class PhysAgg extends Aggregate implements Phys {
- PhysAgg(RelOptCluster cluster, RelTraitSet traits, RelNode child,
- boolean indicator, ImmutableBitSet groupSet,
+ PhysAgg(RelOptCluster cluster, RelTraitSet traitSet, RelNode input,
+ ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
- super(cluster, traits, child, groupSet, groupSets, aggCalls);
- Preconditions.checkArgument(!indicator,
- "indicator is not supported, use GROUPING function instead");
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
}
public Aggregate copy(RelTraitSet traitSet, RelNode input,
- boolean indicator, ImmutableBitSet groupSet,
+ ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
- return new PhysAgg(getCluster(), traitSet, input, indicator, groupSet,
+ return new PhysAgg(getCluster(), traitSet, input, groupSet,
groupSets, aggCalls);
}
diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java
index b9fd322..59235a4 100644
--- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java
+++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java
@@ -472,8 +472,7 @@ public class DruidQuery extends AbstractRelNode implements BindableRel {
}
if (r instanceof Aggregate) {
final Aggregate aggregate = (Aggregate) r;
- if (aggregate.getGroupSets().size() != 1
- || aggregate.indicator) {
+ if (aggregate.getGroupSets().size() != 1) {
return litmus.fail("no grouping sets");
}
}
diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java
index 1092e59..a9abdb4 100644
--- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java
+++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidRules.java
@@ -445,8 +445,7 @@ public class DruidRules {
return;
}
- if (aggregate.indicator
- || aggregate.getGroupSets().size() != 1) {
+ if (aggregate.getGroupSets().size() != 1) {
return;
}
if (DruidQuery
@@ -492,8 +491,7 @@ public class DruidRules {
if (!DruidQuery.isValidSignature(query.signature() + 'p' + 'a')) {
return;
}
- if (aggregate.indicator
- || aggregate.getGroupSets().size() != 1) {
+ if (aggregate.getGroupSets().size() != 1) {
return;
}
if (DruidQuery
@@ -604,8 +602,7 @@ public class DruidRules {
newCalls.add(aggCall);
}
aggregate = aggregate.copy(aggregate.getTraitSet(), aggregate.getInput(),
- aggregate.indicator, aggregate.getGroupSet(), aggregate.getGroupSets(),
- newCalls);
+ aggregate.getGroupSet(), aggregate.getGroupSets(), newCalls);
if (containsFilter) {
// AND the current filterNode with the filter node inside filter
diff --git a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchAggregate.java b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchAggregate.java
index 66dfc43..1f0a646 100644
--- a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchAggregate.java
+++ b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchAggregate.java
@@ -51,15 +51,14 @@ public class ElasticsearchAggregate extends Aggregate implements ElasticsearchRe
EnumSet.of(SqlKind.COUNT, SqlKind.MAX, SqlKind.MIN, SqlKind.AVG,
SqlKind.SUM, SqlKind.ANY_VALUE);
- /** Creates a ElasticsearchAggregate */
+ /** Creates an ElasticsearchAggregate. */
ElasticsearchAggregate(RelOptCluster cluster,
RelTraitSet traitSet,
RelNode input,
- boolean indicator,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) throws InvalidRelException {
- super(cluster, traitSet, input, indicator, groupSet, groupSets, aggCalls);
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
if (getConvention() != input.getConvention()) {
String message = String.format(Locale.ROOT, "%s != %s", getConvention(),
@@ -92,16 +91,26 @@ public class ElasticsearchAggregate extends Aggregate implements ElasticsearchRe
+ "Yours is %s", Group.SIMPLE, getGroupType());
throw new InvalidRelException(message);
}
+ }
+ @Deprecated // to be removed before 2.0
+ ElasticsearchAggregate(RelOptCluster cluster,
+ RelTraitSet traitSet,
+ RelNode input,
+ boolean indicator,
+ ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets,
+ List<AggregateCall> aggCalls) throws InvalidRelException {
+ this(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
}
- @Override public Aggregate copy(RelTraitSet traitSet, RelNode input, boolean indicator,
+ @Override public Aggregate copy(RelTraitSet traitSet, RelNode input,
ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
try {
return new ElasticsearchAggregate(getCluster(), traitSet, input,
- indicator, groupSet, groupSets,
- aggCalls);
+ groupSet, groupSets, aggCalls);
} catch (InvalidRelException e) {
throw new AssertionError(e);
}
diff --git a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchRules.java b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchRules.java
index ed20aa7..5ad76df 100644
--- a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchRules.java
+++ b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchRules.java
@@ -269,7 +269,6 @@ class ElasticsearchRules {
rel.getCluster(),
traitSet,
convert(agg.getInput(), traitSet.simplify()),
- agg.indicator,
agg.getGroupSet(),
agg.getGroupSets(),
agg.getAggCallList());
diff --git a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeAggregate.java b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeAggregate.java
index 19bbe63..980d3ca 100644
--- a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeAggregate.java
+++ b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeAggregate.java
@@ -46,11 +46,10 @@ public class GeodeAggregate extends Aggregate implements GeodeRel {
public GeodeAggregate(RelOptCluster cluster,
RelTraitSet traitSet,
RelNode input,
- boolean indicator,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- super(cluster, traitSet, input, indicator, groupSet, groupSets, aggCalls);
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
assert getConvention() == GeodeRel.CONVENTION;
assert getConvention() == this.input.getConvention();
@@ -64,11 +63,23 @@ public class GeodeAggregate extends Aggregate implements GeodeRel {
}
}
- @Override public Aggregate copy(RelTraitSet traitSet, RelNode input, boolean indicator,
+ @Deprecated // to be removed before 2.0
+ public GeodeAggregate(RelOptCluster cluster,
+ RelTraitSet traitSet,
+ RelNode input,
+ boolean indicator,
+ ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets,
+ List<AggregateCall> aggCalls) {
+ this(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ }
+
+ @Override public Aggregate copy(RelTraitSet traitSet, RelNode input,
ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- return new GeodeAggregate(getCluster(), traitSet, input, indicator, groupSet, groupSets,
- aggCalls);
+ return new GeodeAggregate(getCluster(), traitSet, input, groupSet,
+ groupSets, aggCalls);
}
@Override public RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq) {
diff --git a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeRules.java b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeRules.java
index 55cf161..48e3986 100644
--- a/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeRules.java
+++ b/geode/src/main/java/org/apache/calcite/adapter/geode/rel/GeodeRules.java
@@ -181,7 +181,6 @@ public class GeodeRules {
aggregate.getCluster(),
traitSet,
convert(aggregate.getInput(), traitSet.simplify()),
- aggregate.indicator,
aggregate.getGroupSet(),
aggregate.getGroupSets(),
aggregate.getAggCallList());
diff --git a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java
index 0cf5f75..e7aece0 100644
--- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java
+++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoAggregate.java
@@ -44,15 +44,14 @@ public class MongoAggregate
public MongoAggregate(
RelOptCluster cluster,
RelTraitSet traitSet,
- RelNode child,
- boolean indicator,
+ RelNode input,
ImmutableBitSet groupSet,
List<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls)
throws InvalidRelException {
- super(cluster, traitSet, child, indicator, groupSet, groupSets, aggCalls);
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
assert getConvention() == MongoRel.CONVENTION;
- assert getConvention() == child.getConvention();
+ assert getConvention() == input.getConvention();
for (AggregateCall aggCall : aggCalls) {
if (aggCall.isDistinct()) {
@@ -69,11 +68,20 @@ public class MongoAggregate
}
}
+ @Deprecated // to be removed before 2.0
+ public MongoAggregate(RelOptCluster cluster, RelTraitSet traitSet,
+ RelNode input, boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls)
+ throws InvalidRelException {
+ this(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ }
+
@Override public Aggregate copy(RelTraitSet traitSet, RelNode input,
- boolean indicator, ImmutableBitSet groupSet,
- List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
+ ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets,
+ List<AggregateCall> aggCalls) {
try {
- return new MongoAggregate(getCluster(), traitSet, input, indicator,
+ return new MongoAggregate(getCluster(), traitSet, input,
groupSet, groupSets, aggCalls);
} catch (InvalidRelException e) {
// Semantic error not possible. Must be a bug. Convert to
diff --git a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java
index 54339d2..5584791 100644
--- a/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java
+++ b/mongodb/src/main/java/org/apache/calcite/adapter/mongodb/MongoRules.java
@@ -513,7 +513,6 @@ public class MongoRules {
rel.getCluster(),
traitSet,
convert(agg.getInput(), traitSet.simplify()),
- agg.indicator,
agg.getGroupSet(),
agg.getGroupSets(),
agg.getAggCallList());
diff --git a/pig/src/main/java/org/apache/calcite/adapter/pig/PigAggregate.java b/pig/src/main/java/org/apache/calcite/adapter/pig/PigAggregate.java
index b367fb3..14f576c 100644
--- a/pig/src/main/java/org/apache/calcite/adapter/pig/PigAggregate.java
+++ b/pig/src/main/java/org/apache/calcite/adapter/pig/PigAggregate.java
@@ -39,16 +39,26 @@ public class PigAggregate extends Aggregate implements PigRel {
public static final String DISTINCT_FIELD_SUFFIX = "_DISTINCT";
/** Creates a PigAggregate. */
- public PigAggregate(RelOptCluster cluster, RelTraitSet traits, RelNode child, boolean indicator,
- ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
- super(cluster, traits, child, indicator, groupSet, groupSets, aggCalls);
+ public PigAggregate(RelOptCluster cluster, RelTraitSet traitSet,
+ RelNode input, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
+ super(cluster, traitSet, input, groupSet, groupSets, aggCalls);
assert getConvention() == PigRel.CONVENTION;
}
- @Override public Aggregate copy(RelTraitSet traitSet, RelNode input, boolean indicator,
- ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
- return new PigAggregate(input.getCluster(), traitSet, input, indicator, groupSet, groupSets,
- aggCalls);
+ @Deprecated // to be removed before 2.0
+ public PigAggregate(RelOptCluster cluster, RelTraitSet traitSet,
+ RelNode input, boolean indicator, ImmutableBitSet groupSet,
+ List<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) {
+ this(cluster, traitSet, input, groupSet, groupSets, aggCalls);
+ checkIndicator(indicator);
+ }
+
+ @Override public Aggregate copy(RelTraitSet traitSet, RelNode input,
+ ImmutableBitSet groupSet, List<ImmutableBitSet> groupSets,
+ List<AggregateCall> aggCalls) {
+ return new PigAggregate(input.getCluster(), traitSet, input, groupSet,
+ groupSets, aggCalls);
}
@Override public void implement(Implementor implementor) {
diff --git a/pig/src/main/java/org/apache/calcite/adapter/pig/PigRelFactories.java b/pig/src/main/java/org/apache/calcite/adapter/pig/PigRelFactories.java
index 8e16cc4..eaeed00 100644
--- a/pig/src/main/java/org/apache/calcite/adapter/pig/PigRelFactories.java
+++ b/pig/src/main/java/org/apache/calcite/adapter/pig/PigRelFactories.java
@@ -85,11 +85,11 @@ public class PigRelFactories {
public static final PigAggregateFactory INSTANCE = new PigAggregateFactory();
- @Override public RelNode createAggregate(RelNode input, boolean indicator,
+ @Override public RelNode createAggregate(RelNode input,
ImmutableBitSet groupSet, ImmutableList<ImmutableBitSet> groupSets,
List<AggregateCall> aggCalls) {
- return new PigAggregate(input.getCluster(), input.getTraitSet(), input, indicator, groupSet,
- groupSets, aggCalls);
+ return new PigAggregate(input.getCluster(), input.getTraitSet(), input,
+ groupSet, groupSets, aggCalls);
}
}
diff --git a/pig/src/main/java/org/apache/calcite/adapter/pig/PigRules.java b/pig/src/main/java/org/apache/calcite/adapter/pig/PigRules.java
index 355b6d0..583d852 100644
--- a/pig/src/main/java/org/apache/calcite/adapter/pig/PigRules.java
+++ b/pig/src/main/java/org/apache/calcite/adapter/pig/PigRules.java
@@ -117,7 +117,7 @@ public class PigRules {
final LogicalAggregate agg = (LogicalAggregate) rel;
final RelTraitSet traitSet = agg.getTraitSet().replace(PigRel.CONVENTION);
return new PigAggregate(agg.getCluster(), traitSet, agg.getInput(),
- agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList());
+ agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList());
}
}