Re: plperl: Documentation on BYTEA decoding is wrong

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: plperl: Documentation on BYTEA decoding is wrong
Дата
Msg-id 4799FC35.5090307@dunslane.net
обсуждение исходный текст
Ответ на plperl: Documentation on BYTEA decoding is wrong  (Florian Weimer <fweimer@bfk.de>)
Ответы Re: plperl: Documentation on BYTEA decoding is wrong  (Robert Treat <xzilla@users.sourceforge.net>)
Список pgsql-hackers

Florian Weimer wrote:
> This doesn't work because '\' is turned into '\\' by PostgreSQL, and
> not '\134':
>
>     my $arg = shift;
>     $arg =~ s!\\(\d{3})!chr(oct($1))!ge;
>
> Something like this might be better:
>
>     my $arg = shift;
>     $arg =~ s!\\(?:\\|(\d{3}))!$1 ? chr(oct($1)) : "\\"!ge;
>
> You need to do this in one go because pre-escaped backslashes like
> like '\\101' cause problems otherwise.
>
> (All ''-delimited strings in this posting use strict SQL syntax,
> i.e. no escaped backslashes.)
>
>   

I think you're right, although that's rather ugly ;-) I'll commit this 
change for now, but if anyone comes up with a simpler recipe I'll be happy.

Also, it looks to me like I missed escaping \ on the way back, which I 
will fix.

cheers

andrew




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

Предыдущее
От: Zdenek Kotala
Дата:
Сообщение: Re: Default index tablespace
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Truncate Triggers