pgsql: Fix PL/Tcl's encoding conversion logic. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Fix PL/Tcl's encoding conversion logic.
Date
Msg-id E1abBXS-0006ju-Ax@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix PL/Tcl's encoding conversion logic.

PL/Tcl appears to contain logic to convert strings between the database
encoding and UTF8, which is the only encoding modern Tcl will deal with.
However, that code has been disabled since commit 034895125d648b86, which
made it "#if defined(UNICODE_CONVERSION)" and neglected to provide any way
for that symbol to become defined.  That might have been all right back
in 2001, but these days we take a dim view of allowing strings with
incorrect encoding into the database.

Remove the conditional compilation, fix warnings about signed/unsigned char
conversions, clean up assorted places that didn't bother with conversions.
(Notably, there were lots of assumptions that database table and field
names didn't need conversion...)

Add a regression test based on plpython_unicode.  It's not terribly
thorough, but better than no test at all.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/c8c7c93de8e116d802eddfd8821f8f77588aee00

Modified Files
--------------
src/pl/tcl/Makefile                   |   2 +-
src/pl/tcl/expected/pltcl_unicode.out |  45 ++++++++++++
src/pl/tcl/pltcl.c                    | 132 ++++++++++++++++------------------
src/pl/tcl/sql/pltcl_unicode.sql      |  38 ++++++++++
4 files changed, 145 insertions(+), 72 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Make PL/Tcl require Tcl 8.4 or later.
Next
From: Alvaro Herrera
Date:
Subject: pgsql: Prefix temp data dirs with the node name