Simplify some code in getObjectTypeDescription()
authorMichael Paquier <michael@paquier.xyz>
Sat, 12 Jun 2021 07:29:11 +0000 (16:29 +0900)
committerMichael Paquier <michael@paquier.xyz>
Sat, 12 Jun 2021 07:29:11 +0000 (16:29 +0900)
This routine is designed to never return an empty description or NULL,
providing description fallbacks even if missing objects are accepted,
but it included a code path where this was considered possible.  All the
callers of this routine already consider NULL as not possible, so
change a bit the code to map with the assumptions of the callers, and
add more comments close to the callers of this routine to outline the
behavior expected.

This code is new as of 2a10fdc, so no backpatch is needed.

Discussion: https://postgr.es/m/YMNY6RGPBRCeLmFb@paquier.xyz

src/backend/catalog/objectaddress.c

index d79c3cde7c6ab4a683c61c00d9dafd783124b11b..9882e549c4e332ff2c6e881f6256b0dfdac92124 100644 (file)
@@ -4278,7 +4278,7 @@ pg_identify_object_as_address(PG_FUNCTION_ARGS)
 
    tupdesc = BlessTupleDesc(tupdesc);
 
-   /* object type */
+   /* object type, which can never be NULL */
    values[0] = CStringGetTextDatum(getObjectTypeDescription(&address, true));
    nulls[0] = false;
 
@@ -4490,9 +4490,8 @@ getObjectTypeDescription(const ObjectAddress *object, bool missing_ok)
             */
    }
 
-   /* an empty string is equivalent to no object found */
-   if (buffer.len == 0)
-       return NULL;
+   /* the result can never be empty */
+   Assert(buffer.len > 0);
 
    return buffer.data;
 }