Michael Brown created IMPALA-7782:
-------------------------------------

             Summary: discrepancy in results with a subquery containing an agg 
that produces an empty set
                 Key: IMPALA-7782
                 URL: https://issues.apache.org/jira/browse/IMPALA-7782
             Project: IMPALA
          Issue Type: Bug
          Components: Frontend
    Affects Versions: Impala 2.12.0, Impala 3.1.0
            Reporter: Michael Brown


A discrepancy exists between Impala and Postgres when a subquery contains an 
agg and results in an empty set, yet the WHERE clause looking at the subquery 
should produce a "True" condition.

Example queries include:
{noformat}
USE functional;
SELECT id
FROM alltypestiny
WHERE -1 NOT IN (SELECT COUNT(id) FROM alltypestiny HAVING false);
SELECT id
FROM alltypestiny
WHERE NULL NOT IN (SELECT COUNT(id) FROM alltypestiny HAVING false);
SELECT id
FROM alltypestiny
WHERE (SELECT COUNT(id) FROM alltypestiny HAVING false) IS NULL;
{noformat}

These queries do not produce any rows in Impala. In Postgres, the queries 
produce all 8 rows for the functional.alltypestiny id column.

Thinking maybe there were Impala and Postgres differences with {{NOT IN}} 
behavior, I also tried this:

{noformat}
USE functional;
SELECT id
FROM alltypestiny
WHERE -1 NOT IN (SELECT 1 FROM alltypestiny WHERE bool_col IS NULL);
{noformat}

This subquery also produces an empty set just like the subquery in the 
problematic queries at the top, but unlike those queries, this full query 
returns the same results in Impala and Postgres (all 8 rows for the 
functional.alltypestiny id column).

For anyone interested in this bug, you can migrate data into postgres in a dev 
environment using
{noformat}
tests/comparison/data_generator.py --use-postgresql --migrate-table-names 
alltypestiny --db-name functional migrate
{noformat}

This is in 2.12 at least, so it's not a 3.1 regression.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to