[DBD::Pg] Quick check of server_encoding on startup so we don't try and utf8 flag data from a SQL_ASCII database. Will need to cache that info or check other places...

[email protected]
Newsgroups perl.dbd.pg.changes
Message-ID <[email protected]>
Committed by Greg Sabino Mullane <[email protected]>

Quick check of server_encoding on startup so we don't try and utf8 flag data from a SQL_ASCII database. Will need to cache that info or check other places...

---
 dbdimp.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/dbdimp.c b/dbdimp.c
index eb54f11..a9b3212 100644
--- a/dbdimp.c
+++ b/dbdimp.c
@@ -216,10 +216,15 @@ int dbd_db_login6 (SV * dbh, imp_dbh_t * imp_dbh, char * dbname, char * uid, cha
 	DBD_ATTRIB_GET_IV(attr, "pg_utf8_flag", 12, svp, imp_dbh->pg_utf8_flag);
 	if (imp_dbh->pg_utf8_flag == -1) { /* Has not been explicitly set by the user */
 		/*
-		  Check the client_encoding. If UTF-8, set the flag on, else off
+		  Check the client_encoding. If UTF-8 and server is not SQL_ASCII, set the flag on, else off
 		*/
-		imp_dbh->utf8_flag = (0 == strncmp(PQparameterStatus(imp_dbh->conn, "client_encoding"), "UTF8", 4))
-			? 0 : 1;
+		imp_dbh->utf8_flag =
+			(
+			 (0 == strncmp(PQparameterStatus(imp_dbh->conn, "client_encoding"), "UTF8", 4))
+			 &&
+			 (0 != strncmp(PQparameterStatus(imp_dbh->conn, "server_encoding"), "SQL_ASCII", 9))
+			 )
+			? 1 : 0;
 	}
 	else {
 		/* We allow -1 and 0 direct, and force everything else to 1 */
-- 
1.7.0.5
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.