[ https://issues.apache.org/jira/browse/CALCITE-3113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Danny Chan resolved CALCITE-3113. --------------------------------- Resolution: Fixed Assignee: Danny Chan Fix Version/s: 1.21.0 > 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 > Assignee: Danny Chan > Priority: Major > Labels: pull-request-available > Fix For: 1.21.0 > > Time Spent: 4.5h > Remaining Estimate: 0h > > 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.14#76016)