pgsql: Fix PL/Tcl's encoding conversion logic.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix PL/Tcl's encoding conversion logic.
Date: 2016-03-02 18:30:22
Message-ID: E1abBXS-0006ju-Ax@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Alvaro Herrera 2016-03-02 21:23:20 pgsql: Prefix temp data dirs with the node name
Previous Message Tom Lane 2016-03-02 17:24:36 pgsql: Make PL/Tcl require Tcl 8.4 or later.