fix_event_trigger_pg_identify_object_as_address2.patch

application/octet-stream

Filename: fix_event_trigger_pg_identify_object_as_address2.patch
Type: application/octet-stream
Part: 0
Message: Re: [PATCH] Re: pg_identify_object_as_address() doesn't support pg_event_trigger oids

Patch

Format: unified
File+
src/backend/catalog/objectaddress.c 2 4
src/test/regress/expected/event_trigger.out 15 0
src/test/regress/sql/event_trigger.sql 9 0
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 6d88b690d8..f827c178de 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -5608,10 +5608,6 @@ getObjectIdentityParts(const ObjectAddress *object,
 				HeapTuple	tup;
 				Form_pg_event_trigger trigForm;
 
-				/* no objname support here */
-				if (objname)
-					*objname = NIL;
-
 				tup = SearchSysCache1(EVENTTRIGGEROID,
 									  ObjectIdGetDatum(object->objectId));
 				if (!HeapTupleIsValid(tup))
@@ -5624,6 +5620,8 @@ getObjectIdentityParts(const ObjectAddress *object,
 				trigForm = (Form_pg_event_trigger) GETSTRUCT(tup);
 				appendStringInfoString(&buffer,
 									   quote_identifier(NameStr(trigForm->evtname)));
+				if (objname)
+					*objname = lappend(*objname, pstrdup(NameStr(trigForm->evtname)));
 				ReleaseSysCache(tup);
 				break;
 			}
diff --git a/src/test/regress/expected/event_trigger.out b/src/test/regress/expected/event_trigger.out
index bdd0ffcdaf..802f5ae93a 100644
--- a/src/test/regress/expected/event_trigger.out
+++ b/src/test/regress/expected/event_trigger.out
@@ -533,6 +533,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
+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
+WHERE evtname IN ('start_rls_command','end_rls_command','sql_drop_command')
+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 18b2a267cb..4fd405f770 100644
--- a/src/test/regress/sql/event_trigger.sql
+++ b/src/test/regress/sql/event_trigger.sql
@@ -426,6 +426,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;
 
+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
+WHERE evtname IN ('start_rls_command','end_rls_command','sql_drop_command')
+ORDER BY evtname;
+
 DROP EVENT TRIGGER start_rls_command;
 DROP EVENT TRIGGER end_rls_command;
 DROP EVENT TRIGGER sql_drop_command;