diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 94f1f32558..7a5851e4c5 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -3847,11 +3847,16 @@ getPublications(Archive *fout, int *numPublications) static void dumpPublication(Archive *fout, const PublicationInfo *pubinfo) { + DumpOptions *dopt = fout->dopt; PQExpBuffer delq; PQExpBuffer query; char *qpubname; bool first = true; + /* Do nothing in data-only dump */ + if (dopt->dataOnly) + return; + delq = createPQExpBuffer(); query = createPQExpBuffer(); @@ -4112,12 +4117,14 @@ getPublicationTables(Archive *fout, TableInfo tblinfo[], int numTables) static void dumpPublicationNamespace(Archive *fout, const PublicationSchemaInfo *pubsinfo) { + DumpOptions *dopt = fout->dopt; NamespaceInfo *schemainfo = pubsinfo->pubschema; PublicationInfo *pubinfo = pubsinfo->publication; PQExpBuffer query; char *tag; - if (!(pubsinfo->dobj.dump & DUMP_COMPONENT_DEFINITION)) + /* Do nothing in data-only dump */ + if (dopt->dataOnly) return; tag = psprintf("%s %s", pubinfo->dobj.name, schemainfo->dobj.name); @@ -4131,13 +4138,16 @@ dumpPublicationNamespace(Archive *fout, const PublicationSchemaInfo *pubsinfo) * There is no point in creating drop query as the drop is done by schema * drop. */ - ArchiveEntry(fout, pubsinfo->dobj.catId, pubsinfo->dobj.dumpId, - ARCHIVE_OPTS(.tag = tag, - .namespace = schemainfo->dobj.name, - .owner = pubinfo->rolname, - .description = "PUBLICATION TABLES IN SCHEMA", - .section = SECTION_POST_DATA, - .createStmt = query->data)); + if (pubsinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) + ArchiveEntry(fout, pubsinfo->dobj.catId, pubsinfo->dobj.dumpId, + ARCHIVE_OPTS(.tag = tag, + .namespace = schemainfo->dobj.name, + .owner = pubinfo->rolname, + .description = "PUBLICATION TABLES IN SCHEMA", + .section = SECTION_POST_DATA, + .createStmt = query->data)); + + /* These objects can't currently have comments or seclabels */ free(tag); destroyPQExpBuffer(query); @@ -4150,11 +4160,16 @@ dumpPublicationNamespace(Archive *fout, const PublicationSchemaInfo *pubsinfo) static void dumpPublicationTable(Archive *fout, const PublicationRelInfo *pubrinfo) { + DumpOptions *dopt = fout->dopt; PublicationInfo *pubinfo = pubrinfo->publication; TableInfo *tbinfo = pubrinfo->pubtable; PQExpBuffer query; char *tag; + /* Do nothing in data-only dump */ + if (dopt->dataOnly) + return; + tag = psprintf("%s %s", pubinfo->dobj.name, tbinfo->dobj.name); query = createPQExpBuffer(); @@ -4180,6 +4195,8 @@ dumpPublicationTable(Archive *fout, const PublicationRelInfo *pubrinfo) .section = SECTION_POST_DATA, .createStmt = query->data)); + /* These objects can't currently have comments or seclabels */ + free(tag); destroyPQExpBuffer(query); } @@ -4339,6 +4356,7 @@ getSubscriptions(Archive *fout) static void dumpSubscription(Archive *fout, const SubscriptionInfo *subinfo) { + DumpOptions *dopt = fout->dopt; PQExpBuffer delq; PQExpBuffer query; PQExpBuffer publications; @@ -4348,6 +4366,10 @@ dumpSubscription(Archive *fout, const SubscriptionInfo *subinfo) int i; char two_phase_disabled[] = {LOGICALREP_TWOPHASE_STATE_DISABLED, '\0'}; + /* Do nothing in data-only dump */ + if (dopt->dataOnly) + return; + delq = createPQExpBuffer(); query = createPQExpBuffer();