Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.27.0
Description
The query SELECT COUNT(comm), COUNT(DISTINCT comm) FROM emp produces the plan below:
LogicalAggregate(group=[{}], EXPR$0=[$SUM0($1)], EXPR$1=[COUNT($0)]) LogicalAggregate(group=[{0}], EXPR$0=[COUNT()]) LogicalProject(COMM=[$6]) LogicalTableScan(table=[[CATALOG, SALES, EMP]])
In case SUM type is expanded by override RelDataTypeSystem#deriveSumType the AggregateExpandDistinctAggregatesRule fails with assertion below:
Error: java.lang.AssertionError: type mismatch: aggCall type: BIGINT NOT NULL inferred type: DECIMAL(19, 0) NOT NULL at org.apache.calcite.util.Litmus$1.fail(Litmus.java:32) at org.apache.calcite.plan.RelOptUtil.eq(RelOptUtil.java:2211) at org.apache.calcite.rel.core.Aggregate.typeMatchesInferred(Aggregate.java:443) at org.apache.calcite.rel.core.Aggregate.<init>(Aggregate.java:170) at org.apache.calcite.rel.logical.LogicalAggregate.<init>(LogicalAggregate.java:72) at org.apache.calcite.rel.logical.LogicalAggregate.copy(LogicalAggregate.java:154) at org.apache.calcite.rel.logical.LogicalAggregate.copy(LogicalAggregate.java:48) at org.apache.calcite.rel.rules.AggregateExpandDistinctAggregatesRule.convertSingletonDistinct(AggregateExpandDistinctAggregatesRule.java:401) ...
Root cause:
the type of SUM aggregate doesn't match original type of the COUNT.
Attachments
Issue Links
- is related to
-
CALCITE-4818 AggregateExpandDistinctAggregatesRule must infer correct data type for top aggregate calls
- Closed
- links to