[
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)