You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Taras Ledkov (Jira)" <ji...@apache.org> on 2021/06/15 11:50:00 UTC

[jira] [Created] (CALCITE-4652) AggregateExpandDistinctAggregatesRule must cast top aggregates to original type

Taras Ledkov created CALCITE-4652:
-------------------------------------

             Summary: AggregateExpandDistinctAggregatesRule must cast top aggregates to original type
                 Key: CALCITE-4652
                 URL: https://issues.apache.org/jira/browse/CALCITE-4652
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.27.0
            Reporter: Taras Ledkov
             Fix For: 1.28.0


The query {{SELECT COUNT(comm), COUNT(DISTINCT comm) FROM emp}} produces the plan below:
{code}
LogicalAggregate(group=[{}], EXPR$0=[$SUM0($1)], EXPR$1=[COUNT($0)])
  LogicalAggregate(group=[{0}], EXPR$0=[COUNT()])
    LogicalProject(COMM=[$6])
      LogicalTableScan(table=[[CATALOG, SALES, EMP]]) 
{code}

In case SUM type is expanded by override {{RelDataTypeSystem#deriveSumType}} the {{AggregateExpandDistinctAggregatesRule}} fails with assertion below:

{code}
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)
    ... 
{code}

*Root cause:*
the type of SUM aggregate doesn't match original type of the COUNT.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)