Check for BuildIndexValueDescription returning NULL in gist_page_items
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 18 Jan 2021 12:48:43 +0000 (14:48 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 18 Jan 2021 12:48:43 +0000 (14:48 +0200)
Per Coverity. BuildIndexValueDescription() cannot actually return NULL in
this instance, because it only returns NULL if the user doesn't have the
required privileges, and this function can only be used by superuser. But
better safe than sorry.

contrib/pageinspect/gistfuncs.c

index 6e1ea04b346ad4b246987f48187e1ca77b501edf..d5da1ea839a579f2a9a51e1d3498b03335fd2705 100644 (file)
@@ -247,14 +247,20 @@ gist_page_items(PG_FUNCTION_ARGS)
                index_deform_tuple(itup, RelationGetDescr(indexRel),
                                                   itup_values, itup_isnull);
 
-               key_desc = BuildIndexValueDescription(indexRel, itup_values, itup_isnull);
-
                memset(nulls, 0, sizeof(nulls));
 
                values[0] = DatumGetInt16(offset);
                values[1] = ItemPointerGetDatum(&itup->t_tid);
                values[2] = Int32GetDatum((int) IndexTupleSize(itup));
-               values[3] = CStringGetTextDatum(key_desc);
+
+               key_desc = BuildIndexValueDescription(indexRel, itup_values, itup_isnull);
+               if (key_desc)
+                       values[3] = CStringGetTextDatum(key_desc);
+               else
+               {
+                       values[3] = (Datum) 0;
+                       nulls[3] = true;
+               }
 
                tuplestore_putvalues(tupstore, tupdesc, values, nulls);
        }