СЛУШАТЬ / УВЕДОМЛЕНИЕ с помощью pg_notify (текст, текст) в PostgreSQL

Я играл с системой уведомлений PostgreSQL и не могу всю жизнь понять, почему pg_notify (text, text) никогда не работает. Эта функция не слишком документирована, и я не могу найти много примеров ее использования в дикой природе, поэтому я подумал, что никто не будет возражать, если я спрошу здесь.

Выполнение следующего работает точно так, как ожидалось:

LISTEN my_channel;

NOTIFY my_channel, 'my message text';

Однако использование функции pg_notify () возвращает нулевое значение, и никакое уведомление не отправляется. Ошибки тоже нет. Пример использования:

SELECT pg_notify('my_channel', 'my message text');

Я мог бы использовать функцию NOTIFY, однако моя цель - преобразовать уведомление в такой запрос:

select pg_notify(get_player_error_channel(username)::TEXT, 'test'::TEXT)
    from player;

Я предполагаю, что я упускаю что-то нелепое, но мне не повезло выяснить, причина этого. Страницу, посвященную NOTIFY, можно найти здесь: http://www.postgresql.org/docs/9.0/static/sql-notify.html

Здесь упоминается о pg_notify (), что заставляет меня предполагаю, что ничего кардинально не изменится.

pg_notify Для отправки уведомления вы также можете использовать функцию pg_notify (текст, текст). Функция принимает имя канала в качестве первого аргумента, а полезную нагрузку - в качестве второго. Эта функция намного проще в использовании, чем команда NOTIFY, если вам нужно работать с непостоянными именами каналов и полезной нагрузкой.

Как всегда, спасибо за помощь

Изменить: версия базы данных: "PostgreSQL 9.0.3 на i686-pc-linux-gnu, скомпилированный GCC gcc (GCC) 4.2.4, 32-разрядный"

16
задан Tim Stone 3 March 2011 в 17:12
поделиться