[
https://issues.apache.org/jira/browse/CALCITE-3916?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17081837#comment-17081837
]
Haisheng Yuan commented on CALCITE-3916:
----------------------------------------
No matter before removing importance from subset or after removing, the rule
applying is totally arbitrary and indeterministic. Whenever there is a new
RelNode in current RelSet, it may trigger rules for current RelSet (the relnode
is the 1st rule operand), or parent RelSet (the relnode is the 2nd or 3rd rule
operand).
> Apply rules bottom up by RelSet
> -------------------------------
>
> Key: CALCITE-3916
> URL: https://issues.apache.org/jira/browse/CALCITE-3916
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Haisheng Yuan
> Assignee: Haisheng Yuan
> Priority: Major
>
> Apply rules by leaf RelSet -> root RelSet order. For every RelNode in a
> RelSet, rule is matched and applied sequentially. No RuleQueue and
> DeferringRuleCall is needed anymore. This will make space pruning and rule
> mutual exclusivity check possible.
> Rule that use AbstractConverter as operand is an exception, to keep backward
> compatibility, this kind of rule still needs top-down apply.
> This should be done after CALCITE-3896.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)