Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
There is a bug with aggregate duplicate with group fields. Can repro with a simple modification (adding more group fields than there are aggregate fields) of the test added in https://github.com/apache/calcite/commit/e01ba5ab6e7c57348f9f7be2babf00ae007204b5
/** Tests that {@link RelBuilder#aggregate} eliminates duplicate aggregate * calls and creates a {@code Project} to compensate. */ @Test public void testAggregateEliminatesDuplicateCalls2() { final RelBuilder builder = RelBuilder.create(config().build()); RelNode root = builder.scan("EMP") .aggregate(builder.groupKey(builder.field(0), builder.field(1), builder.field(2), builder.field(3), builder.field(4)), builder.sum(builder.field(1)).as("S1"), builder.count().as("C"), builder.sum(builder.field(2)).as("S2"), builder.sum(builder.field(1)).as("S1b")) .build(); final String expected = "" + "LogicalProject(S1=[$0], C=[$1], S2=[$2], S1b=[$0])\n" + " LogicalAggregate(group=[{}], S1=[SUM($1)], C=[COUNT()], S2=[SUM($2)])\n" + " LogicalTableScan(table=[[scott, EMP]])\n"; assertThat(root, hasTree(expected)); }
Note that the test isn't quite right, as the final expectation would need to be modified, but it reproduces the exception, which in this case is `java.lang.IndexOutOfBoundsException: Index: 4, Size: 4`
Attachments
Issue Links
- is related to
-
CALCITE-3123 In RelBuilder, eliminate duplicate aggregate calls
- Resolved