Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9e46767

Browse files
committed
The attached patch should be sufficient to fix libpgtcl. It requires
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
1 parent 0ee85f8 commit 9e46767

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/interfaces/libpgtcl/pgtcl.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
*
1212
* IDENTIFICATION
13-
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtcl.c,v 1.21 2001/03/22 04:01:23 momjian Exp $
13+
* $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtcl.c,v 1.22 2001/09/10 14:49:12 momjian Exp $
1414
*
1515
*-------------------------------------------------------------------------
1616
*/
@@ -29,6 +29,7 @@
2929
int
3030
Pgtcl_Init(Tcl_Interp *interp)
3131
{
32+
double tclversion;
3233

3334
/*
3435
* finish off the ChannelType struct. Much easier to do it here then
@@ -39,6 +40,13 @@ Pgtcl_Init(Tcl_Interp *interp)
3940
Pg_ConnType.getFileProc = PgGetFileProc;
4041
#endif
4142

43+
/*
44+
* Tcl versions >= 8.1 use UTF-8 for their internal string representation.
45+
* Therefore PGCLIENTENCODING must be set to UNICODE for these versions.
46+
*/
47+
Tcl_GetDouble(interp, Tcl_GetVar(interp, "tcl_version", TCL_GLOBAL_ONLY), &tclversion);
48+
if (tclversion >= 8.1) setenv("PGCLIENTENCODING", "UNICODE", 1);
49+
4250
/* register all pgtcl commands */
4351
Tcl_CreateCommand(interp,
4452
"pg_conndefaults",

0 commit comments

Comments
 (0)