diff options
Diffstat (limited to 'src/bin/pg_dump/pg_dump.c')
-rw-r--r-- | src/bin/pg_dump/pg_dump.c | 167 |
1 files changed, 106 insertions, 61 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 6f057f2a33e..5ef46ae08ed 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -12,7 +12,7 @@ * by PostgreSQL * * IDENTIFICATION - * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.518 2009/02/02 19:31:39 alvherre Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.519 2009/02/02 20:07:37 adunstan Exp $ * *------------------------------------------------------------------------- */ @@ -695,6 +695,7 @@ main(int argc, char **argv) { /* Add placeholders to allow correct sorting of blobs */ DumpableObject *blobobj; + DumpableObject *blobcobj; blobobj = (DumpableObject *) malloc(sizeof(DumpableObject)); blobobj->objType = DO_BLOBS; @@ -702,11 +703,12 @@ main(int argc, char **argv) AssignDumpId(blobobj); blobobj->name = strdup("BLOBS"); - blobobj = (DumpableObject *) malloc(sizeof(DumpableObject)); - blobobj->objType = DO_BLOB_COMMENTS; - blobobj->catId = nilCatalogId; - AssignDumpId(blobobj); - blobobj->name = strdup("BLOB COMMENTS"); + blobcobj = (DumpableObject *) malloc(sizeof(DumpableObject)); + blobcobj->objType = DO_BLOB_COMMENTS; + blobcobj->catId = nilCatalogId; + AssignDumpId(blobcobj); + blobcobj->name = strdup("BLOB COMMENTS"); + addObjectDependency(blobcobj, blobobj->dumpId); } /* @@ -1385,11 +1387,10 @@ dumpTableData(Archive *fout, TableDataInfo *tdinfo) } ArchiveEntry(fout, tdinfo->dobj.catId, tdinfo->dobj.dumpId, - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, false, - "TABLE DATA", "", "", copyStmt, + tbinfo->dobj.name, tbinfo->dobj.namespace->dobj.name, + NULL, tbinfo->rolname, + false, "TABLE DATA", SECTION_DATA, + "", "", copyStmt, tdinfo->dobj.dependencies, tdinfo->dobj.nDeps, dumpFn, tdinfo); @@ -1738,6 +1739,7 @@ dumpDatabase(Archive *AH) dba, /* Owner */ false, /* with oids */ "DATABASE", /* Desc */ + SECTION_PRE_DATA, /* Section */ creaQry->data, /* Create */ delQry->data, /* Del */ NULL, /* Copy */ @@ -1764,7 +1766,8 @@ dumpDatabase(Archive *AH) appendPQExpBuffer(dbQry, ";\n"); ArchiveEntry(AH, dbCatId, createDumpId(), datname, NULL, NULL, - dba, false, "COMMENT", dbQry->data, "", NULL, + dba, false, "COMMENT", SECTION_NONE, + dbQry->data, "", NULL, &dbDumpId, 1, NULL, NULL); } } @@ -1802,7 +1805,8 @@ dumpEncoding(Archive *AH) ArchiveEntry(AH, nilCatalogId, createDumpId(), "ENCODING", NULL, NULL, "", - false, "ENCODING", qry->data, "", NULL, + false, "ENCODING", SECTION_PRE_DATA, + qry->data, "", NULL, NULL, 0, NULL, NULL); @@ -1828,7 +1832,8 @@ dumpStdStrings(Archive *AH) ArchiveEntry(AH, nilCatalogId, createDumpId(), "STDSTRINGS", NULL, NULL, "", - false, "STDSTRINGS", qry->data, "", NULL, + false, "STDSTRINGS", SECTION_PRE_DATA, + qry->data, "", NULL, NULL, 0, NULL, NULL); @@ -5514,9 +5519,15 @@ dumpComment(Archive *fout, const char *target, appendStringLiteralAH(query, comments->descr, fout); appendPQExpBuffer(query, ";\n"); + /* + * We mark comments as SECTION_NONE because they really belong + * in the same section as their parent, whether that is + * pre-data or post-data. + */ ArchiveEntry(fout, nilCatalogId, createDumpId(), - target, namespace, NULL, owner, false, - "COMMENT", query->data, "", NULL, + target, namespace, NULL, owner, + false, "COMMENT", SECTION_NONE, + query->data, "", NULL, &(dumpId), 1, NULL, NULL); @@ -5575,9 +5586,9 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo, ArchiveEntry(fout, nilCatalogId, createDumpId(), target->data, tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - false, "COMMENT", query->data, "", NULL, + NULL, tbinfo->rolname, + false, "COMMENT", SECTION_NONE, + query->data, "", NULL, &(tbinfo->dobj.dumpId), 1, NULL, NULL); } @@ -5597,9 +5608,9 @@ dumpTableComment(Archive *fout, TableInfo *tbinfo, ArchiveEntry(fout, nilCatalogId, createDumpId(), target->data, tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - false, "COMMENT", query->data, "", NULL, + NULL, tbinfo->rolname, + false, "COMMENT", SECTION_NONE, + query->data, "", NULL, &(tbinfo->dobj.dumpId), 1, NULL, NULL); } @@ -5872,15 +5883,17 @@ dumpDumpableObject(Archive *fout, DumpableObject *dobj) case DO_BLOBS: ArchiveEntry(fout, dobj->catId, dobj->dumpId, dobj->name, NULL, NULL, "", - false, "BLOBS", "", "", NULL, - NULL, 0, + false, "BLOBS", SECTION_DATA, + "", "", NULL, + dobj->dependencies, dobj->nDeps, dumpBlobs, NULL); break; case DO_BLOB_COMMENTS: ArchiveEntry(fout, dobj->catId, dobj->dumpId, dobj->name, NULL, NULL, "", - false, "BLOB COMMENTS", "", "", NULL, - NULL, 0, + false, "BLOB COMMENTS", SECTION_DATA, + "", "", NULL, + dobj->dependencies, dobj->nDeps, dumpBlobComments, NULL); break; } @@ -5918,7 +5931,8 @@ dumpNamespace(Archive *fout, NamespaceInfo *nspinfo) nspinfo->dobj.name, NULL, NULL, nspinfo->rolname, - false, "SCHEMA", q->data, delq->data, NULL, + false, "SCHEMA", SECTION_PRE_DATA, + q->data, delq->data, NULL, nspinfo->dobj.dependencies, nspinfo->dobj.nDeps, NULL, NULL); @@ -6021,7 +6035,8 @@ dumpEnumType(Archive *fout, TypeInfo *tinfo) tinfo->dobj.namespace->dobj.name, NULL, tinfo->rolname, false, - "TYPE", q->data, delq->data, NULL, + "TYPE", SECTION_PRE_DATA, + q->data, delq->data, NULL, tinfo->dobj.dependencies, tinfo->dobj.nDeps, NULL, NULL); @@ -6389,7 +6404,8 @@ dumpBaseType(Archive *fout, TypeInfo *tinfo) tinfo->dobj.namespace->dobj.name, NULL, tinfo->rolname, false, - "TYPE", q->data, delq->data, NULL, + "TYPE", SECTION_PRE_DATA, + q->data, delq->data, NULL, tinfo->dobj.dependencies, tinfo->dobj.nDeps, NULL, NULL); @@ -6507,7 +6523,8 @@ dumpDomain(Archive *fout, TypeInfo *tinfo) tinfo->dobj.namespace->dobj.name, NULL, tinfo->rolname, false, - "DOMAIN", q->data, delq->data, NULL, + "DOMAIN", SECTION_PRE_DATA, + q->data, delq->data, NULL, tinfo->dobj.dependencies, tinfo->dobj.nDeps, NULL, NULL); @@ -6600,7 +6617,8 @@ dumpCompositeType(Archive *fout, TypeInfo *tinfo) tinfo->dobj.namespace->dobj.name, NULL, tinfo->rolname, false, - "TYPE", q->data, delq->data, NULL, + "TYPE", SECTION_PRE_DATA, + q->data, delq->data, NULL, tinfo->dobj.dependencies, tinfo->dobj.nDeps, NULL, NULL); @@ -6653,7 +6671,8 @@ dumpShellType(Archive *fout, ShellTypeInfo *stinfo) stinfo->dobj.namespace->dobj.name, NULL, stinfo->baseType->rolname, false, - "SHELL TYPE", q->data, "", NULL, + "SHELL TYPE", SECTION_PRE_DATA, + q->data, "", NULL, stinfo->dobj.dependencies, stinfo->dobj.nDeps, NULL, NULL); @@ -6773,7 +6792,7 @@ dumpProcLang(Archive *fout, ProcLangInfo *plang) ArchiveEntry(fout, plang->dobj.catId, plang->dobj.dumpId, plang->dobj.name, lanschema, NULL, plang->lanowner, - false, "PROCEDURAL LANGUAGE", + false, "PROCEDURAL LANGUAGE", SECTION_PRE_DATA, defqry->data, delqry->data, NULL, plang->dobj.dependencies, plang->dobj.nDeps, NULL, NULL); @@ -7331,7 +7350,8 @@ dumpFunc(Archive *fout, FuncInfo *finfo) finfo->dobj.namespace->dobj.name, NULL, finfo->rolname, false, - "FUNCTION", q->data, delqry->data, NULL, + "FUNCTION", SECTION_PRE_DATA, + q->data, delqry->data, NULL, finfo->dobj.dependencies, finfo->dobj.nDeps, NULL, NULL); @@ -7482,7 +7502,8 @@ dumpCast(Archive *fout, CastInfo *cast) ArchiveEntry(fout, cast->dobj.catId, cast->dobj.dumpId, castsig->data, "pg_catalog", NULL, "", - false, "CAST", defqry->data, delqry->data, NULL, + false, "CAST", SECTION_PRE_DATA, + defqry->data, delqry->data, NULL, cast->dobj.dependencies, cast->dobj.nDeps, NULL, NULL); @@ -7723,7 +7744,8 @@ dumpOpr(Archive *fout, OprInfo *oprinfo) oprinfo->dobj.namespace->dobj.name, NULL, oprinfo->rolname, - false, "OPERATOR", q->data, delq->data, NULL, + false, "OPERATOR", SECTION_PRE_DATA, + q->data, delq->data, NULL, oprinfo->dobj.dependencies, oprinfo->dobj.nDeps, NULL, NULL); @@ -8175,7 +8197,8 @@ dumpOpclass(Archive *fout, OpclassInfo *opcinfo) opcinfo->dobj.namespace->dobj.name, NULL, opcinfo->rolname, - false, "OPERATOR CLASS", q->data, delq->data, NULL, + false, "OPERATOR CLASS", SECTION_PRE_DATA, + q->data, delq->data, NULL, opcinfo->dobj.dependencies, opcinfo->dobj.nDeps, NULL, NULL); @@ -8451,7 +8474,8 @@ dumpOpfamily(Archive *fout, OpfamilyInfo *opfinfo) opfinfo->dobj.namespace->dobj.name, NULL, opfinfo->rolname, - false, "OPERATOR FAMILY", q->data, delq->data, NULL, + false, "OPERATOR FAMILY", SECTION_PRE_DATA, + q->data, delq->data, NULL, opfinfo->dobj.dependencies, opfinfo->dobj.nDeps, NULL, NULL); @@ -8564,7 +8588,8 @@ dumpConversion(Archive *fout, ConvInfo *convinfo) convinfo->dobj.namespace->dobj.name, NULL, convinfo->rolname, - false, "CONVERSION", q->data, delq->data, NULL, + false, "CONVERSION", SECTION_PRE_DATA, + q->data, delq->data, NULL, convinfo->dobj.dependencies, convinfo->dobj.nDeps, NULL, NULL); @@ -8805,7 +8830,8 @@ dumpAgg(Archive *fout, AggInfo *agginfo) agginfo->aggfn.dobj.namespace->dobj.name, NULL, agginfo->aggfn.rolname, - false, "AGGREGATE", q->data, delq->data, NULL, + false, "AGGREGATE", SECTION_PRE_DATA, + q->data, delq->data, NULL, agginfo->aggfn.dobj.dependencies, agginfo->aggfn.dobj.nDeps, NULL, NULL); @@ -8892,7 +8918,8 @@ dumpTSParser(Archive *fout, TSParserInfo *prsinfo) prsinfo->dobj.namespace->dobj.name, NULL, "", - false, "TEXT SEARCH PARSER", q->data, delq->data, NULL, + false, "TEXT SEARCH PARSER", SECTION_PRE_DATA, + q->data, delq->data, NULL, prsinfo->dobj.dependencies, prsinfo->dobj.nDeps, NULL, NULL); @@ -8981,7 +9008,8 @@ dumpTSDictionary(Archive *fout, TSDictInfo *dictinfo) dictinfo->dobj.namespace->dobj.name, NULL, dictinfo->rolname, - false, "TEXT SEARCH DICTIONARY", q->data, delq->data, NULL, + false, "TEXT SEARCH DICTIONARY", SECTION_PRE_DATA, + q->data, delq->data, NULL, dictinfo->dobj.dependencies, dictinfo->dobj.nDeps, NULL, NULL); @@ -9040,7 +9068,8 @@ dumpTSTemplate(Archive *fout, TSTemplateInfo *tmplinfo) tmplinfo->dobj.namespace->dobj.name, NULL, "", - false, "TEXT SEARCH TEMPLATE", q->data, delq->data, NULL, + false, "TEXT SEARCH TEMPLATE", SECTION_PRE_DATA, + q->data, delq->data, NULL, tmplinfo->dobj.dependencies, tmplinfo->dobj.nDeps, NULL, NULL); @@ -9170,7 +9199,8 @@ dumpTSConfig(Archive *fout, TSConfigInfo *cfginfo) cfginfo->dobj.namespace->dobj.name, NULL, cfginfo->rolname, - false, "TEXT SEARCH CONFIGURATION", q->data, delq->data, NULL, + false, "TEXT SEARCH CONFIGURATION", SECTION_PRE_DATA, + q->data, delq->data, NULL, cfginfo->dobj.dependencies, cfginfo->dobj.nDeps, NULL, NULL); @@ -9220,7 +9250,8 @@ dumpForeignDataWrapper(Archive *fout, FdwInfo *fdwinfo) NULL, NULL, fdwinfo->rolname, - false, "FOREIGN DATA WRAPPER", q->data, delq->data, NULL, + false, "FOREIGN DATA WRAPPER", SECTION_PRE_DATA, + q->data, delq->data, NULL, fdwinfo->dobj.dependencies, fdwinfo->dobj.nDeps, NULL, NULL); @@ -9298,7 +9329,8 @@ dumpForeignServer(Archive *fout, ForeignServerInfo *srvinfo) NULL, NULL, srvinfo->rolname, - false, "SERVER", q->data, delq->data, NULL, + false, "SERVER", SECTION_PRE_DATA, + q->data, delq->data, NULL, srvinfo->dobj.dependencies, srvinfo->dobj.nDeps, NULL, NULL); @@ -9393,8 +9425,8 @@ dumpUserMappings(Archive *fout, const char *target, namespace, NULL, owner, false, - "USER MAPPING", q->data, - delq->data, NULL, + "USER MAPPING", SECTION_PRE_DATA, + q->data, delq->data, NULL, &dumpId, 1, NULL, NULL); } @@ -9447,7 +9479,8 @@ dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId, tag, nspname, NULL, owner ? owner : "", - false, "ACL", sql->data, "", NULL, + false, "ACL", SECTION_NONE, + sql->data, "", NULL, &(objDumpId), 1, NULL, NULL); @@ -9797,7 +9830,8 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) (tbinfo->relkind == RELKIND_VIEW) ? NULL : tbinfo->reltablespace, tbinfo->rolname, (strcmp(reltypename, "TABLE") == 0) ? tbinfo->hasoids : false, - reltypename, q->data, delq->data, NULL, + reltypename, SECTION_PRE_DATA, + q->data, delq->data, NULL, tbinfo->dobj.dependencies, tbinfo->dobj.nDeps, NULL, NULL); @@ -9863,7 +9897,8 @@ dumpAttrDef(Archive *fout, AttrDefInfo *adinfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, - false, "DEFAULT", q->data, delq->data, NULL, + false, "DEFAULT", SECTION_PRE_DATA, + q->data, delq->data, NULL, adinfo->dobj.dependencies, adinfo->dobj.nDeps, NULL, NULL); @@ -9956,7 +9991,8 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo) tbinfo->dobj.namespace->dobj.name, indxinfo->tablespace, tbinfo->rolname, false, - "INDEX", q->data, delq->data, NULL, + "INDEX", SECTION_POST_DATA, + q->data, delq->data, NULL, indxinfo->dobj.dependencies, indxinfo->dobj.nDeps, NULL, NULL); } @@ -10059,7 +10095,8 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) tbinfo->dobj.namespace->dobj.name, indxinfo->tablespace, tbinfo->rolname, false, - "CONSTRAINT", q->data, delq->data, NULL, + "CONSTRAINT", SECTION_POST_DATA, + q->data, delq->data, NULL, coninfo->dobj.dependencies, coninfo->dobj.nDeps, NULL, NULL); } @@ -10091,7 +10128,8 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, false, - "FK CONSTRAINT", q->data, delq->data, NULL, + "FK CONSTRAINT", SECTION_POST_DATA, + q->data, delq->data, NULL, coninfo->dobj.dependencies, coninfo->dobj.nDeps, NULL, NULL); } @@ -10125,7 +10163,8 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, false, - "CHECK CONSTRAINT", q->data, delq->data, NULL, + "CHECK CONSTRAINT", SECTION_POST_DATA, + q->data, delq->data, NULL, coninfo->dobj.dependencies, coninfo->dobj.nDeps, NULL, NULL); } @@ -10160,7 +10199,8 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) tinfo->dobj.namespace->dobj.name, NULL, tinfo->rolname, false, - "CHECK CONSTRAINT", q->data, delq->data, NULL, + "CHECK CONSTRAINT", SECTION_POST_DATA, + q->data, delq->data, NULL, coninfo->dobj.dependencies, coninfo->dobj.nDeps, NULL, NULL); } @@ -10433,7 +10473,8 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, - false, "SEQUENCE", query->data, delqry->data, NULL, + false, "SEQUENCE", SECTION_PRE_DATA, + query->data, delqry->data, NULL, tbinfo->dobj.dependencies, tbinfo->dobj.nDeps, NULL, NULL); @@ -10468,7 +10509,8 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, - false, "SEQUENCE OWNED BY", query->data, "", NULL, + false, "SEQUENCE OWNED BY", SECTION_PRE_DATA, + query->data, "", NULL, &(tbinfo->dobj.dumpId), 1, NULL, NULL); } @@ -10495,7 +10537,8 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, - false, "SEQUENCE SET", query->data, "", NULL, + false, "SEQUENCE SET", SECTION_PRE_DATA, + query->data, "", NULL, &(tbinfo->dobj.dumpId), 1, NULL, NULL); } @@ -10691,7 +10734,8 @@ dumpTrigger(Archive *fout, TriggerInfo *tginfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, false, - "TRIGGER", query->data, delqry->data, NULL, + "TRIGGER", SECTION_POST_DATA, + query->data, delqry->data, NULL, tginfo->dobj.dependencies, tginfo->dobj.nDeps, NULL, NULL); @@ -10810,7 +10854,8 @@ dumpRule(Archive *fout, RuleInfo *rinfo) tbinfo->dobj.namespace->dobj.name, NULL, tbinfo->rolname, false, - "RULE", cmd->data, delcmd->data, NULL, + "RULE", SECTION_POST_DATA, + cmd->data, delcmd->data, NULL, rinfo->dobj.dependencies, rinfo->dobj.nDeps, NULL, NULL); |