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

Julian Hyde commented on CALCITE-4037:
--------------------------------------

It would seem to make sense that the Aggregate generated by the rule would have 
the same field names as the Aggregate that triggered the rule.

This project uses pull requests, not patches. Can you please convert the patch 
into a pull request?

To be accepted, the PR should introduce no test failures. We'd have to review 
to make sure that the new behavior is a net improvement.

> AggregateProjectMergeRule doesn't always respect column aliases
> ---------------------------------------------------------------
>
>                 Key: CALCITE-4037
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4037
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Sylvain Crozon
>            Priority: Major
>         Attachments: fix-AggregateProjectMergeRule.patch
>
>
> When columns aggregated over are given an alias, but not aggregated values, 
> the alias is lost: 
> {code:java}
> select deptno as x, sum(sal)
> from emp
> group by deptno
> {code}
> has the following plan
> {code:java}
> LogicalAggregate(group=[{0}], EXPR$1=[SUM($1)])
>   LogicalProject(X=[$7], SAL=[$5])
>     LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> {code}
>  which becomes  
> {code:java}
> LogicalAggregate(group=[{7}], EXPR$1=[SUM($5)])
>   LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> {code}
>  
> after the AggregateProjectMergeRule
>  
> I attempted a fix by comparing the row type's field names of the project node 
> with its input, and skip merging with the agg node if they don't match. That 
> works for the use case above, however that breaks quite a few unit tests. 
> Some of them, I believe, should be updated like 
> testAggregateMerge1, the alias in the SQL queries are lost in the final plan. 
> But for other use cases, mostly when there's a join, the simple column name 
> comparison is not enough. 
>  
>  



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

Reply via email to