You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "duan xiong (Jira)" <ji...@apache.org> on 2021/09/02 12:39:00 UTC

[jira] [Updated] (CALCITE-4756) When subquery include NULL value, Calcite should return the right result

     [ https://issues.apache.org/jira/browse/CALCITE-4756?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

duan xiong updated CALCITE-4756:
--------------------------------
    Description: 
When I try to design some unit tests for CALCITE-4742. I found Calcite can't handle NULL very well in some subquery. For example:
{code:java}
select 1 in (null,1);
select 1 <> some(null);{code}
This SQL should return NULL、UNKNOWN、TRUE、FALSE. But throw NPE.

In 3-valued logic, as we know:
{code:java}
unknow and false => false
{code}
So the SQL:
{code:java}
select 1 = all(null, 2) should return false but is null.
{code}
{code:java}
select 1 = all(null, 2, 1) should return false but is true.
{code}

  was:
When I try to design some unit tests for CALCITE-4742. I found Calcite can't handle NULL very well in some subquery. For example:
{code:java}
select 1 in (null,1);
select 1 <> some(null);{code}
This SQL should return NULL、UNKNOWN、TRUE、FALSE. But throw NPE.


> When subquery include NULL value, Calcite should return the right result
> ------------------------------------------------------------------------
>
>                 Key: CALCITE-4756
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4756
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.27.0
>            Reporter: duan xiong
>            Assignee: duan xiong
>            Priority: Major
>
> When I try to design some unit tests for CALCITE-4742. I found Calcite can't handle NULL very well in some subquery. For example:
> {code:java}
> select 1 in (null,1);
> select 1 <> some(null);{code}
> This SQL should return NULL、UNKNOWN、TRUE、FALSE. But throw NPE.
> In 3-valued logic, as we know:
> {code:java}
> unknow and false => false
> {code}
> So the SQL:
> {code:java}
> select 1 = all(null, 2) should return false but is null.
> {code}
> {code:java}
> select 1 = all(null, 2, 1) should return false but is true.
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)