[
https://issues.apache.org/jira/browse/CALCITE-4050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17128493#comment-17128493
]
Rui Wang edited comment on CALCITE-4050 at 6/8/20, 6:06 PM:
------------------------------------------------------------
Yes it is valid. To solve it, the tricky part is to improve Mapping to allow
1->n mapping (and inverse() also handles it properly). Right now Mappings uses
a int[] as internal data structure.
was (Author: amaliujia):
Yes it is valid. To solve it, the tricky part is to improve Mapping to allow
1->n mapping (and inverse also handles it properly). Right now Mappings uses a
int[] as internal data structure.
> Traits Propagation for EnumerableMergeJoin Produces Incorrect Result
> --------------------------------------------------------------------
>
> Key: CALCITE-4050
> URL: https://issues.apache.org/jira/browse/CALCITE-4050
> Project: Calcite
> Issue Type: Bug
> Reporter: Jinpeng Wu
> Priority: Major
>
> In EnumerableMergeJoin's deriveTraits method, it uses a Map to record mapping
> from left keys to right keys (the keyMap variable). However, the left keys
> could have duplicate entries.
> One example is JdbcTest.testJoinInCorrelatedSubQuery, the expected plan is
> EnumerableProject(deptno=[$0], name=[$1], employees=[$2], location=[$3])
> EnumerableMergeJoin(condition=[AND(=($0, $5), =($0, $4))], joinType=[inner])
> EnumerableSort(sort0=[$0], dir0=[ASC])
> EnumerableTableScan(table=[[hr, depts]])
> EnumerableSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC])
> ...
> where left keys are [0, 0] , and right keys are [1, 0]. Deriving right
> child's traits may result in incorrect output.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)