You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jc...@apache.org on 2017/11/20 21:23:07 UTC
calcite git commit: [CALCITE-2051] Rules using Aggregate might check
for simple grouping sets incorrectly
Repository: calcite
Updated Branches:
refs/heads/master a3dd90f10 -> fb8c072ed
[CALCITE-2051] Rules using Aggregate might check for simple grouping sets incorrectly
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/fb8c072e
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/fb8c072e
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/fb8c072e
Branch: refs/heads/master
Commit: fb8c072ed77e6a1754b33394713c2499e73adccf
Parents: a3dd90f
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Tue Nov 14 16:14:51 2017 -0800
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Mon Nov 20 13:22:54 2017 -0800
----------------------------------------------------------------------
.../rel/rules/AggregateExpandDistinctAggregatesRule.java | 3 ++-
.../apache/calcite/rel/rules/AggregateFilterTransposeRule.java | 5 +++--
.../org/apache/calcite/rel/rules/AggregateProjectMergeRule.java | 3 ++-
.../apache/calcite/rel/rules/FilterAggregateTransposeRule.java | 3 ++-
4 files changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/fb8c072e/core/src/main/java/org/apache/calcite/rel/rules/AggregateExpandDistinctAggregatesRule.java
----------------------------------------------------------------------
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 53068d0..019259c 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
@@ -22,6 +22,7 @@ import org.apache.calcite.plan.RelOptRule;
import org.apache.calcite.plan.RelOptRuleCall;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Aggregate.Group;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.core.RelFactories;
@@ -158,7 +159,7 @@ public final class AggregateExpandDistinctAggregatesRule extends RelOptRule {
// arguments then we can use a more efficient form.
if (nonDistinctAggCallCount == 0
&& argLists.size() == 1
- && aggregate.getGroupSets().size() == 1) {
+ && aggregate.getGroupType() == Group.SIMPLE) {
final Pair<List<Integer>, Integer> pair =
Iterables.getOnlyElement(argLists);
final RelBuilder relBuilder = call.builder();
http://git-wip-us.apache.org/repos/asf/calcite/blob/fb8c072e/core/src/main/java/org/apache/calcite/rel/rules/AggregateFilterTransposeRule.java
----------------------------------------------------------------------
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 68a047d..6e9e508 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
@@ -23,6 +23,7 @@ import org.apache.calcite.plan.RelOptUtil;
import org.apache.calcite.plan.SubstitutionVisitor;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Aggregate.Group;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.Filter;
import org.apache.calcite.rel.core.RelFactories;
@@ -107,7 +108,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
RexUtil.apply(mapping, filter.getCondition());
final Filter newFilter = filter.copy(filter.getTraitSet(),
newAggregate, newCondition);
- if (allColumnsInAggregate && aggregate.getGroupSets().size() == 1) {
+ if (allColumnsInAggregate && aggregate.getGroupType() == Group.SIMPLE) {
// Everything needed by the filter is returned by the aggregate.
assert newGroupSet.equals(aggregate.getGroupSet());
call.transformTo(newFilter);
@@ -120,7 +121,7 @@ public class AggregateFilterTransposeRule extends RelOptRule {
topGroupSet.set(newGroupSet.indexOf(c));
}
ImmutableList<ImmutableBitSet> newGroupingSets = null;
- if (aggregate.groupSets.size() > 1) {
+ if (aggregate.getGroupType() != Group.SIMPLE) {
ImmutableList.Builder<ImmutableBitSet> newGroupingSetsBuilder =
ImmutableList.builder();
for (ImmutableBitSet groupingSet : aggregate.getGroupSets()) {
http://git-wip-us.apache.org/repos/asf/calcite/blob/fb8c072e/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java
----------------------------------------------------------------------
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 432a891..e7ddd58 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
@@ -20,6 +20,7 @@ import org.apache.calcite.plan.RelOptRule;
import org.apache.calcite.plan.RelOptRuleCall;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Aggregate.Group;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.Project;
import org.apache.calcite.rel.core.RelFactories;
@@ -88,7 +89,7 @@ public class AggregateProjectMergeRule extends RelOptRule {
final ImmutableBitSet newGroupSet = aggregate.getGroupSet().permute(map);
ImmutableList<ImmutableBitSet> newGroupingSets = null;
- if (aggregate.getGroupSets().size() > 1) {
+ if (aggregate.getGroupType() != Group.SIMPLE) {
newGroupingSets =
ImmutableBitSet.ORDERING.immutableSortedCopy(
ImmutableBitSet.permute(aggregate.getGroupSets(), map));
http://git-wip-us.apache.org/repos/asf/calcite/blob/fb8c072e/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java b/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
index f971be3..f65d874 100644
--- a/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
+++ b/core/src/main/java/org/apache/calcite/rel/rules/FilterAggregateTransposeRule.java
@@ -23,6 +23,7 @@ import org.apache.calcite.plan.RelOptRuleOperand;
import org.apache.calcite.plan.RelOptUtil;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Aggregate;
+import org.apache.calcite.rel.core.Aggregate.Group;
import org.apache.calcite.rel.core.Filter;
import org.apache.calcite.rel.core.RelFactories;
import org.apache.calcite.rel.type.RelDataTypeField;
@@ -137,7 +138,7 @@ public class FilterAggregateTransposeRule extends RelOptRule {
return false;
}
- if (aggregate.getGroupSets().size() > 1) {
+ if (aggregate.getGroupType() != Group.SIMPLE) {
// If grouping sets are used, the filter can be pushed if
// the columns referenced in the predicate are present in
// all the grouping sets.