You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "ZiLin Chen (Jira)" <ji...@apache.org> on 2021/07/07 06:50:00 UTC

[jira] [Created] (CALCITE-4681) Rule operand match specific shape with or without RelSubset.class/RelNode.class

ZiLin Chen created CALCITE-4681:
-----------------------------------

             Summary: Rule operand match specific shape with or without RelSubset.class/RelNode.class
                 Key: CALCITE-4681
                 URL: https://issues.apache.org/jira/browse/CALCITE-4681
             Project: Calcite
          Issue Type: Improvement
          Components: core
            Reporter: ZiLin Chen


If we want to match such a pattern, LogicalJoin1 with left Input XXX(original LogicalJoin1 left input) and with right input (LogicalJoin.class).  we wound find that XXX we should use RelNode.class or RelSubset.class. However both RelNode.class and RelSubset.class will match all kind of traitSet which is inefficient(rule may fires multi time just because of some kind of XXX with different trait), especially when this is a JoinReorder Rule.

The XXX operand we want to match is exact what LogicalJoin1.getLeft() return. 

LogicalJoin1

 - XXX(original LogicalJoin1 left input)

 - LogicalJoin2

 

Is that any way we can provide to solve this problem?

One way maybe changing what RelSubset.class operand match meaning? (Now, there is no rule in calcite with RelSubset.class as match operand. Before JoinAssociateRule is the only one match RelSubset.class, but change later )

 



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