[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...
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.