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

Vladimir Sitnikov commented on CALCITE-3668:
--------------------------------------------

{quote} Will a rule with pattern operand(Filter, operand(Project))) match the 
pair of (LogicalFilter, EnumerableProject)?{quote}
It won't if LogicalFilter uses Subset#{convention=NONE} as its input.

{quote} We want to propagate the 2 different traitsets up to PhysicalFilter, to 
generate 2 physical filters with the same traitset.{quote}
Then you don't need this change.

You can still use operand(RelSubset.class) and use subset.set.subsets in your 
own rule code.

On the other hand, if you make the planner use subset.set.subsets, then it 
would produce unrealistic matches that can't be resolved in the rule code.

> VolcanoPlanner doesn't match all the RelSubSet in matchRecursive
> ----------------------------------------------------------------
>
>                 Key: CALCITE-3668
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3668
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Haisheng Yuan
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> If I have a rule to match pattern with Filter-RelSubset, VolcanoPlanner only 
> matches 1 RelSubset in the RelSet, instead of all the subsets.
> {code:java}
>          if (operand.getMatchedClass() == RelSubset.class) {
>             // If the rule wants the whole subset, we just provide it
>             successors = ImmutableList.of(subset);  
>           } else {
>             successors = subset.getRelList();
>           }
> {code}



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

Reply via email to