[ https://issues.apache.org/jira/browse/CALCITE-3052?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16836984#comment-16836984 ]
Anton Haidai commented on CALCITE-3052: --------------------------------------- While trying hard, I still can't reproduce this error in "MaterializationTest", but I can try to explain what is going on in terms of MaterializedViewAggregateRule.rewriteView() method variables. For this example, the query is "select count(*), max(grade), team from students group by team" *prevNode.getRowType() (same as "result" before the .aggregate() call based on aggregateCalls):* "agg_avg_grade", "agg_count", "agg_max_grade", "agg_metric", "agg_min_grade", "faculty" ,"team" *aggregateCalls:* $SUM0, MAX *result.getRowType() (after the .aggregate() call based on aggregateCalls):* "team", "volume", "max_grade" *queryAggregate.getRowType()* "team", "EXPR$0", "EXPR$1", "EXPR$2", "EXPR$3", "EXPR$4" *queryAggregate.getAggCallList()* "AVG($1)", "COUNT()", "MAX($1)", "SUM($1)", "MIN($1)" So there is an error when trying to make this for loop because the "result" has less agg calls than "queryAggregate": {code} for (int i = 0; i < queryAggregate.getAggCallList().size(); i++) { projects.add( rexBuilder.makeInputRef(result, queryAggregate.getGroupCount() + i)); } {code} > Error while applying rule MaterializedViewAggregateRule(Project-Aggregate): > ArrayIndexOutOfBoundsException > ---------------------------------------------------------------------------------------------------------- > > Key: CALCITE-3052 > URL: https://issues.apache.org/jira/browse/CALCITE-3052 > Project: Calcite > Issue Type: Bug > Affects Versions: 1.19.0 > Reporter: Anton Haidai > Priority: Major > > *Materialized views enabled:* > # {{select avg(grade), count\(*), max(grade), sum(grade), min(grade), team > from students group by team}} > # {{select avg(grade), count\(*), max(grade), sum(grade), min(grade), team, > faculty from students group by faculty, team}}, > *Query:* > # {{select count\(*), team from students group by team}} > *Error* (stacktrace is obtained using the current *master* branch: > "247c7d4f76"): > {noformat} > Caused by: java.lang.ArrayIndexOutOfBoundsException: 2 > at > com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:60) > at org.apache.calcite.rex.RexBuilder.makeInputRef(RexBuilder.java:841) > at > org.apache.calcite.rel.rules.AbstractMaterializedViewRule$MaterializedViewAggregateRule.rewriteView(AbstractMaterializedViewRule.java:1507) > at > org.apache.calcite.rel.rules.AbstractMaterializedViewRule.perform(AbstractMaterializedViewRule.java:522) > at > org.apache.calcite.rel.rules.AbstractMaterializedViewRule$MaterializedViewProjectAggregateRule.onMatch(AbstractMaterializedViewRule.java:1776) > at > org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:208) > ... 71 common frames omitted > {noformat} > Reproducible only if both Materialization views listed are enabled: any > single one of these two could be successfully used with the query without any > errors. Looks like is is reproducible when AbstractMaterializedViewRule is > trying to rewrite one materialized view using the another materialized view. > Currently, I'm trying to reproduce the issue in "MaterializationTest": > without a success so far, I'll update the ticket if I'll find a working way > to reproduce the issue in the test will be discovered. -- This message was sent by Atlassian JIRA (v7.6.3#76005)