Drupal + PostgreSQL = еще один патч

В процессе попыток использования Drupal 6.5 с PostgreSQL выявилась мелкая неприятность: интерфейс к постгресу не вполне правильно эскейпит строки со спецсимволами. Постгрес хочет, чтобы ему давали в виде E '\r\n', а Друпал дает без E. Пожелание это новое, появилось в какой-то из восьмых версий, на функциональность не влияет, но противно забивать лог неизвестно чем.

Патч прилагается: drupal65-pgsql8x-patch2.diff.gz

В Drupal тоже настучал, глядишь добавят в 6.6 или там в семерку (до кучи сдал туда же предыдущий патч, от него тоже никакого вреда, кроме пользы).

Comments

А ещё можно в конфиге постгри раскомментировать escape_string_warning = off

Полезный варнинг, пусть будет

(не говоря о том, что перенастраивать базу под приложение можно только если приложение одно, а у меня этих баз десятки, тронуть страшно)

А что, плейсхолдерами там не пользуются?

В друпале - нет. Там строка запроса - это примерно как форматная строка в printf, расширение делает драйвер БД.

Ты бы хоть фотографию на главной странице сменил, она уже 6 лет не меняется у тебя :)

А смысл?

А можно уточнить, с какой именно версии postgres появился это префикс 'E'? искал в доках, но безуспешно.

В 8.3 есть точно, а так - думаю что просто в восьмерке

Да, в доке на 8.0 этот варнинг уже описан

Мне кажется, что в этом патче нужно добавить проверку на версию сервера, так как в документации упоминание префикса начинается с 8.1 версии. Посему, прошу уточнить, как оно поведет себя на 8.0 например. Проверить нет возможности...

в 8.0 не нашел (http://www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-STR...)

первое найденное упоминание
http://www.postgresql.org/docs/8.1/static/sql-syntax.html#SQL-SYNTAX-STR...
и потом
http://www.postgresql.org/docs/8.2/static/sql-syntax-lexical.html#SQL-SY...

У меня восьмерки нигде нет, естественно (зачем она, если есть 8.3)

Но вот упоминание о данном синтаксисе в доке на 8.0.7
http://www.commandprompt.com/community/pgdocs8/runtime-config-compatible (первое, что гугл нашел)