You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Haisheng Yuan (JIRA)" <ji...@apache.org> on 2019/05/23 00:00:01 UTC

[jira] [Created] (CALCITE-3087) Mappings.apply2 doesn't keep order

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)