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
pull/68/head
Tom Lane 4 years ago
parent 48c5c90682
commit 024515cac5
  1. 6
      src/backend/commands/event_trigger.c

@ -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);
}

Loading…
Cancel
Save