Обсуждение: Overlap operators for ARRAY and NULLs
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
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. +