[
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)