? src/bin/pg_dump/.deps ? src/bin/pg_dump/pg_dump ? src/bin/pg_dump/pg_dumpall ? src/bin/pg_dump/pg_restore Index: doc/src/sgml/ref/pg_dump.sgml =================================================================== RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/pg_dump.sgml,v retrieving revision 1.82 diff -c -r1.82 pg_dump.sgml *** doc/src/sgml/ref/pg_dump.sgml 17 Mar 2006 16:02:47 -0000 1.82 --- doc/src/sgml/ref/pg_dump.sgml 12 Apr 2006 22:54:04 -0000 *************** *** 168,174 **** 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 may fail altogether if you have rearranged column order. --- 168,174 ---- Dump data as INSERT commands (rather ! than COPY). This will make restoration slower; it is mainly useful for making dumps that can be loaded into non-PostgreSQL databases. Note that the restore may fail altogether if you have rearranged column order. *************** *** 187,193 **** 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. --- 187,193 ---- column names (INSERT INTO table (column, ...) VALUES ! ...). This will make restoration slower; it is mainly useful for making dumps that can be loaded into non-PostgreSQL databases. *************** *** 490,495 **** --- 490,508 ---- + + + + + Prevent the INSERT statements for + and from being wrapped in a + transaction. This is useful for compatibility with other + databases or for partial restores to work. + + + + + Index: doc/src/sgml/ref/pg_dumpall.sgml =================================================================== RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/pg_dumpall.sgml,v retrieving revision 1.55 diff -c -r1.55 pg_dumpall.sgml *** doc/src/sgml/ref/pg_dumpall.sgml 1 Nov 2005 21:09:50 -0000 1.55 --- doc/src/sgml/ref/pg_dumpall.sgml 12 Apr 2006 22:54:04 -0000 *************** *** 103,109 **** 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 may fail altogether if you have rearranged column order. --- 103,109 ---- Dump data as INSERT commands (rather ! than COPY). This will make restoration slower; it is mainly useful for making dumps that can be loaded into non-PostgreSQL databases. Note that the restore may fail altogether if you have rearranged column order. *************** *** 122,128 **** 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. --- 122,128 ---- column names (INSERT INTO table (column, ...) VALUES ! ...). This will make restoration slower; it is mainly useful for making dumps that can be loaded into non-PostgreSQL databases. *************** *** 287,292 **** --- 287,305 ---- + + + + + + Prevent the INSERT statements for + and from being wrapped in a + transaction. This is useful for compatibility with other + databases or for partial restores to work. + + + + Index: src/bin/pg_dump/pg_dump.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v retrieving revision 1.433 diff -c -r1.433 pg_dump.c *** src/bin/pg_dump/pg_dump.c 5 Mar 2006 15:58:50 -0000 1.433 --- src/bin/pg_dump/pg_dump.c 12 Apr 2006 22:54:04 -0000 *************** *** 114,119 **** --- 114,122 ---- /* flag to turn on/off dollar quoting */ static int disable_dollar_quoting = 0; + /* flag to turn on/off transactions around insert dumps */ + static int disable_insert_transactions = 0; + static void help(const char *progname); static NamespaceInfo *findNamespace(Oid nsoid, Oid objoid); *************** *** 249,254 **** --- 252,258 ---- {"disable-dollar-quoting", no_argument, &disable_dollar_quoting, 1}, {"disable-triggers", no_argument, &disable_triggers, 1}, {"use-set-session-authorization", no_argument, &use_setsessauth, 1}, + {"disable-insert-transactions", no_argument, &disable_insert_transactions, 1}, {NULL, 0, NULL, 0} }; *************** *** 403,408 **** --- 407,414 ---- disable_triggers = 1; else if (strcmp(optarg, "use-set-session-authorization") == 0) use_setsessauth = 1; + else if (strcmp(optarg, "disable-insert-transactions") == 0) + disable_insert_transactions = 1; else { fprintf(stderr, *************** *** 462,467 **** --- 468,480 ---- exit(1); } + if (dumpInserts == false && disable_insert_transactions) + { + write_msg(NULL, "option --disable-insert-transactions cannot be used without\n"); + write_msg(NULL, "an insert option (-d, -D).\n"); + exit(1); + } + /* open the output file */ switch (format[0]) { *************** *** 701,706 **** --- 714,722 ---- printf(_(" -X use-set-session-authorization, --use-set-session-authorization\n" " use SESSION AUTHORIZATION commands instead of\n" " OWNER TO commands\n")); + printf(_(" -X disable-insert-transactions, --disable-insert-transactions\n" + " don't wrap inserts in dumps created with\n" + " --inserts in a transaction\n")); printf(_("\nConnection options:\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); *************** *** 996,1001 **** --- 1012,1020 ---- res = PQexec(g_conn, q->data); check_sql_result(res, g_conn, q->data, PGRES_COMMAND_OK); + if (!disable_insert_transactions) + archprintf(fout, "START TRANSACTION;\n"); + do { PQclear(res); *************** *** 1095,1100 **** --- 1114,1121 ---- PQclear(res); + if (!disable_insert_transactions) + archprintf(fout, "COMMIT;\n"); archprintf(fout, "\n\n"); do_sql_command(g_conn, "CLOSE _pg_dump_cursor"); Index: src/bin/pg_dump/pg_dumpall.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v retrieving revision 1.74 diff -c -r1.74 pg_dumpall.c *** src/bin/pg_dump/pg_dumpall.c 7 Apr 2006 21:26:29 -0000 1.74 --- src/bin/pg_dump/pg_dumpall.c 12 Apr 2006 22:54:04 -0000 *************** *** 71,76 **** --- 71,77 ---- static bool ignoreVersion = false; /* flags for -X long options */ + static int disable_insert_transactions = 0; static int disable_dollar_quoting = 0; static int disable_triggers = 0; static int use_setsessauth = 0; *************** *** 118,123 **** --- 119,125 ---- {"disable-dollar-quoting", no_argument, &disable_dollar_quoting, 1}, {"disable-triggers", no_argument, &disable_triggers, 1}, {"use-set-session-authorization", no_argument, &use_setsessauth, 1}, + {"disable-insert-transactions", no_argument, &disable_insert_transactions, 1}, {NULL, 0, NULL, 0} }; *************** *** 266,271 **** --- 268,275 ---- appendPQExpBuffer(pgdumpopts, " -X disable-triggers"); else if (strcmp(optarg, "use-set-session-authorization") == 0) /* no-op, still allowed for compatibility */ ; + else if (strcmp(optarg, "disable-insert-transactions") == 0) + appendPQExpBuffer(pgdumpopts, " -X disable-insert-transactions"); else { fprintf(stderr, *************** *** 292,297 **** --- 296,303 ---- appendPQExpBuffer(pgdumpopts, " -X disable-triggers"); if (use_setsessauth) appendPQExpBuffer(pgdumpopts, " -X use-set-session-authorization"); + if (disable_insert_transactions) + appendPQExpBuffer(pgdumpopts, " -X disable-insert-transactions"); if (optind < argc) { *************** *** 383,388 **** --- 389,397 ---- printf(_(" -X use-set-session-authorization, --use-set-session-authorization\n" " use SESSION AUTHORIZATION commands instead of\n" " OWNER TO commands\n")); + printf(_(" -X disable-insert-transactions, --disable-insert-transactions\n" + " don't wrap inserts in dumps created with\n" + " --inserts in a transaction\n")); printf(_("\nConnection options:\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n"));