OSDN Git Service

> > A simple and robus solution is in the begin of mbutils.c set default
authorBruce Momjian <bruce@momjian.us>
Sat, 8 Sep 2001 14:30:15 +0000 (14:30 +0000)
committerBruce Momjian <bruce@momjian.us>
Sat, 8 Sep 2001 14:30:15 +0000 (14:30 +0000)
> > ClientEncoding to SQL_ASCII (like default DatabaseEncoding). Bruce, can
> > you change it? It's one line change. Again thanks.

 Forget it! A default client encoding must be set by actual database encoding...
Please apply the small attached patch that solve it better.

Karel Zak

src/backend/utils/mb/mbutils.c

index 39d59cd..b0b65a0 100644 (file)
@@ -3,7 +3,7 @@
  * client encoding and server internal encoding.
  * (currently mule internal code (mic) is used)
  * Tatsuo Ishii
- * $Id: mbutils.c,v 1.20 2001/09/06 04:57:29 ishii Exp $
+ * $Id: mbutils.c,v 1.21 2001/09/08 14:30:15 momjian Exp $
  */
 #include "postgres.h"
 
@@ -137,10 +137,9 @@ pg_get_client_encoding()
        Assert(DatabaseEncoding);
 
        if (ClientEncoding == NULL)
-       {
                /* this is the first time */
                ClientEncoding = DatabaseEncoding;
-       }
+
        return (ClientEncoding->encoding);
 }
 
@@ -153,10 +152,9 @@ pg_get_client_encoding_name()
        Assert(DatabaseEncoding);
 
        if (ClientEncoding == NULL)
-       {
                /* this is the first time */
                ClientEncoding = DatabaseEncoding;
-       }
+
        return (ClientEncoding->name);
 }
 
@@ -311,9 +309,12 @@ pg_convert2(PG_FUNCTION_ARGS)
 unsigned char *
 pg_client_to_server(unsigned char *s, int len)
 {
-       Assert(ClientEncoding);
        Assert(DatabaseEncoding);
 
+       if (ClientEncoding == NULL)
+               /* this is the first time */
+               ClientEncoding = DatabaseEncoding;
+
        if (ClientEncoding->encoding == DatabaseEncoding->encoding)
            return s;
 
@@ -336,9 +337,12 @@ pg_client_to_server(unsigned char *s, int len)
 unsigned char *
 pg_server_to_client(unsigned char *s, int len)
 {
-       Assert(ClientEncoding);
        Assert(DatabaseEncoding);
 
+       if (ClientEncoding == NULL)
+               /* this is the first time */
+               ClientEncoding = DatabaseEncoding;
+
        if (ClientEncoding->encoding == DatabaseEncoding->encoding)
                return s;