Jinfeng Ni created DRILL-5683:
---------------------------------

             Summary: Incorrect query result when query uses NOT(IS NOT NULL) 
expression 
                 Key: DRILL-5683
                 URL: https://issues.apache.org/jira/browse/DRILL-5683
             Project: Apache Drill
          Issue Type: Bug
            Reporter: Jinfeng Ni


The following repo was modified from a testcase provided by Arjun 
Rajan(ara...@mapr.com).

1. Prepare dataset with null.

{code}
create table dfs.tmp.t1 as select r_regionkey, r_name, case when 
mod(r_regionkey, 3) > 0 then mod(r_regionkey, 3) else null end as flag from 
cp.`tpch/region.parquet`;

select * from dfs.tmp.t1;
+--------------+--------------+-------+
| r_regionkey  |    r_name    | flag  |
+--------------+--------------+-------+
| 0            | AFRICA       | null  |
| 1            | AMERICA      | 1     |
| 2            | ASIA         | 2     |
| 3            | EUROPE       | null  |
| 4            | MIDDLE EAST  | 1     |
+--------------+--------------+-------+
{code}

2. Query with NOT(IS NOT NULL) expression in the filter. 
{code}
select * from dfs.tmp.t1 where NOT (flag IS NOT NULL);

+--------------+---------+-------+
| r_regionkey  | r_name  | flag  |
+--------------+---------+-------+
| 0            | AFRICA  | null  |
| 3            | EUROPE  | null  |
+--------------+---------+-------+
{code}

3. Switch run-time code compiler from default to 'JDK', and get wrong result. 
{code}
alter system set `exec.java_compiler` = 'JDK';

+-------+------------------------------+
|  ok   |           summary            |
+-------+------------------------------+
| true  | exec.java_compiler updated.  |
+-------+------------------------------+

select * from dfs.tmp.t1 where NOT (flag IS NOT NULL);
+--------------+--------------+-------+
| r_regionkey  |    r_name    | flag  |
+--------------+--------------+-------+
| 0            | AFRICA       | null  |
| 1            | AMERICA      | 1     |
| 2            | ASIA         | 2     |
| 3            | EUROPE       | null  |
| 4            | MIDDLE EAST  | 1     |
+--------------+--------------+-------+
{code}

4.  Wrong result could happen too, when NOT(IS NOT NULL) in Project operator.
{code}
select r_regionkey, r_name, NOT(flag IS NOT NULL) as exp1 from dfs.tmp.t1;
+--------------+--------------+-------+
| r_regionkey  |    r_name    | exp1  |
+--------------+--------------+-------+
| 0            | AFRICA       | true  |
| 1            | AMERICA      | true  |
| 2            | ASIA         | true  |
| 3            | EUROPE       | true  |
| 4            | MIDDLE EAST  | true  |
+--------------+--------------+-------+
{code}




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to