diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2010-02-16 22:34:57 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2010-02-16 22:34:57 +0000 |
commit | d1e027221d0243b7b57eabb0e482923dd7d1c8eb (patch) | |
tree | 034988b788248c88fad3b73fb4d8d1afff2dd509 /src/backend/tcop/postgres.c | |
parent | fc5173ad514a216dc93bc190dbba3751024a257d (diff) | |
download | postgresql-d1e027221d0243b7b57eabb0e482923dd7d1c8eb.tar.gz postgresql-d1e027221d0243b7b57eabb0e482923dd7d1c8eb.zip |
Replace the pg_listener-based LISTEN/NOTIFY mechanism with an in-memory queue.
In addition, add support for a "payload" string to be passed along with
each notify event.
This implementation should be significantly more efficient than the old one,
and is also more compatible with Hot Standby usage. There is not yet any
facility for HS slaves to receive notifications generated on the master,
although such a thing is possible in future.
Joachim Wieland, reviewed by Jeff Davis; also hacked on by me.
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r-- | src/backend/tcop/postgres.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 15d0808ad24..2ae15d5ce02 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.589 2010/02/16 20:15:14 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.590 2010/02/16 22:34:50 tgl Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -3779,7 +3779,8 @@ PostgresMain(int argc, char *argv[], const char *username) * collector, and to update the PS stats display. We avoid doing * those every time through the message loop because it'd slow down * processing of batched messages, and because we don't want to report - * uncommitted updates (that confuses autovacuum). + * uncommitted updates (that confuses autovacuum). The notification + * processor wants a call too, if we are not in a transaction block. */ if (send_ready_for_query) { @@ -3795,6 +3796,7 @@ PostgresMain(int argc, char *argv[], const char *username) } else { + ProcessCompletedNotifies(); pgstat_report_stat(false); set_ps_display("idle", false); |