Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier2021-04-28 02:17:58 +0000
committerMichael Paquier2021-04-28 02:17:58 +0000
commitf7aab36d61fd2fdbd949d5880247e8cae9ee4be0 (patch)
tree92ecdf31e0a1517948cb4b09c078d7f1de4a561d /src/backend
parentfa26eba221a9e837493df47d0255ce615129e9a8 (diff)
Fix pg_identify_object_as_address() with event triggers
Attempting to use this function with event triggers failed, as, since its introduction in a676201, this code has never associated an object name with event triggers. This addresses the failure by adding the event trigger name to the set defining its object address. Note that regression tests are added within event_trigger and not object_address to avoid issues with concurrent connections in parallel schedules. Author: Joel Jacobson Discussion: https://postgr.es/m/3c905e77-a026-46ae-8835-c3f6cd1d24c8@www.fastmail.com Backpatch-through: 9.6
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/catalog/objectaddress.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 6d88b690d87..ad9740098e4 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -5607,10 +5607,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));
@@ -5622,8 +5619,10 @@ getObjectIdentityParts(const ObjectAddress *object,
break;
}
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;
}