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

[jira] [Created] (CALCITE-3113) Equivalent MutableAggregates with different row types fail with AssertionError

Feng Zhu created CALCITE-3113:
---------------------------------

             Summary: Equivalent MutableAggregates with different row types fail with AssertionError
                 Key: CALCITE-3113
                 URL: https://issues.apache.org/jira/browse/CALCITE-3113
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.19.0
            Reporter: Feng Zhu


Add test case in MaterializationTest: 
{code:java}
@Test public void testAggregateAlias() {
  checkMaterialize(
      "select count(*) as c from \"emps\" group by \"empid\"",
      "select count(*) + 1 as c from \"emps\" group by \"empid\"");
}
{code}
 It fails due to different rowtype.
{code:java}
java.lang.AssertionError
    at org.apache.calcite.plan.SubstitutionVisitor.go(SubstitutionVisitor.java:504)
    at org.apache.calcite.plan.SubstitutionVisitor.go(SubstitutionVisitor.java:465)
    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:347)
{code}
However, according to MutableAggregate's hashCode&equals implementation, this materialization can be reused, i.e., queryDescedant=targetDescendant.
{code:java}
queryDescendant: RecordType(JavaType(int) empid, BIGINT $f1)
=============================================================================
Aggregate(groupSet: {0}, groupSets: [{0}], calls: [COUNT()])
  Project(projects: [$0])
    Scan(table: [hr, emps])

targetDescendant: RecordType(JavaType(int) empid, BIGINT C)
=============================================================================
Aggregate(groupSet: {0}, groupSets: [{0}], calls: [COUNT()])
  Project(projects: [$0])
    Scan(table: [hr, emps])
{code}
So, how can we align them?

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)