mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Add new function pg_notification_queue_usage.
This tells you what fraction of NOTIFY's queue is currently filled. Brendan Jurd, reviewed by Merlin Moncure and Gurjeet Singh. A few further tweaks by me.
This commit is contained in:
17
src/test/isolation/expected/async-notify.out
Normal file
17
src/test/isolation/expected/async-notify.out
Normal file
@ -0,0 +1,17 @@
|
||||
Parsed test spec with 2 sessions
|
||||
|
||||
starting permutation: listen begin check notify check
|
||||
step listen: LISTEN a;
|
||||
step begin: BEGIN;
|
||||
step check: SELECT pg_notification_queue_usage() > 0 AS nonzero;
|
||||
nonzero
|
||||
|
||||
f
|
||||
step notify: SELECT count(pg_notify('a', s::text)) FROM generate_series(1, 1000) s;
|
||||
count
|
||||
|
||||
1000
|
||||
step check: SELECT pg_notification_queue_usage() > 0 AS nonzero;
|
||||
nonzero
|
||||
|
||||
t
|
14
src/test/isolation/specs/async-notify.spec
Normal file
14
src/test/isolation/specs/async-notify.spec
Normal file
@ -0,0 +1,14 @@
|
||||
# Verify that pg_notification_queue_usage correctly reports a non-zero result,
|
||||
# after submitting notifications while another connection is listening for
|
||||
# those notifications and waiting inside an active transaction.
|
||||
|
||||
session "listener"
|
||||
step "listen" { LISTEN a; }
|
||||
step "begin" { BEGIN; }
|
||||
teardown { ROLLBACK; }
|
||||
|
||||
session "notifier"
|
||||
step "check" { SELECT pg_notification_queue_usage() > 0 AS nonzero; }
|
||||
step "notify" { SELECT count(pg_notify('a', s::text)) FROM generate_series(1, 1000) s; }
|
||||
|
||||
permutation "listen" "begin" "check" "notify" "check"
|
@ -32,3 +32,11 @@ NOTIFY notify_async2;
|
||||
LISTEN notify_async2;
|
||||
UNLISTEN notify_async2;
|
||||
UNLISTEN *;
|
||||
-- Should return zero while there are no pending notifications.
|
||||
-- src/test/isolation/specs/async-notify.spec tests for actual usage.
|
||||
SELECT pg_notification_queue_usage();
|
||||
pg_notification_queue_usage
|
||||
-----------------------------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
|
@ -17,3 +17,7 @@ NOTIFY notify_async2;
|
||||
LISTEN notify_async2;
|
||||
UNLISTEN notify_async2;
|
||||
UNLISTEN *;
|
||||
|
||||
-- Should return zero while there are no pending notifications.
|
||||
-- src/test/isolation/specs/async-notify.spec tests for actual usage.
|
||||
SELECT pg_notification_queue_usage();
|
||||
|
Reference in New Issue
Block a user