Re: DBD::Pg BYTEA Character Escaping

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: DBD::Pg BYTEA Character Escaping
Дата
Msg-id 200111180545.fAI5jHx12256@candle.pha.pa.us
обсуждение исходный текст
Ответ на DBD::Pg BYTEA Character Escaping  (David Wheeler <david@wheeler.net>)
Список pgsql-general
> If that's true, then any solution escaping non-printable characters is
> overkill, and therefore only the three characters need to be escaped.
> And since it looks like two of them ('\' and "'") are already escaped
> before the non-printable characters are escaped in DBD::Pg, it then it
> seems that this code:
>
>   if ($data_type == DBI::SQL_BINARY ||
>       $data_type == DBI::SQL_VARBINARY ||
>       $data_type == DBI::SQL_LONGVARBINARY) {
>       $str=join("", map { isprint($_)?$_:'\\'.sprintf("%03o",ord($_)) }
>                     split //, $str);
>   }
>
> Could be changed to:
>
>   s/\0/\\000/g if $data_type == DBI::SQL_BINARY ||
>                   $data_type == DBI::SQL_VARBINARY ||
>                   $data_type == DBI::SQL_LONGVARBINARY;
>
> So, the reason I'm posting this query is because I'd like to get
> confirmation, if possible, on this conclusion. Based on the feedback I
> receive, I will submit patches to the DBD::Pg maintainer.
>
> Thanks!
>
> David
>
> PS: If discussion of this issue needs to be moved to the Hackers list,
> I'll be happy to do so. I just thought I'd try here, first.

Yes, you only need to escape NULL for bytea.  The above patch looks fine
to me.  We can add it to 7.3.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

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

Предыдущее
От: David Wheeler
Дата:
Сообщение: DBD::Pg BYTEA Character Escaping
Следующее
От: Tom Lane
Дата:
Сообщение: Re: DBD::Pg BYTEA Character Escaping