[ 
https://issues.apache.org/jira/browse/CALCITE-5715?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benchao Li updated CALCITE-5715:
--------------------------------
    Fix Version/s:     (was: 1.35.0)

> Prune old nodes after projection merging in ProjectMergeRule
> ------------------------------------------------------------
>
>                 Key: CALCITE-5715
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5715
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 1.34.0
>            Reporter: Benchao Li
>            Priority: Major
>
> We already have many similar usages (prune old nodes when the new one is 
> obviously better, e.g. in 
> [CalcMergeRule|https://github.com/apache/calcite/blob/c56d5564628de6b3265f960764a6f6fc43935a75/core/src/main/java/org/apache/calcite/rel/rules/CalcMergeRule.java#L85-L90]
>  to reduce the search scope, I propose to also add this for 
> {{ProjectMergeRule}}. Do you have any concerns about this?
> In {{ProjectMergeRule}}, there is a case that after merging the two 
> {{Project}}, we'll find the new Project is trivial and we'll transform to the 
> bottomProject's 
> input(https://github.com/apache/calcite/blob/c56d5564628de6b3265f960764a6f6fc43935a75/core/src/main/java/org/apache/calcite/rel/rules/ProjectMergeRule.java#L132-L139).
>  In this case, both topProject and bottomProject could be pruned?
> The reason I propose to do this optimization for {{ProjectMergeRule}} is that 
> I met a problem that two sets will point to each other after projection 
> merging, and the planner will run into dead loop. (It's hard to show the 
> details, I haven't got a simple reproducible demo yet)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to