Skip to content

Commit 502ead3

Browse files
committed
Fix pg_dump's handling of event triggers.
pg_dump with the --clean option failed to emit DROP EVENT TRIGGER commands for event triggers. In a closely related oversight, it also did not emit ALTER OWNER commands for event triggers. Since only superusers can create event triggers, the latter oversight is of little practical consequence ... but if we're going to record an owner for event triggers, then surely pg_dump should preserve it. Per complaint from Greg Atkins. Back-patch to 9.3 where event triggers were introduced. Discussion: https://postgr.es/m/20170722191142.yi4e7tzcg3iacclg@gmail.com
1 parent a648fc7 commit 502ead3

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/bin/pg_dump/pg_backup_archiver.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3093,6 +3093,7 @@ _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH)
30933093
strcmp(type, "DATABASE") == 0 ||
30943094
strcmp(type, "PROCEDURAL LANGUAGE") == 0 ||
30953095
strcmp(type, "SCHEMA") == 0 ||
3096+
strcmp(type, "EVENT TRIGGER") == 0 ||
30963097
strcmp(type, "FOREIGN DATA WRAPPER") == 0 ||
30973098
strcmp(type, "SERVER") == 0 ||
30983099
strcmp(type, "USER MAPPING") == 0)
@@ -3137,7 +3138,7 @@ _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH)
31373138
return;
31383139
}
31393140

3140-
write_msg(modulename, "WARNING: don't know how to set owner for object type %s\n",
3141+
write_msg(modulename, "WARNING: don't know how to set owner for object type \"%s\"\n",
31413142
type);
31423143
}
31433144

@@ -3294,6 +3295,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isDat
32943295
strcmp(te->desc, "OPERATOR FAMILY") == 0 ||
32953296
strcmp(te->desc, "PROCEDURAL LANGUAGE") == 0 ||
32963297
strcmp(te->desc, "SCHEMA") == 0 ||
3298+
strcmp(te->desc, "EVENT TRIGGER") == 0 ||
32973299
strcmp(te->desc, "TABLE") == 0 ||
32983300
strcmp(te->desc, "TYPE") == 0 ||
32993301
strcmp(te->desc, "VIEW") == 0 ||
@@ -3327,7 +3329,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isDat
33273329
}
33283330
else
33293331
{
3330-
write_msg(modulename, "WARNING: don't know how to set owner for object type %s\n",
3332+
write_msg(modulename, "WARNING: don't know how to set owner for object type \"%s\"\n",
33313333
te->desc);
33323334
}
33333335
}

src/bin/pg_dump/pg_dump.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14833,13 +14833,15 @@ static void
1483314833
dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo)
1483414834
{
1483514835
PQExpBuffer query;
14836+
PQExpBuffer delqry;
1483614837
PQExpBuffer labelq;
1483714838

1483814839
/* Skip if not to be dumped */
1483914840
if (!evtinfo->dobj.dump || dataOnly)
1484014841
return;
1484114842

1484214843
query = createPQExpBuffer();
14844+
delqry = createPQExpBuffer();
1484314845
labelq = createPQExpBuffer();
1484414846

1484514847
appendPQExpBufferStr(query, "CREATE EVENT TRIGGER ");
@@ -14879,19 +14881,27 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo)
1487914881
}
1488014882
appendPQExpBufferStr(query, ";\n");
1488114883
}
14884+
14885+
appendPQExpBuffer(delqry, "DROP EVENT TRIGGER %s;\n",
14886+
fmtId(evtinfo->dobj.name));
14887+
1488214888
appendPQExpBuffer(labelq, "EVENT TRIGGER %s",
1488314889
fmtId(evtinfo->dobj.name));
1488414890

1488514891
ArchiveEntry(fout, evtinfo->dobj.catId, evtinfo->dobj.dumpId,
14886-
evtinfo->dobj.name, NULL, NULL, evtinfo->evtowner, false,
14892+
evtinfo->dobj.name, NULL, NULL,
14893+
evtinfo->evtowner, false,
1488714894
"EVENT TRIGGER", SECTION_POST_DATA,
14888-
query->data, "", NULL, NULL, 0, NULL, NULL);
14895+
query->data, delqry->data, NULL,
14896+
NULL, 0,
14897+
NULL, NULL);
1488914898

1489014899
dumpComment(fout, labelq->data,
1489114900
NULL, evtinfo->evtowner,
1489214901
evtinfo->dobj.catId, 0, evtinfo->dobj.dumpId);
1489314902

1489414903
destroyPQExpBuffer(query);
14904+
destroyPQExpBuffer(delqry);
1489514905
destroyPQExpBuffer(labelq);
1489614906
}
1489714907

0 commit comments

Comments
 (0)