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

Ruben Q L commented on CALCITE-5715:
------------------------------------

[~libenchao], at first sight, the change seems reasonable, and it does not 
break any Calcite test. However, it impacts a very specific (and IMO 
improbable) use case of the rule, do we know if any of tests within Calcite 
actually goes through the modified code? I'm just asking because I tested the 
patch on my downstream project, and indeed it did not cause any regression.... 
but then I double-check and realized that none of the 9K+ tests of my 
downstream project goes through that piece of code (so they don't help to try 
to detect any potential regression caused by the patch).

>From the ticket description, it seems the reasoning behind this change is that 
>you have an edge case scenario that reaches a "dead loop" on the planner, and 
>I assume it gets fixed with the proposed patch. Ideally, it would be nice to 
>have a minimalist test showing this phenomenon (and how it gets fixed by the 
>patch), although I am aware it may not be easy to produce such a test within 
>Calcite.


> 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
>             Fix For: 1.35.0
>
>
> 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