diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index 0ed8b921b892858e1ea4541cebab642cec4507dd..75158a58bfaa556f50159476c5a153986a87ed89 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.60 2005/06/21 04:02:32 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.61 2005/06/21 15:22:18 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -303,7 +303,7 @@ main(int argc, char *argv[]) if (verbose) dumpTimestamp("Started on"); - printf("\\connect \"postgres\"\n\n"); + printf("\\connect postgres\n\n"); if (!data_only) { @@ -661,40 +661,43 @@ dumpCreateDB(PGconn *conn) char *dbtablespace = PQgetvalue(res, i, 5); char *fdbname; - if (strcmp(dbname, "template1") == 0) - continue; - buf = createPQExpBuffer(); - - /* needed for buildACLCommands() */ fdbname = strdup(fmtId(dbname)); - if (output_clean) - appendPQExpBuffer(buf, "DROP DATABASE %s;\n", fdbname); - - appendPQExpBuffer(buf, "CREATE DATABASE %s", fdbname); + /* + * Skip the CREATE DATABASE commands for "template1" and "postgres", + * since they are presumably already there in the destination cluster. + * We do want to emit their ACLs and config options if any, however. + */ + if (strcmp(dbname, "template1") != 0 && + strcmp(dbname, "postgres") != 0) + { + if (output_clean) + appendPQExpBuffer(buf, "DROP DATABASE %s;\n", fdbname); - appendPQExpBuffer(buf, " WITH TEMPLATE = template0"); + appendPQExpBuffer(buf, "CREATE DATABASE %s", fdbname); - if (strlen(dbowner) != 0) - appendPQExpBuffer(buf, " OWNER = %s", - fmtId(dbowner)); + appendPQExpBuffer(buf, " WITH TEMPLATE = template0"); - appendPQExpBuffer(buf, " ENCODING = "); - appendStringLiteral(buf, dbencoding, true); + if (strlen(dbowner) != 0) + appendPQExpBuffer(buf, " OWNER = %s", fmtId(dbowner)); - /* Output tablespace if it isn't default */ - if (strcmp(dbtablespace, "pg_default") != 0) - appendPQExpBuffer(buf, " TABLESPACE = %s", - fmtId(dbtablespace)); + appendPQExpBuffer(buf, " ENCODING = "); + appendStringLiteral(buf, dbencoding, true); - appendPQExpBuffer(buf, ";\n"); + /* Output tablespace if it isn't default */ + if (strcmp(dbtablespace, "pg_default") != 0) + appendPQExpBuffer(buf, " TABLESPACE = %s", + fmtId(dbtablespace)); - if (strcmp(dbistemplate, "t") == 0) - { - appendPQExpBuffer(buf, "UPDATE pg_database SET datistemplate = 't' WHERE datname = "); - appendStringLiteral(buf, dbname, true); appendPQExpBuffer(buf, ";\n"); + + if (strcmp(dbistemplate, "t") == 0) + { + appendPQExpBuffer(buf, "UPDATE pg_database SET datistemplate = 't' WHERE datname = "); + appendStringLiteral(buf, dbname, true); + appendPQExpBuffer(buf, ";\n"); + } } if (!skip_acls && @@ -708,11 +711,12 @@ dumpCreateDB(PGconn *conn) } printf("%s", buf->data); - destroyPQExpBuffer(buf); - free(fdbname); if (server_version >= 70300) dumpDatabaseConfig(conn, dbname); + + destroyPQExpBuffer(buf); + free(fdbname); } PQclear(res);