On Fri, Dec 4, 2020 at 2:02 PM Hou, Zhijie <houzj.f...@cn.fujitsu.com> wrote: > > Hi, > > When test pg_terminate_backend_and_wait with parallel query. > I noticed that the function is not defined as parallel safe. > > I am not very familiar with the standard about whether a function should be > parallel safe. > But I found the following function are all defined as parallel safe: > > pg_promote > pg_terminate_backend(integer) > pg_sleep* > > Is there a reason why pg_terminate_backend_and_wait are not parallel safe ? > (I'm sorry if I miss something in previous mails.) >
I'm not quite sure of a use case where existing pg_terminate_backend() or for that matter the new pg_terminate_backend_and_wait() and pg_wait_backend() will ever get used from parallel workers. Having said that, I marked the new functions as parallel safe to keep it the way it is with existing pg_terminate_backend(). postgres=# select proparallel, proname, prosrc from pg_proc where proname IN ('pg_wait_backend', 'pg_terminate_backend'); proparallel | proname | prosrc -------------+----------------------+------------------------------- s | pg_terminate_backend | pg_terminate_backend s | pg_wait_backend | pg_wait_backend s | pg_terminate_backend | pg_terminate_backend_and_wait (3 rows) Attaching v6 patch. Please have a look. With Regards, Bharath Rupireddy. EnterpriseDB: http://www.enterprisedb.com
v6-0001-pg_terminate_backend-with-wait-timeout-and-pg_wai.patch
Description: Binary data