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 2015/01/21 22:36:43 UTC

incubator-calcite git commit: [CALCITE-503] Tests to check rules on Aggregate operator without grouping sets (Jesus Camacho Rodriguez)

Repository: incubator-calcite
Updated Branches:
  refs/heads/master 2bbfbdab8 -> 4e1854044


[CALCITE-503] Tests to check rules on Aggregate operator without grouping sets (Jesus Camacho Rodriguez)

Close apache/incubator-calcite#44


Project: http://git-wip-us.apache.org/repos/asf/incubator-calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/4e185404
Tree: http://git-wip-us.apache.org/repos/asf/incubator-calcite/tree/4e185404
Diff: http://git-wip-us.apache.org/repos/asf/incubator-calcite/diff/4e185404

Branch: refs/heads/master
Commit: 4e18540440036b01370a2c4c0657d14d80b303bf
Parents: 2bbfbda
Author: Jesus Camacho Rodriguez <jc...@hortonworks.com>
Authored: Wed Jan 21 13:44:59 2015 +0000
Committer: Julian Hyde <jh...@apache.org>
Committed: Wed Jan 21 13:07:23 2015 -0800

----------------------------------------------------------------------
 .../apache/calcite/test/RelOptRulesTest.java    | 16 ++++++++++
 .../org/apache/calcite/test/RelOptRulesTest.xml | 33 ++++++++++++++++++++
 2 files changed, 49 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/4e185404/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java b/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java
index 4e50e89..1db7658 100644
--- a/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java
@@ -37,6 +37,7 @@ import org.apache.calcite.rel.rules.AggregateFilterTransposeRule;
 import org.apache.calcite.rel.rules.AggregateProjectMergeRule;
 import org.apache.calcite.rel.rules.AggregateProjectPullUpConstantsRule;
 import org.apache.calcite.rel.rules.AggregateReduceFunctionsRule;
+import org.apache.calcite.rel.rules.AggregateUnionAggregateRule;
 import org.apache.calcite.rel.rules.AggregateUnionTransposeRule;
 import org.apache.calcite.rel.rules.CalcMergeRule;
 import org.apache.calcite.rel.rules.CoerceInputsRule;
@@ -1203,6 +1204,21 @@ public class RelOptRulesTest extends RelOptTestBase {
             + "group by rollup(x, y)");
   }
 
+  @Test public void testPullAggregateThroughUnion() throws Exception {
+    HepProgram program = new HepProgramBuilder()
+        .addRuleInstance(AggregateUnionAggregateRule.INSTANCE)
+        .build();
+
+    checkPlanning(program,
+        "select deptno, job from"
+            + " (select deptno, job from emp as e1"
+            + " group by deptno,job"
+            + "  union all"
+            + " select deptno, job from emp as e2"
+            + " group by deptno,job)"
+            + " group by deptno,job");
+  }
+
   public void transitiveInference(RelOptRule... extraRules) throws Exception {
     final DiffRepository diffRepos = getDiffRepos();
     String sql = diffRepos.expand(null, "${sql}");

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/4e185404/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
index 7e1e00b..ce8c4d2 100644
--- a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
@@ -2918,6 +2918,39 @@ LogicalProject(X=[$0], EXPR$1=[$4], Y=[$1])
 ]]>
         </Resource>
     </TestCase>
+    <TestCase name="testPullAggregateThroughUnion">
+        <Resource name="sql">
+            <![CDATA[select deptno, job from
+ (select deptno, job from emp as e1
+ group by deptno,job
+  union all
+ select deptno, job from emp as e2
+ group by deptno,job)
+ group by deptno,job]]>
+        </Resource>
+        <Resource name="planBefore">
+            <![CDATA[
+LogicalAggregate(group=[{0, 1}])
+  LogicalUnion(all=[true])
+    LogicalAggregate(group=[{0, 1}])
+      LogicalProject(DEPTNO=[$7], JOB=[$2])
+        LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+    LogicalAggregate(group=[{0, 1}])
+      LogicalProject(DEPTNO=[$7], JOB=[$2])
+        LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+]]>
+        </Resource>
+        <Resource name="planAfter">
+            <![CDATA[
+LogicalAggregate(group=[{0, 1}])
+  LogicalUnion(all=[true])
+    LogicalProject(DEPTNO=[$7], JOB=[$2])
+      LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+    LogicalProject(DEPTNO=[$7], JOB=[$2])
+      LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+]]>
+        </Resource>
+    </TestCase>
     <TestCase name="testPushFilterWithRank">
         <Resource name="sql">
             <![CDATA[select e1.ename, r