Fix recently-introduced crash in array_contain_compare().
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 22 May 2015 22:36:48 +0000 (18:36 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 22 May 2015 22:36:48 +0000 (18:36 -0400)
Silly oversight in commit 1dc5ebc9077ab742079ce5dac9a6664248d42916:
when array2 is an expanded array, it might have array2->xpn.dnulls equal
to NULL, indicating the array is known null-free.  The code wasn't
expecting that, because it formerly always used deconstruct_array() which
always delivers a nulls array.

Per bug #13334 from Regina Obe.

src/backend/utils/adt/arrayfuncs.c

index 82d79977d7a4a37c2707a653a131bcd5be02adc6..42cdbc7d6e0d94216b39c8989234cba7272a69cd 100644 (file)
@@ -4110,7 +4110,7 @@ array_contain_compare(AnyArrayType *array1, AnyArrayType *array2, Oid collation,
                for (j = 0; j < nelems2; j++)
                {
                        Datum           elt2 = values2[j];
-                       bool            isnull2 = nulls2[j];
+                       bool            isnull2 = nulls2 ? nulls2[j] : false;
                        bool            oprresult;
 
                        if (isnull2)