On Fri, May 8, 2020 at 10:19 AM Christophe Pettus <xof@thebuild.com> wrote:
If you don't want to periodically poll the table, you can use NOTIFY within the trigger to wake up a process that is waiting on NOTIFY.
Kinda.
"With the libpq library, the application issues LISTEN as an ordinary SQL command, and then must periodically call the function PQnotifies to find out whether any notification events have been received.".
IOW, the interface for the client is still a polling interface its just that with LISTEN the event is transient and in-memory only (on the server) and thus has less overhead.
Doesn't have to be. You can use PQsocket() to get the socket back, and then select() or poll() on that socket, and you only have to call PQnotifies() once that call has indicated "something happened".
Similar applies to writing such daemons using for example the python or perl interfaces. You block your process or thread on select() and take action when that one returns.