]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Disallow LISTEN in background workers.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 15 Sep 2021 16:31:56 +0000 (12:31 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 15 Sep 2021 16:31:56 +0000 (12:31 -0400)
commite06cc024bd3372cb4280246e114d7508e3e2c20a
treeca9f51481c29fcbf96c1e0e41a9d193c2d181aea
parent63f28776cb9fbefd99c5e2134f02c80057b8b717
Disallow LISTEN in background workers.

It's possible to execute user-defined SQL in some background processes;
for example, logical replication workers can fire triggers.  This opens
the possibility that someone would try to execute LISTEN in such a
context.  But since only regular backends ever call
ProcessNotifyInterrupt, no messages would actually be received, and
thus the registered listener would simply prevent the message queue
from being cleaned.  Eventually NOTIFY would stop working, which is bad.

Perhaps someday somebody will invent infrastructure to make listening
in a background worker actually useful.  In the meantime, forbid it.

Back-patch to v13, which is where we introduced the MyBackendType
variable.  It'd be a lot harder to implement the check without that,
and it doesn't seem worth the trouble.

Discussion: https://postgr.es/m/153243441449.1404.2274116228506175596@wrigleys.postgresql.org
src/backend/tcop/utility.c