]> granicus.if.org Git - postgresql/commitdiff
The attached patch should be sufficient to fix libpgtcl. It requires
authorBruce Momjian <bruce@momjian.us>
Mon, 10 Sep 2001 14:49:12 +0000 (14:49 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 10 Sep 2001 14:49:12 +0000 (14:49 +0000)
PostgreSQL to support unicode-conversion, but retains binary
compatibility among Tcl versions.

However, it neither checks at compile time not at runtime, if support
for unicode-conversion does really exist and it doesn't prevent the
user from changing the client encoding after initialization. I think
there should be warnings about this somewhere in the documentation.

Reinhard Max

src/interfaces/libpgtcl/pgtcl.c

index 6da179ced572532023b07d9bba17777684dc66b1..64a3246487399552c4f48a70f3ac8e0ea8111bb5 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtcl.c,v 1.21 2001/03/22 04:01:23 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtcl.c,v 1.22 2001/09/10 14:49:12 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -29,6 +29,7 @@
 int
 Pgtcl_Init(Tcl_Interp *interp)
 {
+       double tclversion;
 
        /*
         * finish off the ChannelType struct.  Much easier to do it here then
@@ -39,6 +40,13 @@ Pgtcl_Init(Tcl_Interp *interp)
        Pg_ConnType.getFileProc = PgGetFileProc;
 #endif
 
+       /*
+        * Tcl versions >= 8.1 use UTF-8 for their internal string representation.
+        * Therefore PGCLIENTENCODING must be set to UNICODE for these versions.
+        */
+       Tcl_GetDouble(interp, Tcl_GetVar(interp, "tcl_version", TCL_GLOBAL_ONLY), &tclversion);
+       if (tclversion >= 8.1) setenv("PGCLIENTENCODING", "UNICODE", 1);
+
        /* register all pgtcl commands */
        Tcl_CreateCommand(interp,
                                          "pg_conndefaults",