BUG #4076: "IS NOT NULL (IS NULL)" return wrong answer even where all fields are NULL(or NOT NULL).

Поиск
Список
Период
Сортировка
От Tatsuhito Kasahara
Тема BUG #4076: "IS NOT NULL (IS NULL)" return wrong answer even where all fields are NULL(or NOT NULL).
Дата
Msg-id 200804010956.m319uts5022521@wwwmaster.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #4076: "IS NOT NULL (IS NULL)" return wrong answer even where all fields are NULL(or NOT NULL).  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      4076
Logged by:          Tatsuhito Kasahara
Email address:      kasahara.tatsuhito@oss.ntt.co.jp
PostgreSQL version: 8.1.11
Operating system:   Red Hat Enterprise Linux 5.1
Description:        "IS NOT NULL (IS NULL)" return wrong answer even where
all fields are NULL(or NOT NULL).
Details:

I noticed that "IS NOT NULL" and "IS NULL" return wrong answer in following
case.

=====================================================
CREATE TABLE tbl (i int, j int);
INSERT INTO  tbl VALUES (1, 2);
INSERT INTO  tbl VALUES (1, NULL);
INSERT INTO  tbl VALUES (NULL, 2);
INSERT INTO  tbl VALUES (NULL, NULL);
SELECT * FROM (SELECT * FROM tbl) AS row WHERE row IS NOT NULL;
 i | j
---+---
 1 | 2
 1 |
   | 2
   |
(4 rows)

SELECT * FROM (SELECT * FROM tbl) AS row WHERE row IS NULL;
 i | j
---+---
(0 rows)
=====================================================

Then PostgreSQL used "Filter: (ROW(i, j) IS NOT NULL)" and "Filter: (ROW(i,
j) IS NULL)".

"SELECT * FROM tbl WHERE ROW(i,j) IS NOT NULL;" and "SELECT * FROM tbl WHERE
ROW(i,j) IS NULL" seemed right action.

=====================================================
SELECT * FROM tbl WHERE ROW(i,j) IS NOT NULL;
 i | j
---+---
 1 | 2
 1 |
   | 2
(3 rows)

SELECT * FROM tbl WHERE ROW(i,j) IS NULL;
 i | j
---+---
   |
(1 row)
=====================================================

Is this a bug?

# And 8.2.x and 8.3.x seemed to be all right in the case of  action both
"(x)AS row WHERE row IS NOT NULL" and "(x) AS row WHERE row IS NULL". I
think
following fix is related..

http://archives.postgresql.org/pgsql-committers/2006-09/msg00439.php

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "uri"
Дата:
Сообщение: BUG #4075: PostgreSQL Database Server 8.2 failed to start
Следующее
От: "Ronald Prins"
Дата:
Сообщение: BUG #4077: Error 42704