BUG #2961: NULL values in subselects force NOT IN to false - Mailing list pgsql-bugs

From Aaron Logue
Subject BUG #2961: NULL values in subselects force NOT IN to false
Date
Msg-id 200702021901.l12J1Nip094976@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #2961: NULL values in subselects force NOT IN to false  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
List pgsql-bugs
The following bug has been logged online:

Bug reference:      2961
Logged by:          Aaron Logue
Email address:      gyro@cryogenius.com
PostgreSQL version: 8.2.1
Operating system:   Linux (various flavors)
Description:        NULL values in subselects force NOT IN to false
Details:

SELECT X FROM (SELECT 42 AS X) AS FOO WHERE X NOT IN (7,NULL);

returns 0 rows.  Shouldn't "X NOT IN (7,NULL)" be
true if X is neither 7 nor NULL?  Removing the NULL causes the row to be
returned.

Here's a form of the problem using normal tables:

CREATE TABLE test1 (
   test_id            numeric(28,0)
);
CREATE TABLE test2 (
   test_id            numeric(28,0)
);
INSERT INTO test1 (test_id) VALUES (1);
INSERT INTO test2 (test_id) VALUES (2);
INSERT INTO test2 (test_id) VALUES (NULL);
SELECT test_id FROM test1 WHERE test_id NOT IN (SELECT test_id FROM test2);

will return 0 rows.  Deleting the null field from test2 or updating
test2.test_id to a non-null value will cause it to behave as expected.

pgsql-bugs by date:

Previous
From: "Dave Claes"
Date:
Subject: BUG #2960: missing string replace function ODBC driver
Next
From: "Gary Chambers"
Date:
Subject: BUG #2962: 8.2.1 lo_creat Documentation incorrect?