Re: PQescapeBytea is not multibyte aware
| От | Joe Conway |
|---|---|
| Тема | Re: PQescapeBytea is not multibyte aware |
| Дата | |
| Msg-id | 3CADCDC1.1020908@joeconway.com обсуждение исходный текст |
| Ответ на | PQescapeBytea is not multibyte aware (Tatsuo Ishii <t-ishii@sra.co.jp>) |
| Ответы |
Re: PQescapeBytea is not multibyte aware
|
| Список | pgsql-hackers |
Tom Lane wrote:
> Tatsuo Ishii <t-ishii@sra.co.jp> writes:
>
>>PQescapebytea() is not multibyte aware and will produce bad multibyte
>>character sequences. Example:
>>I think 0x89 should be converted to '\\211' since 0x89 of 0x8950 is
>>considered as "non printable characters".
>
>
> Hmm, so essentially we'd have to convert all codes >= 0x80 to prevent
> them from being mistaken for parts of multibyte sequences? Ugh, but
> you're probably right. It looks to me like byteaout does the reverse
> already.
>
But the error comes from pg_verifymbstr. Since bytea has no encoding
(it's just an array of bytes afterall), why does pg_verifymbstr get
applied at all to bytea data?
pg_verifymbstr is called by textin, bpcharin, and varcharin. Would it
help to rewrite this as:
INSERT INTO t1(bytea_col) VALUES('characters produced by
PQescapebytea'::bytea);
?
Joe
В списке pgsql-hackers по дате отправления: