Index: pg_dump.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v retrieving revision 1.452 diff -u -r1.452 pg_dump.c --- pg_dump.c 7 Oct 2006 20:59:04 -0000 1.452 +++ pg_dump.c 9 Oct 2006 10:21:08 -0000 @@ -1424,7 +1424,8 @@ i_oid, i_dba, i_encoding, - i_tablespace; + i_tablespace, + count = 1; CatalogId dbCatId; DumpId dbDumpId; const char *datname, @@ -1533,6 +1534,47 @@ fmtId(tablespace)); appendPQExpBuffer(creaQry, ";\n"); + /* Dump DB settings if any */ + resetPQExpBuffer(dbQry); + appendPQExpBuffer(creaQry, "\n"); + for (;;) + { + PGresult *res; + char *pos; + char *mine; + + printfPQExpBuffer(dbQry, "SELECT datconfig[%d] FROM pg_database WHERE datname = ", count); + appendStringLiteralAH(dbQry, datname, AH); + appendPQExpBuffer(dbQry, ";"); + + res = PQexec(g_conn, dbQry->data); + if (!PQgetisnull(res, 0, 0)) + { + mine = strdup(PQgetvalue(res, 0, 0)); + pos = strchr(mine, '='); + if (pos != NULL) + { + *pos = 0; + appendPQExpBuffer(creaQry, "ALTER DATABASE %s ", fmtId(datname)); + appendPQExpBuffer(creaQry, "SET %s TO ", fmtId(mine)); + } + if (pg_strcasecmp(mine, "DateStyle") == 0 + || pg_strcasecmp(mine, "search_path") == 0) + appendPQExpBuffer(creaQry, "%s", pos + 1); + else + appendStringLiteralAH(creaQry, pos + 1, AH); + appendPQExpBuffer(creaQry, ";\n"); + + PQclear(res); + count++; + } + else + { + PQclear(res); + break; + } + } + appendPQExpBuffer(delQry, "DROP DATABASE %s;\n", fmtId(datname));