[ https://issues.apache.org/jira/browse/CALCITE-3012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated CALCITE-3012: ------------------------------------ Labels: pull-request-available (was: ) > areColumnsUnique for FULL OUTER JOIN could return wrong answer when > ignoreNulls is false > ---------------------------------------------------------------------------------------- > > Key: CALCITE-3012 > URL: https://issues.apache.org/jira/browse/CALCITE-3012 > Project: Calcite > Issue Type: Bug > Components: core > Reporter: Vineet Garg > Assignee: Vineet Garg > Priority: Major > Labels: pull-request-available > > Let's say set of columns passed to this API are join keys and there is one > NULL key coming from both the inputs. Following code will return true which > is wrong because the result of FULL. OUTER JOIN with NULL key on both side > will produce two rows with NULL. Even though this value in respective input > is unique the result of join may not be unique. > {code:java} > Boolean leftUnique = mq.areColumnsUnique(left, leftColumns, ignoreNulls); > Boolean rightUnique = mq.areColumnsUnique(right, rightColumns, > ignoreNulls); > if ((leftColumns.cardinality() > 0) > && (rightColumns.cardinality() > 0)) { > if ((leftUnique == null) || (rightUnique == null)) { > return null; > } else { > return leftUnique && rightUnique; > } > } > {code} > {code:sql} > create table trepro(i int); > insert into trepro values(null); > select * from trepro t1 full outer join trepro t2 on t1.i=t2.i; > null, null > null, null > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)