Re: Overlap operators for ARRAY and NULLs - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: Overlap operators for ARRAY and NULLs
Date
Msg-id 201103102116.p2ALG7N10878@momjian.us
Whole thread Raw
In response to Overlap operators for ARRAY and NULLs  (Itagaki Takahiro <itagaki.takahiro@gmail.com>)
List pgsql-hackers
I have added a link to this from the exiting TODO item:
Improve handling of NULLs in arrays    * BUG #4509: array_cat's null behaviour is inconsistent    *
http://archives.postgresql.org/pgsql-hackers/2010-11/msg01040.php
 

---------------------------------------------------------------------------

Itagaki Takahiro wrote:
> There might be inconsistency in overlap operators for array
> types ( <@, @>, and && ) when the argument arrays contain NULLs.
> 
> - SELECT 2 = ANY (ARRAY[1, NULL])   => NULL
> - SELECT ARRAY[2] <@ ARRAY[1, NULL] => false
> 
> NULL means "unknown" in definition, so should it return NULL
> rather than false?
> 
> I found the issue when I read spec of MULTISET. In the SQL
> standard, the following expression returns NULL. I was thinking
> to make SUBMULTISET OF to be an alias of <@ operator, but
> they seems to be incompatible.
> 
> - MULTISET[2] SUBMULTISET OF MULTISET[1, NULL] => NULL
> 
> Will we change the operator's behavior? It would be more
> consistent, but incompatible with older server versions.
> If impossible, I'll add separated submultiset_of() function
> instead of <@ operator for MULTISET supports.
> 
> -- 
> Itagaki Takahiro
> 
> -- 
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + It's impossible for everything to be true. +


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: plpgsql execute vs. SELECT ... INTO
Next
From: Martijn van Oosterhout
Date:
Subject: Re: FuncExpr.collid/OpExpr.collid unworkably serving double duty