[
https://issues.apache.org/jira/browse/CALCITE-4037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17121348#comment-17121348
]
Sylvain Crozon commented on CALCITE-4037:
-----------------------------------------
I didn't want to submit a PR since what I started was breaking quite a lot of
tests, wasn't sure I was going in the right direction. Realized it would
probably be better to add a project renaming columns on top of the new
aggregate instead of skipping the rule completely if there are aliases in the
project.
Just submitted a PR with those changes
> 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
>
> Time Spent: 10m
> 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)