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

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

I am skeptical about this bug. Preserving the field names of the Aggregate 
seems to be the correct behavior. (As a policy, rules try to preserve field 
names, unless doing so would make the result more complex or less efficient.)

SQL-to-Rel seems to have produced some funky field names in this example, but 
even so, the rule isn’t the place to fix that.

> 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
>              Labels: pull-request-available
>         Attachments: fix-AggregateProjectMergeRule.patch
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> 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