From b222867534ab1d200d7268f877fdebade452bbb6 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 21 Dec 2002 22:45:09 +0000
Subject: [PATCH] pg_dump should consider information_schema to be a system
 schema. Also, tweak -C option (emit CREATE DATABASE command) to emit encoding
 name rather than encoding number, for consistency with pg_dumpall and better
 cross-version portability.

---
 src/bin/pg_dump/pg_dump.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index e91ab42561c..e5570fa6d1d 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -12,7 +12,7 @@
  *	by PostgreSQL
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.311 2002/12/12 21:03:24 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.312 2002/12/21 22:45:09 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -762,7 +762,8 @@ selectDumpableNamespace(NamespaceInfo *nsinfo)
 	 */
 	if (selectTablename != NULL)
 		nsinfo->dump = false;
-	else if (strncmp(nsinfo->nspname, "pg_", 3) == 0)
+	else if (strncmp(nsinfo->nspname, "pg_", 3) == 0 ||
+			 strcmp(nsinfo->nspname, "information_schema") == 0)
 		nsinfo->dump = false;
 	else
 		nsinfo->dump = true;
@@ -1219,7 +1220,8 @@ dumpDatabase(Archive *AH)
 
 	/* Get the database owner and parameters from pg_database */
 	appendPQExpBuffer(dbQry, "select (select usename from pg_user where usesysid = datdba) as dba,"
-					  " encoding, datpath from pg_database"
+					  " pg_encoding_to_char(encoding) as encoding,"
+					  " datpath from pg_database"
 					  " where datname = ");
 	appendStringLiteral(dbQry, datname, true);
 
@@ -1258,10 +1260,16 @@ dumpDatabase(Archive *AH)
 
 	appendPQExpBuffer(creaQry, "CREATE DATABASE %s WITH TEMPLATE = template0",
 					  fmtId(datname));
-	if (strlen(encoding) > 0)
-		appendPQExpBuffer(creaQry, " ENCODING = %s", encoding);
 	if (strlen(datpath) > 0)
-		appendPQExpBuffer(creaQry, " LOCATION = '%s'", datpath);
+	{
+		appendPQExpBuffer(creaQry, " LOCATION = ");
+		appendStringLiteral(creaQry, datpath, true);
+	}
+	if (strlen(encoding) > 0)
+	{
+		appendPQExpBuffer(creaQry, " ENCODING = ");
+		appendStringLiteral(creaQry, encoding, true);
+	}
 	appendPQExpBuffer(creaQry, ";\n");
 
 	appendPQExpBuffer(delQry, "DROP DATABASE %s;\n",
-- 
GitLab