Fix SetClientEncoding() to maintain a cache of previously selected encoding
Tom Lane <tgl@sss.pgh.pa.us>
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
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/mb/mbutils.c | modified | +126 −84 |
| src/include/mb/pg_wchar.h | modified | +1 −2 |