From d292fb8d39d7f2fdb39f7a014393b0b1f1c26cdb Mon Sep 17 00:00:00 2001 From: Baji Shaik Date: Fri, 23 Oct 2026 10:21:00 -0500 Subject: [PATCH 1/2] Avoid crash in pg_identify_object() on a concurrently dropped schema pg_identify_object() looks up the object's schema name without a lock on the schema, so a concurrent DROP SCHEMA can make get_namespace_name() return NULL, which was then passed to quote_identifier(). Report the schema as NULL instead, as is already done for objects that have gone away. Author: Baji Shaik Backpatch-through: 14 --- src/backend/catalog/objectaddress.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index 09c9c751133..dcc267bfa70 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -4381,15 +4381,18 @@ pg_identify_object(PG_FUNCTION_ARGS) objidentity = getObjectIdentity(&address, true); /* schema name */ + nulls[1] = true; if (OidIsValid(schema_oid) && objidentity) { - const char *schema = quote_identifier(get_namespace_name(schema_oid)); + char *nspname = get_namespace_name(schema_oid); - values[1] = CStringGetTextDatum(schema); - nulls[1] = false; + /* The schema may have been dropped concurrently; report it as NULL */ + if (nspname != NULL) + { + values[1] = CStringGetTextDatum(quote_identifier(nspname)); + nulls[1] = false; + } } - else - nulls[1] = true; /* object name */ if (objname && objidentity) -- 2.54.0 (Apple Git-157)