• Tom Lane's avatar
    Disallow LISTEN in background workers. · d84d62b6
    Tom Lane authored
    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
    d84d62b6
utility.c 89.9 KB