Re: NOTIFY in Background Worker

Поиск
Список
Период
Сортировка
От Thomas Munro
Тема Re: NOTIFY in Background Worker
Дата
Msg-id CAEepm=3SFrBiqE2Jk1cScZTLQdy13emCe-811yqUA5Eaf60uog@mail.gmail.com
обсуждение исходный текст
Ответ на Re: NOTIFY in Background Worker  (Thomas Munro <thomas.munro@enterprisedb.com>)
Ответы Re: NOTIFY in Background Worker  (Haribabu Kommi <kommi.haribabu@gmail.com>)
Re: NOTIFY in Background Worker  (Haribabu Kommi <kommi.haribabu@gmail.com>)
Список pgsql-hackers
On Sat, Aug 29, 2015 at 9:03 AM, Thomas Munro <thomas.munro@enterprisedb.com> wrote:
On Fri, Aug 28, 2015 at 10:30 PM, jacques klein <jacques.klei@googlemail.com> wrote:
Hello,

I added a "NOFITY chan" to the SQL arg of an SPI_execute(), (I did it also with just the NOTIFY statement),
but the listeners (other workers) don't get the notification until a "NOTIFY chan" is done for example with pgadmin,

They don't get lost, just not emited after the "not forgotten" call of CommitTransactionCommand().

Is this normal ( i.e. not supported (yet) ), a bug, or did I overlook some doc. (or source code) ?.

For now, I will try to "emit" the NOTIFY via libpq.

That's because ProcessCompletedNotifies isn't being called.  For regular backends it is called inside the top level loop PostgresMain.  I think you need to include "commands/async.h" and add a call to ProcessCompletedNotifies() after your background worker commits to make this work.

For the record, Jacques confirmed off-list that this worked, and I also did a couple of tests.

Is this expected?  If so, should it be documented -- perhaps with something like the attached?  Alternatively there may be some way to make CommitTransactionCommand do it, though the comments in ProcessCompletedNotifies explain why that was rejected, at least as far as AtCommit_Notify goes.

This made me wonder what happens if a background worker calls LISTEN.  NotifyMyFrontEnd simply logs the notifications, since there is no remote libpq to sent a message to.  Perhaps a way of delivering to background workers could be developed, though of course there are plenty of other kinds of IPC available already.

--
Вложения

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

Предыдущее
От: Adam Brightwell
Дата:
Сообщение: Re: One question about security label command
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: [patch] Proposal for \rotate in psql