aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_dump/pg_dump.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/pg_dump/pg_dump.c')
-rw-r--r--src/bin/pg_dump/pg_dump.c167
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);