[ https://issues.apache.org/jira/browse/CALCITE-3939?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17118796#comment-17118796 ]
Anton Haidai commented on CALCITE-3939: --------------------------------------- {quote} Does RuleX look into the siblings of Project in the RelSet through RelSubset? {quote} No, just a couple of application-specific instanceofs on call.rel(0). Even more, I was trying to move all logic into RuleX.onMatch() levaing RuleX.matches() trivial: {code:java} @Override public boolean matches(RelOptRuleCall call) { final Sort sort = call.rel(0); final RelNode node = call.rel(1); return true; }{code} And everything still works according to the description. With the workaround, there are numerous calls of RuleX.matches() and RuleX.onMatch() but without it, there is only a single call of RuleX.matches() which returns true and zero calls of RuleX.onMatch() (as described above). > 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)