Mariusz Sakowski created HIVE-11375:
---------------------------------------

             Summary: Broken processing of queries containing NOT (x IS NOT 
NULL and x <> 0)
                 Key: HIVE-11375
                 URL: https://issues.apache.org/jira/browse/HIVE-11375
             Project: Hive
          Issue Type: Bug
          Components: SQL
            Reporter: Mariusz Sakowski


When running query like this:
{code}explain select * from test where (val is not null and val <> 0);{code}

hive will simplify expression in parenthesis and omit is not null check:
{code}
          Filter Operator
            predicate: (val <> 0) (type: boolean)
{code}
which is fine.

but if we negate condition using NOT operator:
{code}explain select * from test where not (val is not null and val <> 0);{code}

hive will also simplify thing, but now it will break stuff:
{code}
          Filter Operator
            predicate: (not (val <> 0)) (type: boolean)
{code}

because valid predicate should be *val == 0 or val is null*, while above row is 
equivalent to *val == 0* only, filtering away rows where val is null

simple example:
{code}
CREATE TABLE example (
    val bigint
);
INSERT INTO example VALUES (1), (NULL), (0);

-- returns 2 rows - NULL and 0
select * from example where (val is null or val == 0);
-- returns 1 row - 0
select * from example where not (val is not null and val <> 0);
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to