Re: BUG #17142: COPY ignores client_encoding for octal digit characters

vilarion@illarion.org

From: vilarion@illarion.org
To: pgsql-bugs@lists.postgresql.org
Date: 2021-08-12T08:01:56Z
Lists: pgsql-bugs
On 12.08.2021 09:40, Heikki Linnakangas wrote:
> On 12/08/2021 00:24, PG Bug reporting form wrote:
>> Characters in octal digits should be possible as per
>> https://www.postgresql.org/docs/13/sql-copy.html
>> When using characters directly (char buffer[] = "\304\366\337") the 
>> expected
>> output is displayed.
>>
>> My apologies if I misunderstood something.
>
> The code is pretty clear that the \123 and \x12 escapes are evaluated 
> after encoding conversion. That means, the escapes are interpreted 
> using the database encoding, regardless of client encoding. The 
> documentation doesn't say anything about that, though. We should fix 
> the docs. How does the attached patch look?
>
> You could get weird results if you use the escapes for some bytes in a 
> multi-byte character. Mostly you'd get invalid byte sequence errors, 
> but I think with the right combination of the client and database 
> encodings, it could get more strange. I think the wording in the 
> attached docs patch is enough to cover that, though.
>
> - Heikki


Thanks for clarifying! This patch to the docs will allow me to file a 
bug report against the library I am using (pqxx).

Andreas




Commits

  1. doc: \123 and \x12 escapes in COPY are in database encoding.