]> granicus.if.org Git - postgresql/commit
Have pg_terminate/cancel_backend not ERROR on non-existent processes
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 27 Sep 2012 15:15:03 +0000 (12:15 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 27 Sep 2012 15:28:59 +0000 (12:28 -0300)
commit01546402d4cbf88a66e680be5a9c6f018518050a
treedeb85f4de3571260b381416e8d5bc0a2b97b0282
parentf7b836eb83dce05976dd07f71c92c16a718b89f6
Have pg_terminate/cancel_backend not ERROR on non-existent processes

This worked fine for superusers, but not for ordinary users trying to
cancel their own processes.  Tweak the order the checks are done in so
that we correctly return SIGNAL_BACKEND_ERROR (which current callers
know to ignore without erroring out) so that an ordinary user can loop
through a resultset without fearing that a process might exit in the
middle of said looping -- causing the remaining processes to go
unsignalled.

Incidentally, the last in-core caller of IsBackendPid() is now gone.
However, the function is exported and must remain in place, because
there are plenty of callers in external modules.

Author: Josh Kupershmidt

Reviewed by Noah Misch
src/backend/utils/adt/misc.c