Fix SetClientEncoding() to maintain a cache of previously selected encoding

Tom Lane <tgl@sss.pgh.pa.us>

Commit: c26ffb1ead84adc79ef6cfbe125b300cccd1e2b7
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2009-04-02T17:30:53Z
Releases: 8.4.0
Fix SetClientEncoding() to maintain a cache of previously selected encoding
conversion functions.  This allows transaction rollback to revert to a
previous client_encoding setting without doing fresh catalog lookups.
I believe that this explains and fixes the recent report of "failed to commit
client_encoding" failures.

This bug is present in 8.3.x, but it doesn't seem prudent to back-patch
the fix, at least not till it's had some time for field testing in HEAD.

In passing, remove SetDefaultClientEncoding(), which was used nowhere.

Files

PathChange+/−
src/backend/utils/mb/mbutils.c modified +126 −84
src/include/mb/pg_wchar.h modified +1 −2