diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml
index 11fa5fbe60..0f5068ef32 100644
--- a/doc/src/sgml/ref/pg_dump.sgml
+++ b/doc/src/sgml/ref/pg_dump.sgml
@@ -1,5 +1,5 @@
@@ -175,46 +175,6 @@ PostgreSQL documentation
-
-
-
-
-
- Dump data as INSERT commands (rather
- than COPY). This will make restoration very slow;
- it is mainly useful for making dumps that can be loaded into
- non-PostgreSQL databases.
- Also, since this option generates a separate command for each row,
- an error in reloading a row causes only that row to be lost rather
- than the entire table contents.
- Note that
- the restore might fail altogether if you have rearranged column order.
- The option is safe against column order changes,
- though even slower.
-
-
-
-
-
-
-
-
-
-
- Dump data as INSERT commands with explicit
- column names (INSERT INTO
- table
- (column, ...) VALUES
- ...). This will make restoration very slow; it is mainly
- useful for making dumps that can be loaded into
- non-PostgreSQL databases.
- Also, since this option generates a separate command for each row,
- an error in reloading a row causes only that row to be lost rather
- than the entire table contents.
-
-
-
-
@@ -562,6 +522,44 @@ PostgreSQL documentation
+
+
+
+
+ Dump data as INSERT commands (rather
+ than COPY). This will make restoration very slow;
+ it is mainly useful for making dumps that can be loaded into
+ non-PostgreSQL databases.
+ Also, since this option generates a separate command for each row,
+ an error in reloading a row causes only that row to be lost rather
+ than the entire table contents.
+ Note that
+ the restore might fail altogether if you have rearranged column order.
+ The option is safe against column
+ order changes, though even slower.
+
+
+
+
+
+
+
+
+
+ Dump data as INSERT commands with explicit
+ column names (INSERT INTO
+ table
+ (column, ...) VALUES
+ ...). This will make restoration very slow; it is mainly
+ useful for making dumps that can be loaded into
+ non-PostgreSQL databases.
+ Also, since this option generates a separate command for each row,
+ an error in reloading a row causes only that row to be lost rather
+ than the entire table contents.
+
+
+
+
@@ -814,11 +812,10 @@ CREATE DATABASE foo WITH TEMPLATE template0;
- pg_dump has a limitation; when a
- data-only dump is chosen and the option
@@ -846,12 +843,19 @@ CREATE DATABASE foo WITH TEMPLATE template0;
Because pg_dump is used to transfer data
to newer versions of PostgreSQL>, the output of
- pg_dump can be loaded into
- newer PostgreSQL> databases. It also can read older
- PostgreSQL> databases. However, it usually cannot
- read newer PostgreSQL> databases or produce dump output
- that can be loaded into older database versions. To do this, manual
- editing of the dump file might be required.
+ pg_dump can be expected to load into
+ PostgreSQL> server versions newer than
+ pg_dump>'s version. pg_dump> can also
+ dump from PostgreSQL> servers older than its own version.
+ (Currently, servers back to version 7.0 are supported.)
+ However, pg_dump> cannot dump from
+ PostgreSQL> servers newer than its own major version;
+ it will refuse to even try, rather than risk making an invalid dump.
+ Also, it is not guaranteed that pg_dump>'s output can
+ be loaded into a server of an older major version — not even if the
+ dump was taken from a server of that version. Loading a dump file
+ into an older server may require manual editing of the dump file
+ to remove syntax not understood by the older server.
diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml
index 6a91c05e78..3c341bad1a 100644
--- a/doc/src/sgml/ref/pg_dumpall.sgml
+++ b/doc/src/sgml/ref/pg_dumpall.sgml
@@ -1,5 +1,5 @@
@@ -98,38 +98,6 @@ PostgreSQL documentation
-
-
-
-
-
- Dump data as INSERT commands (rather
- than COPY). This will make restoration very slow;
- it is mainly useful for making dumps that can be loaded into
- non-PostgreSQL databases. Note that
- the restore might fail altogether if you have rearranged column order.
- The option is safer, though even slower.
-
-
-
-
-
-
-
-
-
-
- Dump data as INSERT commands with explicit
- column names (INSERT INTO
- table
- (column, ...) VALUES
- ...). This will make restoration very slow; it is mainly
- useful for making dumps that can be loaded into
- non-PostgreSQL databases.
-
-
-
-
@@ -302,6 +270,37 @@ PostgreSQL documentation
+
+
+
+
+ Dump data as INSERT commands (rather
+ than COPY). This will make restoration very slow;
+ it is mainly useful for making dumps that can be loaded into
+ non-PostgreSQL databases. Note that
+ the restore might fail altogether if you have rearranged column order.
+ The option is safer, though even
+ slower.
+
+
+
+
+
+
+
+
+
+ Dump data as INSERT commands with explicit
+ column names (INSERT INTO
+ table
+ (column, ...) VALUES
+ ...). This will make restoration very slow; it is mainly
+ useful for making dumps that can be loaded into
+ non-PostgreSQL databases.
+
+
+
+
@@ -511,7 +510,7 @@ PostgreSQL documentation
pg_dumpall requires all needed
- tablespace directories to exist before the restore or
+ tablespace directories to exist before the restore, else
database creation will fail for databases in non-default
locations.
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index f30aef41d1..1ee647119a 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.529 2009/03/17 10:10:13 petere Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.530 2009/03/22 16:44:26 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -67,8 +67,6 @@ Archive *g_fout; /* the script file */
PGconn *g_conn; /* the database connection */
/* various user-settable parameters */
-bool dumpInserts; /* dump data using proper insert strings */
-bool attrNames; /* put attr names into insert strings */
bool schemaOnly;
bool dataOnly;
bool aclsSkip;
@@ -99,8 +97,6 @@ static SimpleOidList table_exclude_oids = {NULL, NULL};
/* default, if no "inclusion" switches appear, is to dump everything */
static bool include_everything = true;
-static int binary_upgrade = 0;
-
char g_opaque_type[10]; /* name for the opaque type */
/* placeholders for the delimiters for comments */
@@ -113,8 +109,11 @@ static const CatalogId nilCatalogId = {0, 0};
static NamespaceInfo *g_namespaces;
static int g_numNamespaces;
-/* flag to turn on/off dollar quoting */
+/* flags for various command-line long options */
+static int binary_upgrade = 0;
static int disable_dollar_quoting = 0;
+static int dump_inserts = 0;
+static int column_inserts = 0;
static void help(const char *progname);
@@ -239,16 +238,12 @@ main(int argc, char **argv)
static int use_setsessauth = 0;
struct option long_options[] = {
- {"binary-upgrade", no_argument, &binary_upgrade, 1}, /* not documented */
{"data-only", no_argument, NULL, 'a'},
{"blobs", no_argument, NULL, 'b'},
{"clean", no_argument, NULL, 'c'},
{"create", no_argument, NULL, 'C'},
{"file", required_argument, NULL, 'f'},
{"format", required_argument, NULL, 'F'},
- {"inserts", no_argument, NULL, 'd'},
- {"attribute-inserts", no_argument, NULL, 'D'},
- {"column-inserts", no_argument, NULL, 'D'},
{"host", required_argument, NULL, 'h'},
{"ignore-version", no_argument, NULL, 'i'},
{"no-reconnect", no_argument, NULL, 'R'},
@@ -275,8 +270,12 @@ main(int argc, char **argv)
/*
* the following options don't have an equivalent short option letter
*/
+ {"attribute-inserts", no_argument, &column_inserts, 1},
+ {"binary-upgrade", no_argument, &binary_upgrade, 1},
+ {"column-inserts", no_argument, &column_inserts, 1},
{"disable-dollar-quoting", no_argument, &disable_dollar_quoting, 1},
{"disable-triggers", no_argument, &disable_triggers, 1},
+ {"inserts", no_argument, &dump_inserts, 1},
{"lock-wait-timeout", required_argument, NULL, 2},
{"no-tablespaces", no_argument, &outputNoTablespaces, 1},
{"role", required_argument, NULL, 3},
@@ -293,7 +292,7 @@ main(int argc, char **argv)
g_comment_end[0] = '\0';
strcpy(g_opaque_type, "opaque");
- dataOnly = schemaOnly = dumpInserts = attrNames = false;
+ dataOnly = schemaOnly = false;
lockWaitTimeout = NULL;
progname = get_progname(argv[0]);
@@ -316,7 +315,7 @@ main(int argc, char **argv)
}
}
- while ((c = getopt_long(argc, argv, "abcCdDE:f:F:h:in:N:oOp:RsS:t:T:U:vwWxX:Z:",
+ while ((c = getopt_long(argc, argv, "abcCE:f:F:h:in:N:oOp:RsS:t:T:U:vwWxX:Z:",
long_options, &optindex)) != -1)
{
switch (c)
@@ -337,16 +336,6 @@ main(int argc, char **argv)
outputCreate = 1;
break;
- case 'd': /* dump data as proper insert strings */
- dumpInserts = true;
- break;
-
- case 'D': /* dump data as proper insert strings with
- * attr names */
- dumpInserts = true;
- attrNames = true;
- break;
-
case 'E': /* Dump encoding */
dumpencoding = optarg;
break;
@@ -484,6 +473,10 @@ main(int argc, char **argv)
if (optind < argc)
dbname = argv[optind];
+ /* --column-inserts implies --inserts */
+ if (column_inserts)
+ dump_inserts = 1;
+
if (dataOnly && schemaOnly)
{
write_msg(NULL, "options -s/--schema-only and -a/--data-only cannot be used together\n");
@@ -496,9 +489,9 @@ main(int argc, char **argv)
exit(1);
}
- if (dumpInserts == true && oids == true)
+ if (dump_inserts && oids)
{
- write_msg(NULL, "options -d/-D/--inserts/--column-inserts and -o/--oids cannot be used together\n");
+ write_msg(NULL, "options --inserts/--column-inserts and -o/--oids cannot be used together\n");
write_msg(NULL, "(The INSERT command cannot set OIDs.)\n");
exit(1);
}
@@ -815,8 +808,6 @@ help(const char *progname)
printf(_(" -b, --blobs include large objects in dump\n"));
printf(_(" -c, --clean clean (drop) database objects before recreating\n"));
printf(_(" -C, --create include commands to create database in dump\n"));
- printf(_(" -d, --inserts dump data as INSERT commands, rather than COPY\n"));
- printf(_(" -D, --column-inserts dump data as INSERT commands with column names\n"));
printf(_(" -E, --encoding=ENCODING dump the data in encoding ENCODING\n"));
printf(_(" -n, --schema=SCHEMA dump the named schema(s) only\n"));
printf(_(" -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n"));
@@ -829,6 +820,8 @@ help(const char *progname)
printf(_(" -T, --exclude-table=TABLE do NOT dump the named table(s)\n"));
printf(_(" -x, --no-privileges do not dump privileges (grant/revoke)\n"));
printf(_(" --binary-upgrade for use by upgrade utilities only\n"));
+ printf(_(" --inserts dump data as INSERT commands, rather than COPY\n"));
+ printf(_(" --column-inserts dump data as INSERT commands with column names\n"));
printf(_(" --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n"));
printf(_(" --disable-triggers disable triggers during data-only restore\n"));
printf(_(" --no-tablespaces do not dump tablespace assignments\n"));
@@ -1269,7 +1262,7 @@ dumpTableData_insert(Archive *fout, void *dcontext)
archprintf(fout, "DEFAULT VALUES;\n");
continue;
}
- if (attrNames == true)
+ if (column_inserts)
{
resetPQExpBuffer(q);
appendPQExpBuffer(q, "(");
@@ -1376,7 +1369,7 @@ dumpTableData(Archive *fout, TableDataInfo *tdinfo)
DataDumperPtr dumpFn;
char *copyStmt;
- if (!dumpInserts)
+ if (!dump_inserts)
{
/* Dump/restore using COPY */
dumpFn = dumpTableData_copy;
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index b455051e27..84b448129c 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
*
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.119 2009/03/04 11:57:00 petere Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.120 2009/03/22 16:44:26 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -62,8 +62,11 @@ static bool output_clean = false;
static bool skip_acls = false;
static bool verbose = false;
+static int binary_upgrade = 0;
+static int column_inserts = 0;
static int disable_dollar_quoting = 0;
static int disable_triggers = 0;
+static int inserts = 0;
static int no_tablespaces = 0;
static int use_setsessauth = 0;
static int server_version;
@@ -71,7 +74,6 @@ static int server_version;
static FILE *OPF;
static char *filename = NULL;
-static int binary_upgrade = 0;
int
main(int argc, char *argv[])
@@ -94,12 +96,8 @@ main(int argc, char *argv[])
ret;
struct option long_options[] = {
- {"binary-upgrade", no_argument, &binary_upgrade, 1}, /* not documented */
{"data-only", no_argument, NULL, 'a'},
{"clean", no_argument, NULL, 'c'},
- {"inserts", no_argument, NULL, 'd'},
- {"attribute-inserts", no_argument, NULL, 'D'},
- {"column-inserts", no_argument, NULL, 'D'},
{"file", required_argument, NULL, 'f'},
{"globals-only", no_argument, NULL, 'g'},
{"host", required_argument, NULL, 'h'},
@@ -122,8 +120,12 @@ main(int argc, char *argv[])
/*
* the following options don't have an equivalent short option letter
*/
+ {"attribute-inserts", no_argument, &column_inserts, 1},
+ {"binary-upgrade", no_argument, &binary_upgrade, 1},
+ {"column-inserts", no_argument, &column_inserts, 1},
{"disable-dollar-quoting", no_argument, &disable_dollar_quoting, 1},
{"disable-triggers", no_argument, &disable_triggers, 1},
+ {"inserts", no_argument, &inserts, 1},
{"lock-wait-timeout", required_argument, NULL, 2},
{"no-tablespaces", no_argument, &no_tablespaces, 1},
{"role", required_argument, NULL, 3},
@@ -178,7 +180,7 @@ main(int argc, char *argv[])
pgdumpopts = createPQExpBuffer();
- while ((c = getopt_long(argc, argv, "acdDf:gh:il:oOp:rsS:tU:vwWxX:", long_options, &optindex)) != -1)
+ while ((c = getopt_long(argc, argv, "acf:gh:il:oOp:rsS:tU:vwWxX:", long_options, &optindex)) != -1)
{
switch (c)
{
@@ -191,11 +193,6 @@ main(int argc, char *argv[])
output_clean = true;
break;
- case 'd':
- case 'D':
- appendPQExpBuffer(pgdumpopts, " -%c", c);
- break;
-
case 'f':
filename = optarg;
appendPQExpBuffer(pgdumpopts, " -f ");
@@ -321,10 +318,14 @@ main(int argc, char *argv[])
/* Add long options to the pg_dump argument list */
if (binary_upgrade)
appendPQExpBuffer(pgdumpopts, " --binary-upgrade");
+ if (column_inserts)
+ appendPQExpBuffer(pgdumpopts, " --column-inserts");
if (disable_dollar_quoting)
appendPQExpBuffer(pgdumpopts, " --disable-dollar-quoting");
if (disable_triggers)
appendPQExpBuffer(pgdumpopts, " --disable-triggers");
+ if (inserts)
+ appendPQExpBuffer(pgdumpopts, " --inserts");
if (no_tablespaces)
appendPQExpBuffer(pgdumpopts, " --no-tablespaces");
if (use_setsessauth)
@@ -511,8 +512,6 @@ help(void)
printf(_("\nOptions controlling the output content:\n"));
printf(_(" -a, --data-only dump only the data, not the schema\n"));
printf(_(" -c, --clean clean (drop) databases before recreating\n"));
- printf(_(" -d, --inserts dump data as INSERT commands, rather than COPY\n"));
- printf(_(" -D, --column-inserts dump data as INSERT commands with column names\n"));
printf(_(" -g, --globals-only dump only global objects, no databases\n"));
printf(_(" -o, --oids include OIDs in dump\n"));
printf(_(" -O, --no-owner skip restoration of object ownership\n"));
@@ -522,6 +521,8 @@ help(void)
printf(_(" -t, --tablespaces-only dump only tablespaces, no databases or roles\n"));
printf(_(" -x, --no-privileges do not dump privileges (grant/revoke)\n"));
printf(_(" --binary-upgrade for use by upgrade utilities only\n"));
+ printf(_(" --inserts dump data as INSERT commands, rather than COPY\n"));
+ printf(_(" --column-inserts dump data as INSERT commands with column names\n"));
printf(_(" --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n"));
printf(_(" --disable-triggers disable triggers during data-only restore\n"));
printf(_(" --no-tablespaces do not dump tablespace assignments\n"));