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

Commit a9d70c1

Browse files
committed
Fix pg_dump/pg_restore to restore event trigger comments later.
Repair an oversight in commit 8728b2c: if we're postponing restore of event triggers to the end, we must also postpone restoring any comments on them, since of course we cannot create the comments first. (This opens yet another opportunity for an event trigger to bollix the restore, but there's no help for that.) Per bug #16346 from Alexander Lakhin. Like the previous commit, back-patch to all supported branches. Hamid Akhtar and Tom Lane Discussion: https://postgr.es/m/16346-6210ad7a0ea81be1@postgresql.org
1 parent d140f2f commit a9d70c1

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/bin/pg_dump/pg_backup_archiver.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3085,6 +3085,18 @@ _tocEntryRestorePass(TocEntry *te)
30853085
if (strcmp(te->desc, "EVENT TRIGGER") == 0 ||
30863086
strcmp(te->desc, "MATERIALIZED VIEW DATA") == 0)
30873087
return RESTORE_PASS_POST_ACL;
3088+
3089+
/*
3090+
* Comments need to be emitted in the same pass as their parent objects.
3091+
* ACLs haven't got comments, and neither do matview data objects, but
3092+
* event triggers do. (Fortunately, event triggers haven't got ACLs, or
3093+
* we'd need yet another weird special case.)
3094+
*/
3095+
if (strcmp(te->desc, "COMMENT") == 0 &&
3096+
strncmp(te->tag, "EVENT TRIGGER ", 14) == 0)
3097+
return RESTORE_PASS_POST_ACL;
3098+
3099+
/* All else can be handled in the main pass. */
30883100
return RESTORE_PASS_MAIN;
30893101
}
30903102

0 commit comments

Comments
 (0)