[ https://issues.apache.org/jira/browse/CALCITE-4050?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jinpeng Wu updated CALCITE-4050: -------------------------------- Description: 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. was: 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. > 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)