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));
 
