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)