[ 
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)

Reply via email to