From e81ab8f266002793274e3c6b6ecfe2f8219f0330 Mon Sep 17 00:00:00 2001 From: erthalion <9erthalion6@gmail.com> Date: Wed, 23 Jan 2019 14:58:33 +0100 Subject: [PATCH] ArchiveOpts structure ArchiveEntry function has some number of arguments, that can be considered as optional. Refactor out arguments for ArchiveEntry into ArchiveOpts structure, to make it more flexible for changes. --- src/bin/pg_dump/pg_backup_archiver.c | 49 +- src/bin/pg_dump/pg_backup_archiver.h | 29 +- src/bin/pg_dump/pg_dump.c | 1085 ++++++++++++++++++---------------- 3 files changed, 624 insertions(+), 539 deletions(-) diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 2c2f6fb4a9..48a0eee7f6 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -1066,17 +1066,8 @@ WriteData(Archive *AHX, const void *data, size_t dLen) /* Public */ TocEntry * -ArchiveEntry(Archive *AHX, - CatalogId catalogId, DumpId dumpId, - const char *tag, - const char *namespace, - const char *tablespace, - const char *owner, - const char *desc, teSection section, - const char *defn, - const char *dropStmt, const char *copyStmt, - const DumpId *deps, int nDeps, - DataDumperPtr dumpFn, void *dumpArg) +ArchiveEntry(Archive *AHX, CatalogId catalogId, + DumpId dumpId, ArchiveOpts *opts) { ArchiveHandle *AH = (ArchiveHandle *) AHX; TocEntry *newToc; @@ -1094,22 +1085,22 @@ ArchiveEntry(Archive *AHX, newToc->catalogId = catalogId; newToc->dumpId = dumpId; - newToc->section = section; - - newToc->tag = pg_strdup(tag); - newToc->namespace = namespace ? pg_strdup(namespace) : NULL; - newToc->tablespace = tablespace ? pg_strdup(tablespace) : NULL; - newToc->owner = pg_strdup(owner); - newToc->desc = pg_strdup(desc); - newToc->defn = pg_strdup(defn); - newToc->dropStmt = pg_strdup(dropStmt); - newToc->copyStmt = copyStmt ? pg_strdup(copyStmt) : NULL; - - if (nDeps > 0) + newToc->section = opts->section; + + newToc->tag = pg_strdup(opts->tag); + newToc->namespace = opts->namespace ? pg_strdup(opts->namespace) : NULL; + newToc->tablespace = opts->tablespace ? pg_strdup(opts->tablespace) : NULL; + newToc->owner = opts->owner ? pg_strdup(opts->owner) : ""; + newToc->desc = pg_strdup(opts->desc); + newToc->defn = opts->defn ? pg_strdup(opts->defn) : ""; + newToc->dropStmt = opts->dropStmt ? pg_strdup(opts->dropStmt) : ""; + newToc->copyStmt = opts->copyStmt ? pg_strdup(opts->copyStmt) : NULL; + + if (opts->nDeps > 0) { - newToc->dependencies = (DumpId *) pg_malloc(nDeps * sizeof(DumpId)); - memcpy(newToc->dependencies, deps, nDeps * sizeof(DumpId)); - newToc->nDeps = nDeps; + newToc->dependencies = (DumpId *) pg_malloc(opts->nDeps * sizeof(DumpId)); + memcpy(newToc->dependencies, opts->deps, opts->nDeps * sizeof(DumpId)); + newToc->nDeps = opts->nDeps; } else { @@ -1117,9 +1108,9 @@ ArchiveEntry(Archive *AHX, newToc->nDeps = 0; } - newToc->dataDumper = dumpFn; - newToc->dataDumperArg = dumpArg; - newToc->hadDumper = dumpFn ? true : false; + newToc->dataDumper = opts->dumpFn; + newToc->dataDumperArg = opts->dumpArg; + newToc->hadDumper = opts->dumpFn ? true : false; newToc->formatData = NULL; newToc->dataLength = 0; diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h index 306d2ceba9..e484683dcf 100644 --- a/src/bin/pg_dump/pg_backup_archiver.h +++ b/src/bin/pg_dump/pg_backup_archiver.h @@ -405,17 +405,26 @@ extern void on_exit_close_archive(Archive *AHX); extern void warn_or_exit_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt,...) pg_attribute_printf(3, 4); +typedef struct +{ + const char *tag; + const char *namespace; + const char *tablespace; + const char *owner; + const char *desc; + teSection section; + const char *defn; + const char *dropStmt; + const char *copyStmt; + const DumpId *deps; + int nDeps; + DataDumperPtr dumpFn; + void *dumpArg; +} ArchiveOpts; + /* Called to add a TOC entry */ -extern TocEntry *ArchiveEntry(Archive *AHX, - CatalogId catalogId, DumpId dumpId, - const char *tag, - const char *namespace, const char *tablespace, - const char *owner, - const char *desc, teSection section, - const char *defn, - const char *dropStmt, const char *copyStmt, - const DumpId *deps, int nDeps, - DataDumperPtr dumpFn, void *dumpArg); +extern TocEntry *ArchiveEntry(Archive *AHX, CatalogId catalogId, + DumpId dumpId, ArchiveOpts *opts); extern void WriteTOC(ArchiveHandle *AH); extern void ReadTOC(ArchiveHandle *AH); diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 2b1a94733b..6c639bb096 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -2135,12 +2135,18 @@ dumpTableData(Archive *fout, TableDataInfo *tdinfo) TocEntry *te; te = ArchiveEntry(fout, tdinfo->dobj.catId, tdinfo->dobj.dumpId, - tbinfo->dobj.name, tbinfo->dobj.namespace->dobj.name, - NULL, tbinfo->rolname, - "TABLE DATA", SECTION_DATA, - "", "", copyStmt, - &(tbinfo->dobj.dumpId), 1, - dumpFn, tdinfo); + &(ArchiveOpts){ + .tag = tbinfo->dobj.name, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "TABLE DATA", + .section = SECTION_DATA, + .copyStmt = copyStmt, + .deps = &(tbinfo->dobj.dumpId), + .nDeps = 1, + .dumpFn = dumpFn, + .dumpArg = tdinfo, + }); /* * Set the TocEntry's dataLength in case we are doing a parallel dump @@ -2184,19 +2190,16 @@ refreshMatViewData(Archive *fout, TableDataInfo *tdinfo) ArchiveEntry(fout, tdinfo->dobj.catId, /* catalog ID */ tdinfo->dobj.dumpId, /* dump ID */ - tbinfo->dobj.name, /* Name */ - tbinfo->dobj.namespace->dobj.name, /* Namespace */ - NULL, /* Tablespace */ - tbinfo->rolname, /* Owner */ - "MATERIALIZED VIEW DATA", /* Desc */ - SECTION_POST_DATA, /* Section */ - q->data, /* Create */ - "", /* Del */ - NULL, /* Copy */ - tdinfo->dobj.dependencies, /* Deps */ - tdinfo->dobj.nDeps, /* # Deps */ - NULL, /* Dumper */ - NULL); /* Dumper Arg */ + &(ArchiveOpts){ + .tag = tbinfo->dobj.name, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "MATERIALIZED VIEW DATA", + .section = SECTION_POST_DATA, + .defn = q->data, + .deps = tdinfo->dobj.dependencies, + .nDeps = tdinfo->dobj.nDeps, + }); destroyPQExpBuffer(q); } @@ -2722,19 +2725,14 @@ dumpDatabase(Archive *fout) ArchiveEntry(fout, dbCatId, /* catalog ID */ dbDumpId, /* dump ID */ - datname, /* Name */ - NULL, /* Namespace */ - NULL, /* Tablespace */ - dba, /* Owner */ - "DATABASE", /* Desc */ - SECTION_PRE_DATA, /* Section */ - creaQry->data, /* Create */ - delQry->data, /* Del */ - NULL, /* Copy */ - NULL, /* Deps */ - 0, /* # Deps */ - NULL, /* Dumper */ - NULL); /* Dumper Arg */ + &(ArchiveOpts){ + .tag = datname, + .owner = dba, + .desc = "DATABASE", + .section = SECTION_PRE_DATA, + .defn = creaQry->data, + .dropStmt = delQry->data, + }); /* Compute correct tag for archive entry */ appendPQExpBuffer(labelq, "DATABASE %s", qdatname); @@ -2762,11 +2760,15 @@ dumpDatabase(Archive *fout) appendPQExpBufferStr(dbQry, ";\n"); ArchiveEntry(fout, nilCatalogId, createDumpId(), - labelq->data, NULL, NULL, dba, - "COMMENT", SECTION_NONE, - dbQry->data, "", NULL, - &(dbDumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = labelq->data, + .owner = dba, + .desc = "COMMENT", + .section = SECTION_NONE, + .defn = dbQry->data, + .deps = &(dbDumpId), + .nDeps = 1, + }); } } else @@ -2789,11 +2791,15 @@ dumpDatabase(Archive *fout) emitShSecLabels(conn, shres, seclabelQry, "DATABASE", datname); if (seclabelQry->len > 0) ArchiveEntry(fout, nilCatalogId, createDumpId(), - labelq->data, NULL, NULL, dba, - "SECURITY LABEL", SECTION_NONE, - seclabelQry->data, "", NULL, - &(dbDumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = labelq->data, + .owner = dba, + .desc = "SECURITY LABEL", + .section = SECTION_NONE, + .defn = seclabelQry->data, + .deps = &(dbDumpId), + .nDeps = 1, + }); destroyPQExpBuffer(seclabelQry); PQclear(shres); } @@ -2859,11 +2865,15 @@ dumpDatabase(Archive *fout) if (creaQry->len > 0) ArchiveEntry(fout, nilCatalogId, createDumpId(), - datname, NULL, NULL, dba, - "DATABASE PROPERTIES", SECTION_PRE_DATA, - creaQry->data, delQry->data, NULL, - &(dbDumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = datname, + .owner = dba, + .desc = "DATABASE PROPERTIES", + .section = SECTION_PRE_DATA, + .defn = creaQry->data, + .dropStmt = delQry->data, + .deps = &(dbDumpId), + }); /* * pg_largeobject comes from the old system intact, so set its @@ -2904,11 +2914,12 @@ dumpDatabase(Archive *fout) atooid(PQgetvalue(lo_res, 0, i_relminmxid)), LargeObjectRelationId); ArchiveEntry(fout, nilCatalogId, createDumpId(), - "pg_largeobject", NULL, NULL, "", - "pg_largeobject", SECTION_PRE_DATA, - loOutQry->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = "pg_largeobject", + .desc = "pg_largeobject", + .section = SECTION_PRE_DATA, + .defn = loOutQry->data, + }); PQclear(lo_res); @@ -3014,11 +3025,12 @@ dumpEncoding(Archive *AH) appendPQExpBufferStr(qry, ";\n"); ArchiveEntry(AH, nilCatalogId, createDumpId(), - "ENCODING", NULL, NULL, "", - "ENCODING", SECTION_PRE_DATA, - qry->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = "ENCODING", + .desc = "ENCODING", + .section = SECTION_PRE_DATA, + .defn = qry->data, + }); destroyPQExpBuffer(qry); } @@ -3041,11 +3053,12 @@ dumpStdStrings(Archive *AH) stdstrings); ArchiveEntry(AH, nilCatalogId, createDumpId(), - "STDSTRINGS", NULL, NULL, "", - "STDSTRINGS", SECTION_PRE_DATA, - qry->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = "STDSTRINGS", + .desc = "STDSTRINGS", + .section = SECTION_PRE_DATA, + .defn = qry->data, + }); destroyPQExpBuffer(qry); } @@ -3097,11 +3110,12 @@ dumpSearchPath(Archive *AH) write_msg(NULL, "saving search_path = %s\n", path->data); ArchiveEntry(AH, nilCatalogId, createDumpId(), - "SEARCHPATH", NULL, NULL, "", - "SEARCHPATH", SECTION_PRE_DATA, - qry->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = "SEARCHPATH", + .desc = "SEARCHPATH", + .section = SECTION_PRE_DATA, + .defn = qry->data, + }); /* Also save it in AH->searchpath, in case we're doing plain text dump */ AH->searchpath = pg_strdup(qry->data); @@ -3273,13 +3287,14 @@ dumpBlob(Archive *fout, BlobInfo *binfo) if (binfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, binfo->dobj.catId, binfo->dobj.dumpId, - binfo->dobj.name, - NULL, NULL, - binfo->rolname, - "BLOB", SECTION_PRE_DATA, - cquery->data, dquery->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = binfo->dobj.name, + .owner = binfo->rolname, + .desc = "BLOB", + .section = SECTION_PRE_DATA, + .defn = cquery->data, + .dropStmt = dquery->data, + }); /* Dump comment if any */ if (binfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -3577,14 +3592,16 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) */ if (polinfo->dobj.dump & DUMP_COMPONENT_POLICY) ArchiveEntry(fout, polinfo->dobj.catId, polinfo->dobj.dumpId, - polinfo->dobj.name, - polinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "ROW SECURITY", SECTION_POST_DATA, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = polinfo->dobj.name, + .namespace = polinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "ROW SECURITY", + .section = SECTION_POST_DATA, + .defn = query->data, + .deps = &(tbinfo->dobj.dumpId), + .nDeps = 1, + }); destroyPQExpBuffer(query); return; @@ -3633,14 +3650,15 @@ dumpPolicy(Archive *fout, PolicyInfo *polinfo) if (polinfo->dobj.dump & DUMP_COMPONENT_POLICY) ArchiveEntry(fout, polinfo->dobj.catId, polinfo->dobj.dumpId, - tag, - polinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "POLICY", SECTION_POST_DATA, - query->data, delqry->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = polinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "POLICY", + .section = SECTION_POST_DATA, + .defn = query->data, + .dropStmt = delqry->data, + }); free(tag); destroyPQExpBuffer(query); @@ -3807,14 +3825,14 @@ dumpPublication(Archive *fout, PublicationInfo *pubinfo) appendPQExpBufferStr(query, "');\n"); ArchiveEntry(fout, pubinfo->dobj.catId, pubinfo->dobj.dumpId, - pubinfo->dobj.name, - NULL, - NULL, - pubinfo->rolname, - "PUBLICATION", SECTION_POST_DATA, - query->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = pubinfo->dobj.name, + .owner = pubinfo->rolname, + .desc = "PUBLICATION", + .section = SECTION_POST_DATA, + .defn = query->data, + .dropStmt = delq->data, + }); if (pubinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, "PUBLICATION", qpubname, @@ -3950,14 +3968,13 @@ dumpPublicationTable(Archive *fout, PublicationRelInfo *pubrinfo) * done by table drop. */ ArchiveEntry(fout, pubrinfo->dobj.catId, pubrinfo->dobj.dumpId, - tag, - tbinfo->dobj.namespace->dobj.name, - NULL, - "", - "PUBLICATION TABLE", SECTION_POST_DATA, - query->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tbinfo->dobj.namespace->dobj.name, + .desc = "PUBLICATION TABLE", + .section = SECTION_POST_DATA, + .defn = query->data, + }); free(tag); destroyPQExpBuffer(query); @@ -4143,14 +4160,14 @@ dumpSubscription(Archive *fout, SubscriptionInfo *subinfo) appendPQExpBufferStr(query, ");\n"); ArchiveEntry(fout, subinfo->dobj.catId, subinfo->dobj.dumpId, - subinfo->dobj.name, - NULL, - NULL, - subinfo->rolname, - "SUBSCRIPTION", SECTION_POST_DATA, - query->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = subinfo->dobj.name, + .owner = subinfo->rolname, + .desc = "SUBSCRIPTION", + .section = SECTION_POST_DATA, + .defn = query->data, + .dropStmt = delq->data, + }); if (subinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, "SUBSCRIPTION", qsubname, @@ -9377,11 +9394,16 @@ dumpComment(Archive *fout, const char *type, const char *name, * post-data. */ ArchiveEntry(fout, nilCatalogId, createDumpId(), - tag->data, namespace, NULL, owner, - "COMMENT", SECTION_NONE, - query->data, "", NULL, - &(dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag->data, + .namespace = namespace, + .owner = owner, + .desc = "COMMENT", + .section = SECTION_NONE, + .defn = query->data, + .deps = &(dumpId), + .nDeps = 1, + }); destroyPQExpBuffer(query); destroyPQExpBuffer(tag); @@ -9443,13 +9465,16 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo, appendPQExpBufferStr(query, ";\n"); ArchiveEntry(fout, nilCatalogId, createDumpId(), - tag->data, - tbinfo->dobj.namespace->dobj.name, - NULL, tbinfo->rolname, - "COMMENT", SECTION_NONE, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag->data, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "COMMENT", + .section = SECTION_NONE, + .defn = query->data, + .deps = &(tbinfo->dobj.dumpId), + .nDeps = 1, + }); } else if (objsubid > 0 && objsubid <= tbinfo->numatts) { @@ -9467,13 +9492,16 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo, appendPQExpBufferStr(query, ";\n"); ArchiveEntry(fout, nilCatalogId, createDumpId(), - tag->data, - tbinfo->dobj.namespace->dobj.name, - NULL, tbinfo->rolname, - "COMMENT", SECTION_NONE, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag->data, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "COMMENT", + .section = SECTION_NONE, + .defn = query->data, + .deps = &(tbinfo->dobj.dumpId), + .nDeps = 1, + }); } comments++; @@ -9750,11 +9778,12 @@ dumpDumpableObject(Archive *fout, DumpableObject *dobj) TocEntry *te; te = ArchiveEntry(fout, dobj->catId, dobj->dumpId, - dobj->name, NULL, NULL, "", - "BLOBS", SECTION_DATA, - "", "", NULL, - NULL, 0, - dumpBlobs, NULL); + &(ArchiveOpts){ + .tag = dobj->name, + .desc = "BLOBS", + .section = SECTION_DATA, + .dumpFn = dumpBlobs, + }); /* * Set the TocEntry's dataLength in case we are doing a @@ -9822,13 +9851,14 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo) if (nspinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, nspinfo->dobj.catId, nspinfo->dobj.dumpId, - nspinfo->dobj.name, - NULL, NULL, - nspinfo->rolname, - "SCHEMA", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = nspinfo->dobj.name, + .owner = nspinfo->rolname, + .desc = "SCHEMA", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Schema Comments and Security Labels */ if (nspinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -9958,13 +9988,13 @@ dumpExtension(Archive *fout, ExtensionInfo *extinfo) if (extinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, extinfo->dobj.catId, extinfo->dobj.dumpId, - extinfo->dobj.name, - NULL, NULL, - "", - "EXTENSION", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = extinfo->dobj.name, + .desc = "EXTENSION", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Extension Comments and Security Labels */ if (extinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -10108,14 +10138,15 @@ dumpEnumType(Archive *fout, TypeInfo *tyinfo) if (tyinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tyinfo->dobj.catId, tyinfo->dobj.dumpId, - tyinfo->dobj.name, - tyinfo->dobj.namespace->dobj.name, - NULL, - tyinfo->rolname, - "TYPE", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tyinfo->dobj.name, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "TYPE", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Type Comments and Security Labels */ if (tyinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -10235,14 +10266,15 @@ dumpRangeType(Archive *fout, TypeInfo *tyinfo) if (tyinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tyinfo->dobj.catId, tyinfo->dobj.dumpId, - tyinfo->dobj.name, - tyinfo->dobj.namespace->dobj.name, - NULL, - tyinfo->rolname, - "TYPE", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tyinfo->dobj.name, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "TYPE", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Type Comments and Security Labels */ if (tyinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -10308,14 +10340,15 @@ dumpUndefinedType(Archive *fout, TypeInfo *tyinfo) if (tyinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tyinfo->dobj.catId, tyinfo->dobj.dumpId, - tyinfo->dobj.name, - tyinfo->dobj.namespace->dobj.name, - NULL, - tyinfo->rolname, - "TYPE", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tyinfo->dobj.name, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "TYPE", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Type Comments and Security Labels */ if (tyinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -10590,14 +10623,15 @@ dumpBaseType(Archive *fout, TypeInfo *tyinfo) if (tyinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tyinfo->dobj.catId, tyinfo->dobj.dumpId, - tyinfo->dobj.name, - tyinfo->dobj.namespace->dobj.name, - NULL, - tyinfo->rolname, - "TYPE", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tyinfo->dobj.name, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "TYPE", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Type Comments and Security Labels */ if (tyinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -10747,14 +10781,15 @@ dumpDomain(Archive *fout, TypeInfo *tyinfo) if (tyinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tyinfo->dobj.catId, tyinfo->dobj.dumpId, - tyinfo->dobj.name, - tyinfo->dobj.namespace->dobj.name, - NULL, - tyinfo->rolname, - "DOMAIN", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tyinfo->dobj.name, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "DOMAIN", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Domain Comments and Security Labels */ if (tyinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -10969,14 +11004,15 @@ dumpCompositeType(Archive *fout, TypeInfo *tyinfo) if (tyinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tyinfo->dobj.catId, tyinfo->dobj.dumpId, - tyinfo->dobj.name, - tyinfo->dobj.namespace->dobj.name, - NULL, - tyinfo->rolname, - "TYPE", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tyinfo->dobj.name, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "TYPE", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Type Comments and Security Labels */ @@ -11105,13 +11141,16 @@ dumpCompositeTypeColComments(Archive *fout, TypeInfo *tyinfo) appendPQExpBufferStr(query, ";\n"); ArchiveEntry(fout, nilCatalogId, createDumpId(), - target->data, - tyinfo->dobj.namespace->dobj.name, - NULL, tyinfo->rolname, - "COMMENT", SECTION_NONE, - query->data, "", NULL, - &(tyinfo->dobj.dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = target->data, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "COMMENT", + .section = SECTION_NONE, + .defn = query->data, + .deps = &(tyinfo->dobj.dumpId), + .nDeps = 1, + }); } comments++; @@ -11160,14 +11199,14 @@ dumpShellType(Archive *fout, ShellTypeInfo *stinfo) if (stinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, stinfo->dobj.catId, stinfo->dobj.dumpId, - stinfo->dobj.name, - stinfo->dobj.namespace->dobj.name, - NULL, - stinfo->baseType->rolname, - "SHELL TYPE", SECTION_PRE_DATA, - q->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = stinfo->dobj.name, + .namespace = stinfo->dobj.namespace->dobj.name, + .owner = stinfo->baseType->rolname, + .desc = "SHELL TYPE", + .section = SECTION_PRE_DATA, + .defn = q->data, + }); destroyPQExpBuffer(q); } @@ -11272,12 +11311,14 @@ dumpProcLang(Archive *fout, ProcLangInfo *plang) if (plang->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, plang->dobj.catId, plang->dobj.dumpId, - plang->dobj.name, - NULL, NULL, plang->lanowner, - "PROCEDURAL LANGUAGE", SECTION_PRE_DATA, - defqry->data, delqry->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = plang->dobj.name, + .owner = plang->lanowner, + .desc = "PROCEDURAL LANGUAGE", + .section = SECTION_PRE_DATA, + .defn = defqry->data, + .dropStmt = delqry->data, + }); /* Dump Proc Lang Comments and Security Labels */ if (plang->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -11942,14 +11983,15 @@ dumpFunc(Archive *fout, FuncInfo *finfo) if (finfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, finfo->dobj.catId, finfo->dobj.dumpId, - funcsig_tag, - finfo->dobj.namespace->dobj.name, - NULL, - finfo->rolname, - keyword, SECTION_PRE_DATA, - q->data, delqry->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = funcsig_tag, + .namespace = finfo->dobj.namespace->dobj.name, + .owner = finfo->rolname, + .desc = keyword, + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delqry->data, + }); /* Dump Function Comments and Security Labels */ if (finfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -12077,12 +12119,13 @@ dumpCast(Archive *fout, CastInfo *cast) if (cast->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, cast->dobj.catId, cast->dobj.dumpId, - labelq->data, - NULL, NULL, "", - "CAST", SECTION_PRE_DATA, - defqry->data, delqry->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = labelq->data, + .desc = "CAST", + .section = SECTION_PRE_DATA, + .defn = defqry->data, + .dropStmt = delqry->data, + }); /* Dump Cast Comments */ if (cast->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -12205,12 +12248,15 @@ dumpTransform(Archive *fout, TransformInfo *transform) if (transform->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, transform->dobj.catId, transform->dobj.dumpId, - labelq->data, - NULL, NULL, "", - "TRANSFORM", SECTION_PRE_DATA, - defqry->data, delqry->data, NULL, - transform->dobj.dependencies, transform->dobj.nDeps, - NULL, NULL); + &(ArchiveOpts){ + .tag = labelq->data, + .desc = "TRANSFORM", + .section = SECTION_PRE_DATA, + .defn = defqry->data, + .dropStmt = delqry->data, + .deps = transform->dobj.dependencies, + .nDeps = transform->dobj.nDeps, + }); /* Dump Transform Comments */ if (transform->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -12418,14 +12464,15 @@ dumpOpr(Archive *fout, OprInfo *oprinfo) if (oprinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, oprinfo->dobj.catId, oprinfo->dobj.dumpId, - oprinfo->dobj.name, - oprinfo->dobj.namespace->dobj.name, - NULL, - oprinfo->rolname, - "OPERATOR", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = oprinfo->dobj.name, + .namespace = oprinfo->dobj.namespace->dobj.name, + .owner = oprinfo->rolname, + .desc = "OPERATOR", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Operator Comments */ if (oprinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -12588,14 +12635,13 @@ dumpAccessMethod(Archive *fout, AccessMethodInfo *aminfo) if (aminfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, aminfo->dobj.catId, aminfo->dobj.dumpId, - aminfo->dobj.name, - NULL, - NULL, - "", - "ACCESS METHOD", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = aminfo->dobj.name, + .desc = "ACCESS METHOD", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Access Method Comments */ if (aminfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -12954,14 +13000,15 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo) if (opcinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, opcinfo->dobj.catId, opcinfo->dobj.dumpId, - opcinfo->dobj.name, - opcinfo->dobj.namespace->dobj.name, - NULL, - opcinfo->rolname, - "OPERATOR CLASS", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = opcinfo->dobj.name, + .namespace = opcinfo->dobj.namespace->dobj.name, + .owner = opcinfo->rolname, + .desc = "OPERATOR CLASS", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Operator Class Comments */ if (opcinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -13221,14 +13268,15 @@ dumpOpfamily(Archive *fout, OpfamilyInfo *opfinfo) if (opfinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, opfinfo->dobj.catId, opfinfo->dobj.dumpId, - opfinfo->dobj.name, - opfinfo->dobj.namespace->dobj.name, - NULL, - opfinfo->rolname, - "OPERATOR FAMILY", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = opfinfo->dobj.name, + .namespace = opfinfo->dobj.namespace->dobj.name, + .owner = opfinfo->rolname, + .desc = "OPERATOR FAMILY", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Operator Family Comments */ if (opfinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -13364,14 +13412,15 @@ dumpCollation(Archive *fout, CollInfo *collinfo) if (collinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, collinfo->dobj.catId, collinfo->dobj.dumpId, - collinfo->dobj.name, - collinfo->dobj.namespace->dobj.name, - NULL, - collinfo->rolname, - "COLLATION", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = collinfo->dobj.name, + .namespace = collinfo->dobj.namespace->dobj.name, + .owner = collinfo->rolname, + .desc = "COLLATION", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Collation Comments */ if (collinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -13459,14 +13508,15 @@ dumpConversion(Archive *fout, ConvInfo *convinfo) if (convinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, convinfo->dobj.catId, convinfo->dobj.dumpId, - convinfo->dobj.name, - convinfo->dobj.namespace->dobj.name, - NULL, - convinfo->rolname, - "CONVERSION", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = convinfo->dobj.name, + .namespace = convinfo->dobj.namespace->dobj.name, + .owner = convinfo->rolname, + .desc = "CONVERSION", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Conversion Comments */ if (convinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -13948,14 +13998,15 @@ dumpAgg(Archive *fout, AggInfo *agginfo) if (agginfo->aggfn.dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, agginfo->aggfn.dobj.catId, agginfo->aggfn.dobj.dumpId, - aggsig_tag, - agginfo->aggfn.dobj.namespace->dobj.name, - NULL, - agginfo->aggfn.rolname, - "AGGREGATE", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = aggsig_tag, + .namespace = agginfo->aggfn.dobj.namespace->dobj.name, + .owner = agginfo->aggfn.rolname, + .desc = "AGGREGATE", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Aggregate Comments */ if (agginfo->aggfn.dobj.dump & DUMP_COMPONENT_COMMENT) @@ -14046,14 +14097,14 @@ dumpTSParser(Archive *fout, TSParserInfo *prsinfo) if (prsinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, prsinfo->dobj.catId, prsinfo->dobj.dumpId, - prsinfo->dobj.name, - prsinfo->dobj.namespace->dobj.name, - NULL, - "", - "TEXT SEARCH PARSER", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = prsinfo->dobj.name, + .namespace = prsinfo->dobj.namespace->dobj.name, + .desc = "TEXT SEARCH PARSER", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Parser Comments */ if (prsinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -14126,14 +14177,15 @@ dumpTSDictionary(Archive *fout, TSDictInfo *dictinfo) if (dictinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, dictinfo->dobj.catId, dictinfo->dobj.dumpId, - dictinfo->dobj.name, - dictinfo->dobj.namespace->dobj.name, - NULL, - dictinfo->rolname, - "TEXT SEARCH DICTIONARY", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = dictinfo->dobj.name, + .namespace = dictinfo->dobj.namespace->dobj.name, + .owner = dictinfo->rolname, + .desc = "TEXT SEARCH DICTIONARY", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Dictionary Comments */ if (dictinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -14187,14 +14239,14 @@ dumpTSTemplate(Archive *fout, TSTemplateInfo *tmplinfo) if (tmplinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tmplinfo->dobj.catId, tmplinfo->dobj.dumpId, - tmplinfo->dobj.name, - tmplinfo->dobj.namespace->dobj.name, - NULL, - "", - "TEXT SEARCH TEMPLATE", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tmplinfo->dobj.name, + .namespace = tmplinfo->dobj.namespace->dobj.name, + .desc = "TEXT SEARCH TEMPLATE", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Template Comments */ if (tmplinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -14307,14 +14359,15 @@ dumpTSConfig(Archive *fout, TSConfigInfo *cfginfo) if (cfginfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, cfginfo->dobj.catId, cfginfo->dobj.dumpId, - cfginfo->dobj.name, - cfginfo->dobj.namespace->dobj.name, - NULL, - cfginfo->rolname, - "TEXT SEARCH CONFIGURATION", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = cfginfo->dobj.name, + .namespace = cfginfo->dobj.namespace->dobj.name, + .owner = cfginfo->rolname, + .desc = "TEXT SEARCH CONFIGURATION", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Configuration Comments */ if (cfginfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -14373,14 +14426,14 @@ dumpForeignDataWrapper(Archive *fout, FdwInfo *fdwinfo) if (fdwinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, fdwinfo->dobj.catId, fdwinfo->dobj.dumpId, - fdwinfo->dobj.name, - NULL, - NULL, - fdwinfo->rolname, - "FOREIGN DATA WRAPPER", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = fdwinfo->dobj.name, + .owner = fdwinfo->rolname, + .desc = "FOREIGN DATA WRAPPER", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Foreign Data Wrapper Comments */ if (fdwinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -14464,14 +14517,14 @@ dumpForeignServer(Archive *fout, ForeignServerInfo *srvinfo) if (srvinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, srvinfo->dobj.catId, srvinfo->dobj.dumpId, - srvinfo->dobj.name, - NULL, - NULL, - srvinfo->rolname, - "SERVER", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = srvinfo->dobj.name, + .owner = srvinfo->rolname, + .desc = "SERVER", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Foreign Server Comments */ if (srvinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -14582,14 +14635,15 @@ dumpUserMappings(Archive *fout, usename, servername); ArchiveEntry(fout, nilCatalogId, createDumpId(), - tag->data, - namespace, - NULL, - owner, - "USER MAPPING", SECTION_PRE_DATA, - q->data, delq->data, NULL, - &dumpId, 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag->data, + .namespace = namespace, + .owner = owner, + .desc = "USER MAPPING", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); } PQclear(res); @@ -14661,14 +14715,15 @@ dumpDefaultACL(Archive *fout, DefaultACLInfo *daclinfo) if (daclinfo->dobj.dump & DUMP_COMPONENT_ACL) ArchiveEntry(fout, daclinfo->dobj.catId, daclinfo->dobj.dumpId, - tag->data, - daclinfo->dobj.namespace ? daclinfo->dobj.namespace->dobj.name : NULL, - NULL, - daclinfo->defaclrole, - "DEFAULT ACL", SECTION_POST_DATA, - q->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag->data, + .namespace = daclinfo->dobj.namespace ? + daclinfo->dobj.namespace->dobj.name : NULL, + .owner = daclinfo->defaclrole, + .desc = "DEFAULT ACL", + .section = SECTION_POST_DATA, + .defn = q->data, + }); destroyPQExpBuffer(tag); destroyPQExpBuffer(q); @@ -14760,13 +14815,16 @@ dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId, appendPQExpBuffer(tag, "%s %s", type, name); ArchiveEntry(fout, nilCatalogId, createDumpId(), - tag->data, nspname, - NULL, - owner ? owner : "", - "ACL", SECTION_NONE, - sql->data, "", NULL, - &(objDumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag->data, + .namespace = nspname, + .owner = owner, + .desc = "ACL", + .section = SECTION_NONE, + .defn = sql->data, + .deps = &(objDumpId), + .nDeps = 1, + }); destroyPQExpBuffer(tag); } @@ -14848,11 +14906,16 @@ dumpSecLabel(Archive *fout, const char *type, const char *name, appendPQExpBuffer(tag, "%s %s", type, name); ArchiveEntry(fout, nilCatalogId, createDumpId(), - tag->data, namespace, NULL, owner, - "SECURITY LABEL", SECTION_NONE, - query->data, "", NULL, - &(dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag->data, + .namespace = namespace, + .owner = owner, + .desc = "SECURITY LABEL", + .section = SECTION_NONE, + .defn = query->data, + .deps = &(dumpId), + .nDeps = 1, + }); destroyPQExpBuffer(tag); } @@ -14928,13 +14991,16 @@ dumpTableSecLabel(Archive *fout, TableInfo *tbinfo, const char *reltypename) appendPQExpBuffer(target, "%s %s", reltypename, fmtId(tbinfo->dobj.name)); ArchiveEntry(fout, nilCatalogId, createDumpId(), - target->data, - tbinfo->dobj.namespace->dobj.name, - NULL, tbinfo->rolname, - "SECURITY LABEL", SECTION_NONE, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = target->data, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "SECURITY LABEL", + .section = SECTION_NONE, + .defn = query->data, + .deps = &(tbinfo->dobj.dumpId), + .nDeps = 1, + }); } destroyPQExpBuffer(query); destroyPQExpBuffer(target); @@ -16012,16 +16078,18 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) if (tbinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tbinfo->dobj.catId, tbinfo->dobj.dumpId, - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - (tbinfo->relkind == RELKIND_VIEW) ? NULL : tbinfo->reltablespace, - tbinfo->rolname, - reltypename, - tbinfo->postponed_def ? - SECTION_POST_DATA : SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tbinfo->dobj.name, + .namespace = tbinfo->dobj.namespace->dobj.name, + .tablespace = (tbinfo->relkind == RELKIND_VIEW) ? + NULL : tbinfo->reltablespace, + .owner = tbinfo->rolname, + .desc = reltypename, + .section = tbinfo->postponed_def ? + SECTION_POST_DATA : SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Table Comments */ @@ -16092,14 +16160,15 @@ dumpAttrDef(Archive *fout, AttrDefInfo *adinfo) if (adinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, adinfo->dobj.catId, adinfo->dobj.dumpId, - tag, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "DEFAULT", SECTION_PRE_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "DEFAULT", + .section = SECTION_PRE_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); free(tag); destroyPQExpBuffer(q); @@ -16241,14 +16310,16 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo) if (indxinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, indxinfo->dobj.catId, indxinfo->dobj.dumpId, - indxinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - indxinfo->tablespace, - tbinfo->rolname, - "INDEX", SECTION_POST_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = indxinfo->dobj.name, + .namespace = tbinfo->dobj.namespace->dobj.name, + .tablespace = indxinfo->tablespace, + .owner = tbinfo->rolname, + .desc = "INDEX", + .section = SECTION_POST_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); if (indstatcolsarray) free(indstatcolsarray); @@ -16290,14 +16361,13 @@ dumpIndexAttach(Archive *fout, IndexAttachInfo *attachinfo) fmtQualifiedDumpable(attachinfo->partitionIdx)); ArchiveEntry(fout, attachinfo->dobj.catId, attachinfo->dobj.dumpId, - attachinfo->dobj.name, - attachinfo->dobj.namespace->dobj.name, - NULL, - "", - "INDEX ATTACH", SECTION_POST_DATA, - q->data, "", NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = attachinfo->dobj.name, + .namespace = attachinfo->dobj.namespace->dobj.name, + .desc = "INDEX ATTACH", + .section = SECTION_POST_DATA, + .defn = q->data, + }); destroyPQExpBuffer(q); } @@ -16345,14 +16415,15 @@ dumpStatisticsExt(Archive *fout, StatsExtInfo *statsextinfo) if (statsextinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, statsextinfo->dobj.catId, statsextinfo->dobj.dumpId, - statsextinfo->dobj.name, - statsextinfo->dobj.namespace->dobj.name, - NULL, - statsextinfo->rolname, - "STATISTICS", SECTION_POST_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = statsextinfo->dobj.name, + .namespace = statsextinfo->dobj.namespace->dobj.name, + .owner = statsextinfo->rolname, + .desc = "STATISTICS", + .section = SECTION_POST_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); /* Dump Statistics Comments */ if (statsextinfo->dobj.dump & DUMP_COMPONENT_COMMENT) @@ -16506,14 +16577,16 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) if (coninfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, coninfo->dobj.catId, coninfo->dobj.dumpId, - tag, - tbinfo->dobj.namespace->dobj.name, - indxinfo->tablespace, - tbinfo->rolname, - "CONSTRAINT", SECTION_POST_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tbinfo->dobj.namespace->dobj.name, + .tablespace = indxinfo->tablespace, + .owner = tbinfo->rolname, + .desc = "CONSTRAINT", + .section = SECTION_POST_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); } else if (coninfo->contype == 'f') { @@ -16546,14 +16619,15 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) if (coninfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, coninfo->dobj.catId, coninfo->dobj.dumpId, - tag, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "FK CONSTRAINT", SECTION_POST_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "FK CONSTRAINT", + .section = SECTION_POST_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); } else if (coninfo->contype == 'c' && tbinfo) { @@ -16578,14 +16652,15 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) if (coninfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, coninfo->dobj.catId, coninfo->dobj.dumpId, - tag, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "CHECK CONSTRAINT", SECTION_POST_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "CHECK CONSTRAINT", + .section = SECTION_POST_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); } } else if (coninfo->contype == 'c' && tbinfo == NULL) @@ -16611,14 +16686,15 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) if (coninfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, coninfo->dobj.catId, coninfo->dobj.dumpId, - tag, - tyinfo->dobj.namespace->dobj.name, - NULL, - tyinfo->rolname, - "CHECK CONSTRAINT", SECTION_POST_DATA, - q->data, delq->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tyinfo->dobj.namespace->dobj.name, + .owner = tyinfo->rolname, + .desc = "CHECK CONSTRAINT", + .section = SECTION_POST_DATA, + .defn = q->data, + .dropStmt = delq->data, + }); } } else @@ -16885,14 +16961,15 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) if (tbinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tbinfo->dobj.catId, tbinfo->dobj.dumpId, - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "SEQUENCE", SECTION_PRE_DATA, - query->data, delqry->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tbinfo->dobj.name, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "SEQUENCE", + .section = SECTION_PRE_DATA, + .defn = query->data, + .dropStmt = delqry->data, + }); /* * If the sequence is owned by a table column, emit the ALTER for it as a @@ -16926,14 +17003,16 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) if (tbinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, nilCatalogId, createDumpId(), - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "SEQUENCE OWNED BY", SECTION_PRE_DATA, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tbinfo->dobj.name, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "SEQUENCE OWNED BY", + .section = SECTION_PRE_DATA, + .defn = query->data, + .deps = &(tbinfo->dobj.dumpId), + .nDeps = 1, + }); } } @@ -16994,14 +17073,16 @@ dumpSequenceData(Archive *fout, TableDataInfo *tdinfo) if (tdinfo->dobj.dump & DUMP_COMPONENT_DATA) ArchiveEntry(fout, nilCatalogId, createDumpId(), - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "SEQUENCE SET", SECTION_DATA, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); + &(ArchiveOpts){ + .tag = tbinfo->dobj.name, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "SEQUENCE SET", + .section = SECTION_DATA, + .defn = query->data, + .deps = &(tbinfo->dobj.dumpId), + .nDeps = 1, + }); PQclear(res); @@ -17193,14 +17274,15 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo) if (tginfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, tginfo->dobj.catId, tginfo->dobj.dumpId, - tag, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "TRIGGER", SECTION_POST_DATA, - query->data, delqry->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "TRIGGER", + .section = SECTION_POST_DATA, + .defn = query->data, + .dropStmt = delqry->data, + }); if (tginfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, trigprefix->data, qtabname, @@ -17282,12 +17364,14 @@ dumpEventTrigger(Archive *fout, EventTriggerInfo *evtinfo) if (evtinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, evtinfo->dobj.catId, evtinfo->dobj.dumpId, - evtinfo->dobj.name, NULL, NULL, - evtinfo->evtowner, - "EVENT TRIGGER", SECTION_POST_DATA, - query->data, delqry->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = evtinfo->dobj.name, + .owner = evtinfo->evtowner, + .desc = "EVENT TRIGGER", + .section = SECTION_POST_DATA, + .defn = query->data, + .dropStmt = delqry->data, + }); if (evtinfo->dobj.dump & DUMP_COMPONENT_COMMENT) dumpComment(fout, "EVENT TRIGGER", qevtname, @@ -17440,14 +17524,15 @@ dumpRule(Archive *fout, RuleInfo *rinfo) if (rinfo->dobj.dump & DUMP_COMPONENT_DEFINITION) ArchiveEntry(fout, rinfo->dobj.catId, rinfo->dobj.dumpId, - tag, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - "RULE", SECTION_POST_DATA, - cmd->data, delcmd->data, NULL, - NULL, 0, - NULL, NULL); + &(ArchiveOpts){ + .tag = tag, + .namespace = tbinfo->dobj.namespace->dobj.name, + .owner = tbinfo->rolname, + .desc = "RULE", + .section = SECTION_POST_DATA, + .defn = cmd->data, + .dropStmt = delcmd->data, + }); /* Dump rule comments */ if (rinfo->dobj.dump & DUMP_COMPONENT_COMMENT) -- 2.16.4