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
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;