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

Haisheng Yuan commented on CALCITE-4681:
----------------------------------------

[~chenz...@mail2.sysu.edu.com] Use RelSubset with the predicate of Convention 
== NONE, so that it matches logical operator. In case the child is a logical 
sort, you are fine, it won't increase the rule match a lot.

> 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
>            Priority: Major
>
> 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)

Reply via email to