Default client encoding to server encoding for dblink connections. Addresses
authorJoe Conway
Tue, 9 Jun 2009 16:35:36 +0000 (16:35 +0000)
committerJoe Conway
Tue, 9 Jun 2009 16:35:36 +0000 (16:35 +0000)
issue raised by Ruzsinszky Attila and confirmed by others.

 ----------------------------------------------------------------------

contrib/dblink/dblink.c

index 283b4d0b25e9924dfc2d16075e7cfc1277ce5956..e709ae9cc3b9f7177eaae08d11540a8590e7dc63 100644 (file)
@@ -8,7 +8,7 @@
  * Darko Prenosil 
  * Shridhar Daithankar 
  *
- * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.79 2009/06/06 21:27:56 joe Exp $
+ * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.80 2009/06/09 16:35:36 joe Exp $
  * Copyright (c) 2001-2009, PostgreSQL Global Development Group
  * ALL RIGHTS RESERVED;
  *
@@ -48,6 +48,7 @@
 #include "executor/spi.h"
 #include "foreign/foreign.h"
 #include "lib/stringinfo.h"
+#include "mb/pg_wchar.h"
 #include "miscadmin.h"
 #include "nodes/execnodes.h"
 #include "nodes/nodes.h"
@@ -185,6 +186,7 @@ typedef struct remoteConnHashEnt
                             errdetail("%s", msg))); \
                } \
                dblink_security_check(conn, rconn); \
+               PQsetClientEncoding(conn, GetDatabaseEncodingName()); \
                freeconn = true; \
            } \
    } while (0)
@@ -263,6 +265,9 @@ dblink_connect(PG_FUNCTION_ARGS)
    /* check password actually used if not superuser */
    dblink_security_check(conn, rconn);
 
+   /* attempt to set client encoding to match server encoding */
+   PQsetClientEncoding(conn, GetDatabaseEncodingName());
+
    if (connname)
    {
        rconn->conn = conn;