Committed by Greg Sabino Mullane <[email protected]>

Detect and store the server_encoding on login.

---
 dbdimp.c |    4 ++++
 dbdimp.h |    1 +
 2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/dbdimp.c b/dbdimp.c
index 8dbd448..8055330 100644
--- a/dbdimp.c
+++ b/dbdimp.c
@@ -212,6 +212,9 @@ int dbd_db_login6 (SV * dbh, imp_dbh_t * imp_dbh, char * 
dbname, char * uid, cha
        TRACE_PQPROTOCOLVERSION;
        imp_dbh->pg_protocol = PQprotocolVersion(imp_dbh->conn);
 
+       /* Grab the server encoding so we can set out utf8 flags intelligently 
*/
+       imp_dbh->server_encoding = PQparameterStatus(imp_dbh->conn, 
"server_encoding");
+
        /* Figure out this particular backend's version */
        imp_dbh->pg_server_version = -1;
 #if PGLIBVERSION >= 80000
@@ -230,6 +233,7 @@ int dbd_db_login6 (SV * dbh, imp_dbh_t * imp_dbh, char * 
dbname, char * uid, cha
                }
        }
 
+       /* Set all the defaults for this database handle */
        imp_dbh->pg_bool_tf      = DBDPG_FALSE;
        imp_dbh->pg_enable_utf8  = DBDPG_FALSE;
        imp_dbh->prepare_now     = DBDPG_FALSE;
diff --git a/dbdimp.h b/dbdimp.h
index d2829ea..968cb28 100644
--- a/dbdimp.h
+++ b/dbdimp.h
@@ -31,6 +31,7 @@ struct imp_dbh_st {
        AV      *savepoints;       /* list of savepoints */
        PGconn  *conn;             /* connection structure */
        char    *sqlstate;         /* from the last result */
+       const char  *server_encoding;  /* encoding detected at login */
 
        bool    pg_bool_tf;        /* do bools return 't'/'f'? Set by user, 
default is 0 */
        bool    pg_enable_utf8;    /* should we attempt to make utf8 strings? 
Set by user, default is 0 */
-- 
1.7.0.5

Reply via email to