diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 9c8eaaf14e..0866658429 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.67 2003/02/01 22:06:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.68 2003/02/14 19:40:42 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -206,7 +206,8 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt) sav = SetOutput(AH, ropt->filename, ropt->compression); ahprintf(AH, "--\n-- PostgreSQL database dump\n--\n\n"); - + ahprintf(AH, "SET autocommit TO 'on';\n\n"); + /* * Drop the items at the start, in reverse order */ @@ -2109,7 +2110,8 @@ _reconnectAsUser(ArchiveHandle *AH, const char *dbname, const char *user) dbname ? fmtId(dbname) : "-"); appendPQExpBuffer(qry, " %s\n\n", fmtId(user)); - + appendPQExpBuffer(qry, "SET autocommit TO 'on';\n\n"); + ahprintf(AH, qry->data); destroyPQExpBuffer(qry); diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c index eab4729e21..60771922e5 100644 --- a/src/bin/pg_dump/pg_backup_db.c +++ b/src/bin/pg_dump/pg_backup_db.c @@ -5,7 +5,7 @@ * Implements the basic DB functions used by the archiver. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.45 2003/02/13 04:54:15 momjian Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_db.c,v 1.46 2003/02/14 19:40:42 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -213,6 +213,21 @@ _connectDB(ArchiveHandle *AH, const char *reqdb, const char *requser) if (password) free(password); + /* check for version mismatch */ + _check_database_version(AH, true); + + /* Turn autocommit on */ + if (AH->public.remoteVersion >= 70300) + { + PGresult *res; + + res = PQexec(AH->connection, "SET autocommit TO 'on'"); + if (!res || PQresultStatus(res) != PGRES_COMMAND_OK) + die_horribly(AH, NULL, "SET autocommit TO 'on' failed: %s", + PQerrorMessage(AH->connection)); + PQclear(res); + } + PQsetNoticeProcessor(newConn, notice_processor, NULL); return newConn; diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 4421d13e06..33b1bbae09 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 * * - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.13 2003/01/16 15:27:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.14 2003/02/14 19:40:42 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -190,6 +190,7 @@ main(int argc, char *argv[]) printf("-- PostgreSQL database cluster dump\n"); printf("--\n\n"); printf("\\connect \"template1\"\n\n"); + printf("SET autocommit TO 'on';\n\n"); dumpUsers(conn); dumpGroups(conn); @@ -552,6 +553,7 @@ dumpDatabases(PGconn *conn) fprintf(stderr, _("%s: dumping database \"%s\"...\n"), progname, dbname); printf("\\connect %s\n", fmtId(dbname)); + printf("SET autocommit TO 'on';\n\n"); ret = runPgDump(dbname); if (ret != 0) { @@ -677,6 +679,14 @@ connectDatabase(const char *dbname, const char *pghost, const char *pgport, } PQclear(res); + if (server_version >= 70300) + { + PGresult *res; + + res = executeQuery(conn, "SET autocommit TO 'on';SELECT 1;"); + PQclear(res); + } + return conn; }