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

Sean Hsuan-Yi Chu commented on CALCITE-841:
-------------------------------------------

If we would like to fix in CalcRelSplitter, using "getCohort()" might be one 
way we could do.

This method helps "place" specified expressions on the same level. 

Back to this JIRA issue, isn't it what we are asking for? 

I had an implementation here:
https://github.com/hsuanyi/incubator-calcite/tree/CALCITE-841NEW

[~vladimirsitnikov] I saw you leave some comments/hints in the source code. 

Basically, I coded along that. So can you help pick up any potential issue ? 

> When the argument of window functions is an expression, redundant windows 
> could be generated
> --------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-841
>                 URL: https://issues.apache.org/jira/browse/CALCITE-841
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Sean Hsuan-Yi Chu
>            Assignee: Julian Hyde
>
> Firstly of all, this issue happens when HepPlanner is used with 
> ProjectToWindowRule.PROJECT rule.
> A query with this pattern:
> {code}
> select fn(col) over w, fn(expr) over w
> from ...
> {code}
> will generate two "LogicalWindow" even if we have only an identical window 
> frame.
> For example, 
> {code}
> select sum(deptno) over(partition by deptno order by sal) as sum1, 
> sum(deptno + deptno) over(partition by deptno order by sal) as sum2
> from emp
> {code}
> gives:
> {code}
> LogicalProject($0=[$2], $1=[$4])
>   LogicalWindow(window#0=[window(partition {1} order by [0] range between 
> UNBOUNDED PRECEDING and CURRENT ROW aggs [SUM($3)])])
>     LogicalProject(SAL=[$0], DEPTNO=[$1], $2=[$2], $3=[+($1, $1)])
>       LogicalProject(SAL=[$5], DEPTNO=[$7], $2=[$9])
>         LogicalWindow(window#0=[window(partition {7} order by [5] range 
> between UNBOUNDED PRECEDING and CURRENT ROW aggs [SUM($7)])])
>           LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to