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

Botong Huang commented on CALCITE-3939:
---------------------------------------

Thanks [~anha] for reporting the issue. However, as [~hyuan] mentioned, 
something is missing in your scenario. 

Let's say the LogicalSort, TrivialProject, CustomScan are in RelSet 1, 2, 3 
respectively. Here's what it should have happened. 
 # RuleX matches LogicalSort and TrivialProject (RuleX.matches called with 
<LogicalSort, TrivialProject>). This RuleMatch1 gets queued in RuleQueue. 
 # ProjectRemoveRule fires, it marks TrivialProject as stale, triggers RelSet 2 
and 3 to merge, say into RelSet 2. Now both TrivialProject and CustomScan are 
in RelSet 2. 
 # The planner.fireRules in RelSet.mergeWith will trigger a new round of 
RuleMatch for all relNodes in RelSet 2. Specifically RuleX should have a new 
match with LogicalSort and CustomScan (RuleX.matches called with <LogicalSort, 
CustomScan>). This RuleMatch2 is also queued in RuleQueue.  
 # RuleMatch1 pops from ruleQueue, and since TrivialProject is stale, this 
match is skipped and onMatch not called. 
 # RuleMatch2 pops from ruleQueue, and RuleX.onMatch called with <LogicalSort, 
CustomScan>. 

Please let us know what went wrong here. 

> Change UnionEliminatorRule and ProjectRemoveRule to auto pruning 
> SubstitutionRule
> ---------------------------------------------------------------------------------
>
>                 Key: CALCITE-3939
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3939
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: Botong Huang
>            Priority: Major
>             Fix For: 1.23.0
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> UnionEliminatorRule and ProjectRemoveRule are both pruning rules for a 
> RelNode. They can also become SubstitutionRule with autoprune enabled



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to