summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c14
-rw-r--r--src/bin/pg_dump/t/002_pg_dump.pl44
2 files changed, 58 insertions, 0 deletions
diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c
index 058b5d659ba..d64ce19b673 100644
--- a/src/bin/pg_dump/pg_backup_archiver.c
+++ b/src/bin/pg_dump/pg_backup_archiver.c
@@ -3049,6 +3049,20 @@ _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle *AH)
return 0;
/*
+ * If it's a comment on a publication or a subscription, maybe ignore it.
+ */
+ if (strcmp(te->desc, "COMMENT") == 0)
+ {
+ if (ropt->no_publications &&
+ strncmp(te->tag, "PUBLICATION", strlen("PUBLICATION")) == 0)
+ return 0;
+
+ if (ropt->no_subscriptions &&
+ strncmp(te->tag, "SUBSCRIPTION", strlen("SUBSCRIPTION")) == 0)
+ return 0;
+ }
+
+ /*
* If it's a publication or a table part of a publication, maybe ignore
* it.
*/
diff --git a/src/bin/pg_dump/t/002_pg_dump.pl b/src/bin/pg_dump/t/002_pg_dump.pl
index e7a2d64f741..1e8c6bbf22b 100644
--- a/src/bin/pg_dump/t/002_pg_dump.pl
+++ b/src/bin/pg_dump/t/002_pg_dump.pl
@@ -650,6 +650,32 @@ my %pgdump_runs = (
'postgres',
],
},
+ no_subscriptions => {
+ dump_cmd => [
+ 'pg_dump', '--no-sync',
+ '--file' => "$tempdir/no_subscriptions.sql",
+ '--no-subscriptions',
+ '--statistics',
+ 'postgres',
+ ],
+ },
+ no_subscriptions_restore => {
+ dump_cmd => [
+ 'pg_dump', '--no-sync',
+ '--format' => 'custom',
+ '--file' => "$tempdir/no_subscriptions_restore.dump",
+ '--statistics',
+ 'postgres',
+ ],
+ restore_cmd => [
+ 'pg_restore',
+ '--format' => 'custom',
+ '--file' => "$tempdir/no_subscriptions_restore.sql",
+ '--no-subscriptions',
+ '--statistics',
+ "$tempdir/no_subscriptions_restore.dump",
+ ],
+ },
no_table_access_method => {
dump_cmd => [
'pg_dump', '--no-sync',
@@ -873,6 +899,8 @@ my %full_runs = (
no_policies => 1,
no_privs => 1,
no_statistics => 1,
+ no_subscriptions => 1,
+ no_subscriptions_restore => 1,
no_table_access_method => 1,
pg_dumpall_dbprivs => 1,
pg_dumpall_exclude => 1,
@@ -1846,6 +1874,10 @@ my %tests = (
regexp =>
qr/^COMMENT ON SUBSCRIPTION sub1 IS 'comment on subscription';/m,
like => { %full_runs, section_post_data => 1, },
+ unlike => {
+ no_subscriptions => 1,
+ no_subscriptions_restore => 1,
+ },
},
'COMMENT ON TEXT SEARCH CONFIGURATION dump_test.alt_ts_conf1' => {
@@ -3363,6 +3395,10 @@ my %tests = (
\QCREATE SUBSCRIPTION sub1 CONNECTION 'dbname=doesnotexist' PUBLICATION pub1 WITH (connect = false, slot_name = 'sub1', streaming = parallel);\E
/xm,
like => { %full_runs, section_post_data => 1, },
+ unlike => {
+ no_subscriptions => 1,
+ no_subscriptions_restore => 1,
+ },
},
'CREATE SUBSCRIPTION sub2' => {
@@ -3374,6 +3410,10 @@ my %tests = (
\QCREATE SUBSCRIPTION sub2 CONNECTION 'dbname=doesnotexist' PUBLICATION pub1 WITH (connect = false, slot_name = 'sub2', streaming = off, origin = none);\E
/xm,
like => { %full_runs, section_post_data => 1, },
+ unlike => {
+ no_subscriptions => 1,
+ no_subscriptions_restore => 1,
+ },
},
'CREATE SUBSCRIPTION sub3' => {
@@ -3385,6 +3425,10 @@ my %tests = (
\QCREATE SUBSCRIPTION sub3 CONNECTION 'dbname=doesnotexist' PUBLICATION pub1 WITH (connect = false, slot_name = 'sub3', streaming = on);\E
/xm,
like => { %full_runs, section_post_data => 1, },
+ unlike => {
+ no_subscriptions => 1,
+ no_subscriptions_restore => 1,
+ },
},