pgsql: Perform conversion from Python unicode to string/bytes object vi

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема pgsql: Perform conversion from Python unicode to string/bytes object vi
Дата
Msg-id E1SyLZY-00019o-Vh@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Perform conversion from Python unicode to string/bytes object via UTF-8.

We used to convert the unicode object directly to a string in the server
encoding by calling Python's PyUnicode_AsEncodedString function. In other
words, we used Python's routines to do the encoding. However, that has a
few problems. First of all, it required keeping a mapping table of Python
encoding names and PostgreSQL encodings. But the real killer was that Python
doesn't support EUC_TW and MULE_INTERNAL encodings at all.

Instead, convert the Python unicode object to UTF-8, and use PostgreSQL's
encoding conversion functions to convert from UTF-8 to server encoding. We
were already doing the same in the other direction in PLyUnicode_FromString,
so this is more consistent, too.

Note: This makes SQL_ASCII to behave more leniently. We used to map
SQL_ASCII to Python's 'ascii', which on Python means strict 7-bit ASCII
only, so you got an error if the python string contained anything but pure
ASCII. You no longer get an error; you get the UTF-8 representation of the
string instead.

Backpatch to 9.0, where these conversions were introduced.

Jan Urbański

Branch
------
REL9_2_STABLE

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

Modified Files
--------------
src/pl/plpython/expected/plpython_unicode_3.out |   54 -------------
src/pl/plpython/plpy_util.c                     |   98 ++++++++++-------------
2 files changed, 44 insertions(+), 108 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Perform conversion from Python unicode to string/bytes object vi
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: pgsql: Perform conversion from Python unicode to string/bytes object vi