Я играл с системой уведомлений 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-разрядный"