Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit82ebda7

Browse files
committed
Fix pg_dump's handling of event triggers.
pg_dump with the --clean option failed to emit DROP EVENT TRIGGERcommands 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 oversightis of little practical consequence ... but if we're going to recordan owner for event triggers, then surely pg_dump should preserve it.Per complaint from Greg Atkins. Back-patch to 9.3 where event triggerswere introduced.Discussion:https://postgr.es/m/20170722191142.yi4e7tzcg3iacclg@gmail.com
1 parent73fbf3d commit82ebda7

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

‎src/bin/pg_dump/pg_backup_archiver.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3267,6 +3267,7 @@ _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH)
32673267
strcmp(type,"DATABASE")==0||
32683268
strcmp(type,"PROCEDURAL LANGUAGE")==0||
32693269
strcmp(type,"SCHEMA")==0||
3270+
strcmp(type,"EVENT TRIGGER")==0||
32703271
strcmp(type,"FOREIGN DATA WRAPPER")==0||
32713272
strcmp(type,"SERVER")==0||
32723273
strcmp(type,"USER MAPPING")==0)
@@ -3311,7 +3312,7 @@ _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH)
33113312
return;
33123313
}
33133314

3314-
write_msg(modulename,"WARNING: don't know how to set owner for object type%s\n",
3315+
write_msg(modulename,"WARNING: don't know how to set owner for object type\"%s\"\n",
33153316
type);
33163317
}
33173318

@@ -3470,6 +3471,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass)
34703471
strcmp(te->desc,"OPERATOR FAMILY")==0||
34713472
strcmp(te->desc,"PROCEDURAL LANGUAGE")==0||
34723473
strcmp(te->desc,"SCHEMA")==0||
3474+
strcmp(te->desc,"EVENT TRIGGER")==0||
34733475
strcmp(te->desc,"TABLE")==0||
34743476
strcmp(te->desc,"TYPE")==0||
34753477
strcmp(te->desc,"VIEW")==0||
@@ -3505,7 +3507,7 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, bool isData, bool acl_pass)
35053507
}
35063508
else
35073509
{
3508-
write_msg(modulename,"WARNING: don't know how to set owner for object type%s\n",
3510+
write_msg(modulename,"WARNING: don't know how to set owner for object type\"%s\"\n",
35093511
te->desc);
35103512
}
35113513
}

‎src/bin/pg_dump/pg_dump.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16978,13 +16978,15 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo)
1697816978
{
1697916979
DumpOptions *dopt = fout->dopt;
1698016980
PQExpBuffer query;
16981+
PQExpBuffer delqry;
1698116982
PQExpBuffer labelq;
1698216983

1698316984
/* Skip if not to be dumped */
1698416985
if (!evtinfo->dobj.dump || dopt->dataOnly)
1698516986
return;
1698616987

1698716988
query = createPQExpBuffer();
16989+
delqry = createPQExpBuffer();
1698816990
labelq = createPQExpBuffer();
1698916991

1699016992
appendPQExpBufferStr(query, "CREATE EVENT TRIGGER ");
@@ -17024,21 +17026,29 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo)
1702417026
}
1702517027
appendPQExpBufferStr(query, ";\n");
1702617028
}
17029+
17030+
appendPQExpBuffer(delqry, "DROP EVENT TRIGGER %s;\n",
17031+
fmtId(evtinfo->dobj.name));
17032+
1702717033
appendPQExpBuffer(labelq, "EVENT TRIGGER %s",
1702817034
fmtId(evtinfo->dobj.name));
1702917035

1703017036
if (evtinfo->dobj.dump & DUMP_COMPONENT_DEFINITION)
1703117037
ArchiveEntry(fout, evtinfo->dobj.catId, evtinfo->dobj.dumpId,
17032-
evtinfo->dobj.name, NULL, NULL, evtinfo->evtowner, false,
17038+
evtinfo->dobj.name, NULL, NULL,
17039+
evtinfo->evtowner, false,
1703317040
"EVENT TRIGGER", SECTION_POST_DATA,
17034-
query->data, "", NULL, NULL, 0, NULL, NULL);
17041+
query->data, delqry->data, NULL,
17042+
NULL, 0,
17043+
NULL, NULL);
1703517044

1703617045
if (evtinfo->dobj.dump & DUMP_COMPONENT_COMMENT)
1703717046
dumpComment(fout, labelq->data,
1703817047
NULL, evtinfo->evtowner,
1703917048
evtinfo->dobj.catId, 0, evtinfo->dobj.dumpId);
1704017049

1704117050
destroyPQExpBuffer(query);
17051+
destroyPQExpBuffer(delqry);
1704217052
destroyPQExpBuffer(labelq);
1704317053
}
1704417054

‎src/bin/pg_dump/t/002_pg_dump.pl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -516,18 +516,19 @@
516516
only_dump_test_table=> 1,
517517
test_schema_plus_blobs=> 1, }, },
518518

519-
# catch-all for ALTER ... OWNER (exceptLARGE OBJECTs)
520-
'ALTER ... OWNER commands (exceptLARGE OBJECTs)'=> {
521-
regexp=>qr/^ALTER (?!LARGE OBJECT)(.*) OWNER TO .*;/m,
519+
# catch-all for ALTER ... OWNER (exceptpost-data objects)
520+
'ALTER ... OWNER commands (exceptpost-data objects)'=> {
521+
regexp=>qr/^ALTER (?!EVENT TRIGGER|LARGE OBJECT)(.*) OWNER TO .*;/m,
522522
like=> {},# use more-specific options above
523523
unlike=> {
524524
column_inserts=> 1,
525525
data_only=> 1,
526-
section_data=> 1, }, },
526+
section_data=> 1,
527+
section_post_data=> 1, }, },
527528

528-
# catch-all for ALTER TABLE ...
529+
# catch-all for ALTER TABLE ... (except OWNER TO)
529530
'ALTER TABLE ... commands'=> {
530-
regexp=>qr/^ALTER TABLE .*;/m,
531+
regexp=>qr/^ALTER TABLE .* (?!OWNER TO)(.*);/m,
531532
like=> {},# use more-specific options above
532533
unlike=> {
533534
column_inserts=> 1,
@@ -543,8 +544,7 @@
543544
unlike=> {
544545
no_owner=> 1,
545546
pg_dumpall_globals=> 1,
546-
pg_dumpall_globals_clean=> 1,
547-
section_post_data=> 1, }, },
547+
pg_dumpall_globals_clean=> 1, }, },
548548

549549
#'BLOB load (contents are of test_table)' => {
550550
#create_order => 14,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp