Haisheng Yuan created CALCITE-3087: -------------------------------------- Summary: Mappings.apply2 doesn't keep order Key: CALCITE-3087 URL: https://issues.apache.org/jira/browse/CALCITE-3087 Project: Calcite Issue Type: Bug Reporter: Haisheng Yuan
Add the following test to MaterializationTest: {code:java} @Test public void testAggregateGroupSetsRollUp0() { checkMaterialize( "select \"empid\", \"deptno\", count(*) as c, sum(\"salary\") as s from \"emps\" " + "group by \"empid\", \"deptno\"", "select count(*) + 1 as c, \"deptno\" from \"emps\" group by cube(\"deptno\", \"empid\")", HR_FKUK_MODEL, CalciteAssert.checkResultContains( "EnumerableCalc(expr#0..2=[{inputs}], expr#3=[1], " + "expr#4=[+($t2, $t3)], C=[$t4], deptno=[$t1])\n" + " EnumerableAggregate(group=[{0, 1}], groups=[[{0, 1}, {0}, {1}, {}]], agg#0=[$SUM0($2)])\n" + " EnumerableTableScan(table=[[hr, m0]])")); } {code} We got error: {code:java} Caused by: java.lang.IllegalArgumentException: must be sorted: [{0, 1}, {1}, {0}, {}] at org.apache.calcite.rel.core.Aggregate$Group.induce(Aggregate.java:472) at org.apache.calcite.rel.mutable.MutableAggregate.getGroupType(MutableAggregate.java:83) at org.apache.calcite.plan.SubstitutionVisitor.unifyAggregates(SubstitutionVisitor.java:1281) at org.apache.calcite.plan.SubstitutionVisitor$AggregateOnProjectToAggregateUnifyRule.apply(SubstitutionVisitor.java:1345) at org.apache.calcite.plan.SubstitutionVisitor.go(SubstitutionVisitor.java:531) at org.apache.calcite.plan.SubstitutionVisitor.go(SubstitutionVisitor.java:466) at org.apache.calcite.plan.MaterializedViewSubstitutionVisitor.go(MaterializedViewSubstitutionVisitor.java:56) at org.apache.calcite.plan.RelOptMaterializations.substitute(RelOptMaterializations.java:200) at org.apache.calcite.plan.RelOptMaterializations.useMaterializedViews(RelOptMaterializations.java:72) at org.apache.calcite.plan.volcano.VolcanoPlanner.registerMaterializations(VolcanoPlanner.java:348) at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:584) {code} The reason is that Mappings.apply2 doesn't sort. -- This message was sent by Atlassian JIRA (v7.6.3#76005)