diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index c3f21d371af..f9a8270f959 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -4673,10 +4673,7 @@ getObjectIdentityParts(const ObjectAddress *object, { HeapTuple tup; Form_pg_event_trigger trigForm; - - /* no objname support here */ - if (objname) - *objname = NIL; + char *evtname; tup = SearchSysCache1(EVENTTRIGGEROID, ObjectIdGetDatum(object->objectId)); @@ -4684,8 +4681,10 @@ getObjectIdentityParts(const ObjectAddress *object, elog(ERROR, "cache lookup failed for event trigger %u", object->objectId); trigForm = (Form_pg_event_trigger) GETSTRUCT(tup); - appendStringInfoString(&buffer, - quote_identifier(NameStr(trigForm->evtname))); + evtname = NameStr(trigForm->evtname); + appendStringInfoString(&buffer, quote_identifier(evtname)); + if (objname) + *objname = list_make1(evtname); ReleaseSysCache(tup); break; } diff --git a/src/test/regress/expected/event_trigger.out b/src/test/regress/expected/event_trigger.out index f602163027b..88c5ec3c8ed 100644 --- a/src/test/regress/expected/event_trigger.out +++ b/src/test/regress/expected/event_trigger.out @@ -458,6 +458,21 @@ DROP POLICY p2 ON event_trigger_test; NOTICE: DROP POLICY - ddl_command_start NOTICE: DROP POLICY - sql_drop NOTICE: DROP POLICY - ddl_command_end +-- Check the object addresses of all the event triggers. +SELECT + evtname, + pg_describe_object('pg_event_trigger'::regclass, oid, 0), + pg_identify_object('pg_event_trigger'::regclass, oid, 0), + pg_identify_object_as_address('pg_event_trigger'::regclass, oid, 0) + FROM pg_event_trigger + ORDER BY evtname; + evtname | pg_describe_object | pg_identify_object | pg_identify_object_as_address +-------------------+---------------------------------+--------------------------------------------------------+------------------------------------------ + end_rls_command | event trigger end_rls_command | ("event trigger",,end_rls_command,end_rls_command) | ("event trigger",{end_rls_command},{}) + sql_drop_command | event trigger sql_drop_command | ("event trigger",,sql_drop_command,sql_drop_command) | ("event trigger",{sql_drop_command},{}) + start_rls_command | event trigger start_rls_command | ("event trigger",,start_rls_command,start_rls_command) | ("event trigger",{start_rls_command},{}) +(3 rows) + DROP EVENT TRIGGER start_rls_command; DROP EVENT TRIGGER end_rls_command; DROP EVENT TRIGGER sql_drop_command; diff --git a/src/test/regress/sql/event_trigger.sql b/src/test/regress/sql/event_trigger.sql index c8eb747d92d..4453843fa55 100644 --- a/src/test/regress/sql/event_trigger.sql +++ b/src/test/regress/sql/event_trigger.sql @@ -378,6 +378,15 @@ ALTER POLICY p1 ON event_trigger_test USING (TRUE); ALTER POLICY p1 ON event_trigger_test RENAME TO p2; DROP POLICY p2 ON event_trigger_test; +-- Check the object addresses of all the event triggers. +SELECT + evtname, + pg_describe_object('pg_event_trigger'::regclass, oid, 0), + pg_identify_object('pg_event_trigger'::regclass, oid, 0), + pg_identify_object_as_address('pg_event_trigger'::regclass, oid, 0) + FROM pg_event_trigger + ORDER BY evtname; + DROP EVENT TRIGGER start_rls_command; DROP EVENT TRIGGER end_rls_command; DROP EVENT TRIGGER sql_drop_command;