Re: BUG #17575: row(NULL) IS NULL inconsistent with IS NOT DISTINCT FROM NULL

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: "aborschev(at)gmail(dot)com" <aborschev(at)gmail(dot)com>, "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #17575: row(NULL) IS NULL inconsistent with IS NOT DISTINCT FROM NULL
Date: 2022-08-05 13:52:42
Message-ID: CAKFQuwY-zy_8nsOMLUumwnGRTDSeF+vnhb7XKrdevKF7EN2HEg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Friday, August 5, 2022, PG Bug reporting form <noreply(at)postgresql(dot)org>
wrote:

> The following bug has been logged on the website:
>
> Bug reference: 17575
> Logged by: Alexey Borschev
> Email address: aborschev(at)gmail(dot)com
> PostgreSQL version: 14.4
> Operating system: Ubuntu
> Description:
>
> Hi, PG hackers!
> I noticed strange behavior of ROW(NULL):
> I expect, that IS NULL operator should give the same result as IS NOT
> DISTINCT FROM NULL
> similarly, IS NOT NULL operator should give the same result as IS
> DISTINCT
> FROM NULL:
>
> SELECT row(NULL::int) = row(NULL::int) AS "test= "
> , row(NULL::int) IS NULL AS IS_NULL
> , row(NULL::int) IS NOT NULL AS NOT_NULL
> , row(NULL::int) IS DISTINCT FROM NULL AS
> IS_DISTINCT_FROM_NULL
>
> , row(NULL::int) IS NOT DISTINCT FROM NULL AS
> NOT_DISTINCT_FROM_NULL
>
> test= | is_null | not_null | is_distinct_from_null |
> not_distinct_from_null
> --------+---------+----------+-----------------------+------
> ------------------
> | t | f | t | f
>
>
>
> But here row(NULL::int) IS NULL -> true, and row(NULL::int) IS NOT DISTINCT
> FROM NULL -> false !
>
>

>
>
>
Next point:
> I expected that IS NULL and IS NOT NULL operators must always return
> opposite results, but:
>
> SELECT row(NULL::int, 'Bob'::TEXT) IS NULL AS
> Row_IsNULL
> , row(NULL::int, 'Bob'::TEXT) IS NOT NULL AS
> Row_NotNULL ;
>
> row_isnull | row_notnull
> ------------+-------------
> f | f
> - They both return False on same input!
>
> Can we fix or document this PG issue?

It is documented. The paragraph just below the tip.

https://www.postgresql.org/docs/current/functions-comparison.html

David J.

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message 王海洋 2022-08-05 14:01:58 Re: [External] Re: [PATCH] BUG FIX: inconsistent page found in BRIN_REGULAR_PAGE
Previous Message Alvaro Herrera 2022-08-05 13:17:31 Re: [External] Re: [PATCH] BUG FIX: inconsistent page found in BRIN_REGULAR_PAGE