[ 
https://issues.apache.org/jira/browse/CALCITE-3957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17171262#comment-17171262
 ] 

Julian Hyde commented on CALCITE-3957:
--------------------------------------

Before fixing this, I plan to fix CALCITE-4154. It's difficult to write a test 
case where SQL naturally generates algebra with {{SUM0\(x)}}. After 4154, 
{{ProjectAggregateMergeRule}} will convert {{COALESCE(SUM\(x), 0)}} to 
{{SUM0\(x)}}.

Then, with 4154 and 3957 combined, we can convert
{code}SELECT COALESCE(SUM(c), 0)
FROM (
  SELECT deptno, COUNT(*) AS c
  FROM Emp
  GROUP BY deptno)
{code}
into
{code}SELECT COUNT(*)
FROM Emp
{code}

> AggregateMergeRule should be able to merge SUM0 into COUNT even with empty 
> group by
> -----------------------------------------------------------------------------------
>
>                 Key: CALCITE-3957
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3957
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Steven Talbot
>            Assignee: Julian Hyde
>            Priority: Major
>
> Basically, the comment at 
> [https://github.com/apache/calcite/blame/571731b80a58eb095ebac7123285c375e7afff90/core/src/main/java/org/apache/calcite/rel/rules/AggregateMergeRule.java#L117-L120]
>  does not apply if the top aggregate is a SUM0, I believe. Without a fix for 
> this, there's this one case where this rule falls down and isn't able to 
> merge something that just got rolled up: otherwise it's a pretty nice 
> invariant that if one of our standard rollup rules for aggregates (say, in 
> MaterializedViewRule) just split the aggregate, this rule should be able to 
> merge it back.



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

Reply via email to