From: | Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Proposal: revert behavior of IS NULL on row types |
Date: | 2016-07-22 23:01:54 |
Message-ID: | 87vazxqpdb.fsf@news-spur.riddles.org.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
In light of the fact that it is an endless cause of bugs both in pg and
potentially to applications, I propose that we cease attempting to
conform to the spec's definition of IS NULL in favour of the following
rules:
1. x IS NULL is true if and only if x has the null value (isnull set).
2. x IS NOT NULL if and only if NOT (x IS NULL)
3. ROW() and other row constructors never return the null value.
Whole-row vars when constructed never contain the null value.
4. Columns or variables of composite type can (if not declared NOT NULL)
contain the null value (isnull set) which is distinct from an
all-columns-null value.
5. COALESCE(x,y) continues to return y if and only if x is the null
value. (We currently violate the spec here.)
(X. Optionally, consider adding new predicates:
x IS ALL NULL
x IS NOT ALL NULL
x IS ALL NOT NULL
x IS NOT ALL NOT NULL
which would examine the fields of x non-recursively.)
Justification:
https://www.postgresql.org/message-id/4f6a90a0-c6e8-22eb-3b7a-727f8a60f3b1%40BlueTreble.com
https://www.postgresql.org/message-id/20160708024746.1410.57282%40wrigleys.postgresql.org
Further rationale:
https://www.postgresql.org/message-id/87zip9qti4.fsf%40news-spur.riddles.org.uk
--
Andrew (irc:RhodiumToad)
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2016-07-22 23:54:24 | Re: Proposal: revert behavior of IS NULL on row types |
Previous Message | Chapman Flack | 2016-07-22 22:02:32 | AdvanceXLInsertBuffer vs. WAL segment compressibility |