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

Reply via email to