Ignore publication tables when --no-publications is used
authorMichael Paquier <michael@paquier.xyz>
Tue, 25 Sep 2018 02:03:56 +0000 (11:03 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 25 Sep 2018 02:03:56 +0000 (11:03 +0900)
96e1cb4 has added support for --no-publications in pg_dump, pg_dumpall
and pg_restore, but forgot the fact that publication tables also need to
be ignored when this option is used.

Author: Gilles Darold
Reviewed-by: Michael Paquier
Discussion: https://postgr.es/m/3f48e812-b0fa-388e-2043-9a176bdee27e@dalibo.com
Backpatch-through: 10, where publications have been added.

src/bin/pg_dump/pg_backup_archiver.c
src/bin/pg_dump/pg_dump.c

index 7d1d439ba2878ff541e5b0d822054c5bb56127bd..d1faa70d78d94fa1da6a45024506572e88c0a469 100644 (file)
@@ -2919,8 +2919,13 @@ _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle *AH)
    if (ropt->no_comments && strcmp(te->desc, "COMMENT") == 0)
        return 0;
 
-   /* If it's a publication, maybe ignore it */
-   if (ropt->no_publications && strcmp(te->desc, "PUBLICATION") == 0)
+   /*
+    * If it's a publication or a table part of a publication, maybe ignore
+    * it.
+    */
+   if (ropt->no_publications &&
+       (strcmp(te->desc, "PUBLICATION") == 0 ||
+        strcmp(te->desc, "PUBLICATION TABLE") == 0))
        return 0;
 
    /* If it's a security label, maybe ignore it */
index 0687a819147cc71971b0d9216e501b7f66432244..c8d01ed4a4c050d902988d65afcbe4f1a82349a7 100644 (file)
@@ -3907,6 +3907,7 @@ getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables)
    PQExpBuffer query;
    PGresult   *res;
    PublicationRelInfo *pubrinfo;
+   DumpOptions *dopt = fout->dopt;
    int         i_tableoid;
    int         i_oid;
    int         i_pubname;
@@ -3914,7 +3915,7 @@ getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables)
                j,
                ntups;
 
-   if (fout->remoteVersion < 100000)
+   if (dopt->no_publications || fout->remoteVersion < 100000)
        return;
 
    query = createPQExpBuffer();