Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 9a6e2b1

Browse files
committed
Fix broken support for event triggers as extension members.
CREATE EVENT TRIGGER forgot to mark the event trigger as a member of its extension, and pg_dump didn't pay any attention anyway when deciding whether to dump the event trigger. Per report from Moshe Jacobson. Given the obvious lack of testing here, it's rather astonishing that ALTER EXTENSION ADD/DROP EVENT TRIGGER work, but they seem to.
1 parent 140b062 commit 9a6e2b1

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/backend/commands/event_trigger.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,10 @@ insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner,
344344
referenced.objectSubId = 0;
345345
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
346346

347-
/* Post creation hook for new operator family */
347+
/* Depend on extension, if any. */
348+
recordDependencyOnCurrentExtension(&myself, false);
349+
350+
/* Post creation hook for new event trigger */
348351
InvokeObjectPostCreateHook(EventTriggerRelationId, trigoid, 0);
349352

350353
/* Close pg_event_trigger. */

src/bin/pg_dump/pg_dump.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14125,6 +14125,10 @@ dumpSequenceData(Archive *fout, TableDataInfo *tdinfo)
1412514125
destroyPQExpBuffer(query);
1412614126
}
1412714127

14128+
/*
14129+
* dumpTrigger
14130+
* write the declaration of one user-defined table trigger
14131+
*/
1412814132
static void
1412914133
dumpTrigger(Archive *fout, TriggerInfo *tginfo)
1413014134
{
@@ -14137,6 +14141,10 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo)
1413714141
const char *p;
1413814142
int findx;
1413914143

14144+
/*
14145+
* we needn't check dobj.dump because TriggerInfo wouldn't have been
14146+
* created in the first place for non-dumpable triggers
14147+
*/
1414014148
if (dataOnly)
1414114149
return;
1414214150

@@ -14327,12 +14335,20 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo)
1432714335
destroyPQExpBuffer(labelq);
1432814336
}
1432914337

14338+
/*
14339+
* dumpEventTrigger
14340+
* write the declaration of one user-defined event trigger
14341+
*/
1433014342
static void
1433114343
dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo)
1433214344
{
1433314345
PQExpBuffer query;
1433414346
PQExpBuffer labelq;
1433514347

14348+
/* Skip if not to be dumped */
14349+
if (!evtinfo->dobj.dump || dataOnly)
14350+
return;
14351+
1433614352
query = createPQExpBuffer();
1433714353
labelq = createPQExpBuffer();
1433814354

0 commit comments

Comments
 (0)