Thread: BUG #3937: timestamp null value comparison in subquery using IN/NOT IN

BUG #3937: timestamp null value comparison in subquery using IN/NOT IN

From
"Jan Mate"
Date:
The following bug has been logged online:

Bug reference:      3937
Logged by:          Jan Mate
Email address:      mate@yeea.eu
PostgreSQL version: 8.2.6
Operating system:   Linux & Mac OS X
Description:        timestamp null value comparison in subquery using IN/NOT
IN
Details:

Comparison between null and timestamp null value is not correct.

Try this example:

CREATE TABLE _test ("timestamp" timestamp);
INSERT INTO _test (timestamp) VALUES (null);

SELECT 1 WHERE (null) NOT IN (SELECT * FROM _test);
 ?column?
----------
(0 rows)

SELECT 1 WHERE (null) IN (SELECT * FROM _test);
 ?column?
----------
(0 rows)

Is there any other way to compare the subquery result (using IN or NOT IN)
with null value?

Re: BUG #3937: timestamp null value comparison in subquery using IN/NOT IN

From
Tom Lane
Date:
"Jan Mate" <mate@yeea.eu> writes:
> Comparison between null and timestamp null value is not correct.

No, it's your expectations that are not correct.  Null is not "equal to"
null --- in fact both the queries you show will evaluate the WHERE
clause as null (unknown).

> Is there any other way to compare the subquery result (using IN or NOT IN)
> with null value?

Don't try to use null as a normal data value.  Sooner or later you'll
always regret it.

            regards, tom lane