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

Zhen Chen commented on CALCITE-6899:
------------------------------------

[~juntaozhang] I understand that your solution should be able to solve this 
jira ticket. But I believe this is not a fundamental solution. The 
LogicalFilter operator should not carry distribution traits—in fact, none of 
the Logical* operators should carry distribution traits (or they should 
uniformly default to ANY). Distribution traits should be handled by the Volcano 
planner through passThroughTraits and deriveTraits. The logic you described 
seems to align with the passThroughTraits approach.

> Mismatch of Trait information results in a missing conversion exception
> -----------------------------------------------------------------------
>
>                 Key: CALCITE-6899
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6899
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: xiong duan
>            Priority: Major
>
> The unit test in RelOptRulesTest:
> {code:java}
> @Test void testEnumerableFilterRule() {
>   final String sql = "select ename from emp where sal > all (select comm from 
> emp)";
>   sql(sql)
>       .withVolcanoPlanner(false, p -> {
>         p.addRelTraitDef(RelDistributionTraitDef.INSTANCE);
>         p.addRule(CoreRules.FILTER_SUB_QUERY_TO_CORRELATE);
>         p.addRule(EnumerableRules.ENUMERABLE_FILTER_RULE);
>         p.addRule(EnumerableRules.ENUMERABLE_PROJECT_RULE);
>         p.addRule(EnumerableRules.ENUMERABLE_TABLE_SCAN_RULE);
>         p.addRule(EnumerableRules.ENUMERABLE_JOIN_RULE);
>         p.addRule(EnumerableRules.ENUMERABLE_AGGREGATE_RULE);
>       }).check();
> } {code}
> It throws an exception:
> {code:java}
> There are not enough rules to produce a node with desired properties: 
> convention=ENUMERABLE, dist=any.
> Missing conversion is LogicalFilter[convention: NONE -> ENUMERABLE]
> There is 1 empty subset: rel#39:RelSubset#1.ENUMERABLE.broadcast, the 
> relevant part of the original plan is as follows
> 14:LogicalFilter(condition=[NOT(<= SOME($5, {
> LogicalProject(COMM=[$6])
>   LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> }))])
>   8:LogicalTableScan(subset=[rel#13:RelSubset#0.NONE.any], table=[[CATALOG, 
> SALES, EMP]]) {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to