In event triggers, use "pg_temp" only for our own temp schema.

pg_event_trigger_ddl_commands used "pg_temp" to refer to any
temp schema, not only that of the current backend.  This seems
like overreach.  It's somewhat unlikely that DDL commands would
refer to temp objects of other sessions to begin with, but if they
do, "pg_temp" would be a most misleading way to display the action.

While this seems like a bug, it's not quite out of the realm of
possibility that somebody out there is expecting the current
behavior.  Hence, fix in HEAD, but don't back-patch.

Discussion: https://postgr.es/m/CAAJ_b97W=QaGmag9AhWNbmx3uEYsNkXWL+OVW1_E1D3BtgWvtw@mail.gmail.com
This commit is contained in:
Tom Lane 2021-07-27 12:08:20 -04:00
parent 48c5c90682
commit 024515cac5
1 changed files with 1 additions and 5 deletions

View File

@ -1982,11 +1982,7 @@ pg_event_trigger_ddl_commands(PG_FUNCTION_ARGS)
elog(ERROR,
"invalid null namespace in object %u/%u/%d",
addr.classId, addr.objectId, addr.objectSubId);
/* XXX not quite get_namespace_name_or_temp */
if (isAnyTempNamespace(schema_oid))
schema = pstrdup("pg_temp");
else
schema = get_namespace_name(schema_oid);
schema = get_namespace_name_or_temp(schema_oid);
table_close(catalog, AccessShareLock);
}