powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / странности pg 8.2
2 сообщений из 2, страница 1 из 1
странности pg 8.2
    #34499989
tier.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, господа.
Заметил пару странностей постгреса, т.е. он ведет себя не так, как должен, судя по документации. Пока опишу только первую (вторую - в другой теме), а вы, если можно, покажите, где я неправ.
Итак, имеем постгрес 8.2.3 на линуксе.
Функция:
CREATE FUNCTION get_user_tables() RETURNS SETOF name AS
$BODY$
SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND tablename ~ E'^urllist_\\d' ORDER BY RANDOM();
$BODY$
LANGUAGE 'sql' STABLE;

Если не экранировать регулярное выражение '^urllist_\\d' знаком E - то вылазят предупреждения:
WARNING: nonstandard use of \\ in a string literal at character 113
при каждом вызове функции.
Странно то, что они вылазят и если экранировать - но гораздо реже. Примерно - один раз на 10 вызовов функции. Как это можно объяснить? Я рационального объяснения не нахожу. Вынужден был вообще отключить вывод таких предупреждений в конфиге постгреса...
Спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
странности pg 8.2
    #35480061
Petr_Nikolaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://groups.google.com/group/comp.databases.postgresql/browse_thread/thread/cb7bb77ba2ebb41c

The first solution:

Edit postgresql.conf, set
standard_conforming_strings = on
and restart the server.

Then backslashes will be treated as normal characters, and if you
need them as escape character, you must preceed the string with an 'E',
as in E'string\nwith newline'.

This solution is good because this will be the default in some future
release.

The second solution:

Preceed all string literals that contain a backslash with an E as above
and replace single backslashes with double backslashes whenever they
should not be treated as escape character.

This may be a little more work.

The third solution:

Edit postgresql.conf, set
escape_string_warning = off
and restret the server.

This will get rid of the warnings; single backslashes will be treated as
escape characters.

I wouldn't recommend this because - as said - behaviour may change in
a future release.

Yours,
Laurenz Albe
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / странности pg 8.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]