summaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorTom Lane2006-09-28 20:51:43 +0000
committerTom Lane2006-09-28 20:51:43 +0000
commitf213131f2024bcb85aea7d2a7dfadef6a0ee1b31 (patch)
tree090a85694dfd64f735732bc49b8489835186d83b /doc/src
parentd3aa4a8e33bee5e5274615cfd461aac810d7bbc1 (diff)
Fix IS NULL and IS NOT NULL tests on row-valued expressions to conform to
the SQL spec, viz IS NULL is true if all the row's fields are null, IS NOT NULL is true if all the row's fields are not null. The former coding got this right for a limited number of cases with IS NULL (ie, those where it could disassemble a ROW constructor at parse time), but was entirely wrong for IS NOT NULL. Per report from Teodor. I desisted from changing the behavior for arrays, since on closer inspection it's not clear that there's any support for that in the SQL spec. This probably needs more consideration.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/func.sgml15
1 files changed, 14 insertions, 1 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index b3fe74fe502..978309d59ea 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.340 2006/09/22 16:20:00 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.341 2006/09/28 20:51:41 tgl Exp $ -->
<chapter id="functions">
<title>Functions and Operators</title>
@@ -338,6 +338,19 @@
</para>
</tip>
+ <note>
+ <para>
+ If the <replaceable>expression</replaceable> is row-valued, then
+ <literal>IS NULL</> is true when the row expression itself is null
+ or when all the row's fields are null, while
+ <literal>IS NOT NULL</> is true when the row expression itself is non-null
+ and all the row's fields are non-null.
+ This definition conforms to the SQL standard, and is a change from the
+ inconsistent behavior exhibited by <productname>PostgreSQL</productname>
+ versions prior to 8.2.
+ </para>
+ </note>
+
<para>
<indexterm>
<primary>IS DISTINCT FROM</primary>