Commit 4886da83 authored by Tom Lane's avatar Tom Lane

Mark advisory-lock functions as parallel restricted, not parallel unsafe.

There seems no good reason not to allow a parallel leader to execute
these functions.  (The workers still can't, though.  Although the code
would work, any such lock would go away at worker exit, which is not
the documented behavior of advisory locks.)

Discussion: https://postgr.es/m/11847.1564496844@sss.pgh.pa.us
parent fd6ec93b
...@@ -53,6 +53,6 @@ ...@@ -53,6 +53,6 @@
*/ */
/* yyyymmddN */ /* yyyymmddN */
#define CATALOG_VERSION_NO 201907222 #define CATALOG_VERSION_NO 201908011
#endif #endif
...@@ -7951,87 +7951,87 @@ ...@@ -7951,87 +7951,87 @@
# userlock replacements # userlock replacements
{ oid => '2880', descr => 'obtain exclusive advisory lock', { oid => '2880', descr => 'obtain exclusive advisory lock',
proname => 'pg_advisory_lock', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_lock', provolatile => 'v', proparallel => 'r',
prorettype => 'void', proargtypes => 'int8', prorettype => 'void', proargtypes => 'int8',
prosrc => 'pg_advisory_lock_int8' }, prosrc => 'pg_advisory_lock_int8' },
{ oid => '3089', descr => 'obtain exclusive advisory lock', { oid => '3089', descr => 'obtain exclusive advisory lock',
proname => 'pg_advisory_xact_lock', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_xact_lock', provolatile => 'v', proparallel => 'r',
prorettype => 'void', proargtypes => 'int8', prorettype => 'void', proargtypes => 'int8',
prosrc => 'pg_advisory_xact_lock_int8' }, prosrc => 'pg_advisory_xact_lock_int8' },
{ oid => '2881', descr => 'obtain shared advisory lock', { oid => '2881', descr => 'obtain shared advisory lock',
proname => 'pg_advisory_lock_shared', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_lock_shared', provolatile => 'v', proparallel => 'r',
prorettype => 'void', proargtypes => 'int8', prorettype => 'void', proargtypes => 'int8',
prosrc => 'pg_advisory_lock_shared_int8' }, prosrc => 'pg_advisory_lock_shared_int8' },
{ oid => '3090', descr => 'obtain shared advisory lock', { oid => '3090', descr => 'obtain shared advisory lock',
proname => 'pg_advisory_xact_lock_shared', provolatile => 'v', proname => 'pg_advisory_xact_lock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'void', proargtypes => 'int8', proparallel => 'r', prorettype => 'void', proargtypes => 'int8',
prosrc => 'pg_advisory_xact_lock_shared_int8' }, prosrc => 'pg_advisory_xact_lock_shared_int8' },
{ oid => '2882', descr => 'obtain exclusive advisory lock if available', { oid => '2882', descr => 'obtain exclusive advisory lock if available',
proname => 'pg_try_advisory_lock', provolatile => 'v', proparallel => 'u', proname => 'pg_try_advisory_lock', provolatile => 'v', proparallel => 'r',
prorettype => 'bool', proargtypes => 'int8', prorettype => 'bool', proargtypes => 'int8',
prosrc => 'pg_try_advisory_lock_int8' }, prosrc => 'pg_try_advisory_lock_int8' },
{ oid => '3091', descr => 'obtain exclusive advisory lock if available', { oid => '3091', descr => 'obtain exclusive advisory lock if available',
proname => 'pg_try_advisory_xact_lock', provolatile => 'v', proname => 'pg_try_advisory_xact_lock', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', proparallel => 'r', prorettype => 'bool', proargtypes => 'int8',
prosrc => 'pg_try_advisory_xact_lock_int8' }, prosrc => 'pg_try_advisory_xact_lock_int8' },
{ oid => '2883', descr => 'obtain shared advisory lock if available', { oid => '2883', descr => 'obtain shared advisory lock if available',
proname => 'pg_try_advisory_lock_shared', provolatile => 'v', proname => 'pg_try_advisory_lock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', proparallel => 'r', prorettype => 'bool', proargtypes => 'int8',
prosrc => 'pg_try_advisory_lock_shared_int8' }, prosrc => 'pg_try_advisory_lock_shared_int8' },
{ oid => '3092', descr => 'obtain shared advisory lock if available', { oid => '3092', descr => 'obtain shared advisory lock if available',
proname => 'pg_try_advisory_xact_lock_shared', provolatile => 'v', proname => 'pg_try_advisory_xact_lock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', proparallel => 'r', prorettype => 'bool', proargtypes => 'int8',
prosrc => 'pg_try_advisory_xact_lock_shared_int8' }, prosrc => 'pg_try_advisory_xact_lock_shared_int8' },
{ oid => '2884', descr => 'release exclusive advisory lock', { oid => '2884', descr => 'release exclusive advisory lock',
proname => 'pg_advisory_unlock', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_unlock', provolatile => 'v', proparallel => 'r',
prorettype => 'bool', proargtypes => 'int8', prorettype => 'bool', proargtypes => 'int8',
prosrc => 'pg_advisory_unlock_int8' }, prosrc => 'pg_advisory_unlock_int8' },
{ oid => '2885', descr => 'release shared advisory lock', { oid => '2885', descr => 'release shared advisory lock',
proname => 'pg_advisory_unlock_shared', provolatile => 'v', proname => 'pg_advisory_unlock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int8', proparallel => 'r', prorettype => 'bool', proargtypes => 'int8',
prosrc => 'pg_advisory_unlock_shared_int8' }, prosrc => 'pg_advisory_unlock_shared_int8' },
{ oid => '2886', descr => 'obtain exclusive advisory lock', { oid => '2886', descr => 'obtain exclusive advisory lock',
proname => 'pg_advisory_lock', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_lock', provolatile => 'v', proparallel => 'r',
prorettype => 'void', proargtypes => 'int4 int4', prorettype => 'void', proargtypes => 'int4 int4',
prosrc => 'pg_advisory_lock_int4' }, prosrc => 'pg_advisory_lock_int4' },
{ oid => '3093', descr => 'obtain exclusive advisory lock', { oid => '3093', descr => 'obtain exclusive advisory lock',
proname => 'pg_advisory_xact_lock', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_xact_lock', provolatile => 'v', proparallel => 'r',
prorettype => 'void', proargtypes => 'int4 int4', prorettype => 'void', proargtypes => 'int4 int4',
prosrc => 'pg_advisory_xact_lock_int4' }, prosrc => 'pg_advisory_xact_lock_int4' },
{ oid => '2887', descr => 'obtain shared advisory lock', { oid => '2887', descr => 'obtain shared advisory lock',
proname => 'pg_advisory_lock_shared', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_lock_shared', provolatile => 'v', proparallel => 'r',
prorettype => 'void', proargtypes => 'int4 int4', prorettype => 'void', proargtypes => 'int4 int4',
prosrc => 'pg_advisory_lock_shared_int4' }, prosrc => 'pg_advisory_lock_shared_int4' },
{ oid => '3094', descr => 'obtain shared advisory lock', { oid => '3094', descr => 'obtain shared advisory lock',
proname => 'pg_advisory_xact_lock_shared', provolatile => 'v', proname => 'pg_advisory_xact_lock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'void', proargtypes => 'int4 int4', proparallel => 'r', prorettype => 'void', proargtypes => 'int4 int4',
prosrc => 'pg_advisory_xact_lock_shared_int4' }, prosrc => 'pg_advisory_xact_lock_shared_int4' },
{ oid => '2888', descr => 'obtain exclusive advisory lock if available', { oid => '2888', descr => 'obtain exclusive advisory lock if available',
proname => 'pg_try_advisory_lock', provolatile => 'v', proparallel => 'u', proname => 'pg_try_advisory_lock', provolatile => 'v', proparallel => 'r',
prorettype => 'bool', proargtypes => 'int4 int4', prorettype => 'bool', proargtypes => 'int4 int4',
prosrc => 'pg_try_advisory_lock_int4' }, prosrc => 'pg_try_advisory_lock_int4' },
{ oid => '3095', descr => 'obtain exclusive advisory lock if available', { oid => '3095', descr => 'obtain exclusive advisory lock if available',
proname => 'pg_try_advisory_xact_lock', provolatile => 'v', proname => 'pg_try_advisory_xact_lock', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', proparallel => 'r', prorettype => 'bool', proargtypes => 'int4 int4',
prosrc => 'pg_try_advisory_xact_lock_int4' }, prosrc => 'pg_try_advisory_xact_lock_int4' },
{ oid => '2889', descr => 'obtain shared advisory lock if available', { oid => '2889', descr => 'obtain shared advisory lock if available',
proname => 'pg_try_advisory_lock_shared', provolatile => 'v', proname => 'pg_try_advisory_lock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', proparallel => 'r', prorettype => 'bool', proargtypes => 'int4 int4',
prosrc => 'pg_try_advisory_lock_shared_int4' }, prosrc => 'pg_try_advisory_lock_shared_int4' },
{ oid => '3096', descr => 'obtain shared advisory lock if available', { oid => '3096', descr => 'obtain shared advisory lock if available',
proname => 'pg_try_advisory_xact_lock_shared', provolatile => 'v', proname => 'pg_try_advisory_xact_lock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', proparallel => 'r', prorettype => 'bool', proargtypes => 'int4 int4',
prosrc => 'pg_try_advisory_xact_lock_shared_int4' }, prosrc => 'pg_try_advisory_xact_lock_shared_int4' },
{ oid => '2890', descr => 'release exclusive advisory lock', { oid => '2890', descr => 'release exclusive advisory lock',
proname => 'pg_advisory_unlock', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_unlock', provolatile => 'v', proparallel => 'r',
prorettype => 'bool', proargtypes => 'int4 int4', prorettype => 'bool', proargtypes => 'int4 int4',
prosrc => 'pg_advisory_unlock_int4' }, prosrc => 'pg_advisory_unlock_int4' },
{ oid => '2891', descr => 'release shared advisory lock', { oid => '2891', descr => 'release shared advisory lock',
proname => 'pg_advisory_unlock_shared', provolatile => 'v', proname => 'pg_advisory_unlock_shared', provolatile => 'v',
proparallel => 'u', prorettype => 'bool', proargtypes => 'int4 int4', proparallel => 'r', prorettype => 'bool', proargtypes => 'int4 int4',
prosrc => 'pg_advisory_unlock_shared_int4' }, prosrc => 'pg_advisory_unlock_shared_int4' },
{ oid => '2892', descr => 'release all advisory locks', { oid => '2892', descr => 'release all advisory locks',
proname => 'pg_advisory_unlock_all', provolatile => 'v', proparallel => 'u', proname => 'pg_advisory_unlock_all', provolatile => 'v', proparallel => 'r',
prorettype => 'void', proargtypes => '', prosrc => 'pg_advisory_unlock_all' }, prorettype => 'void', proargtypes => '', prosrc => 'pg_advisory_unlock_all' },
# XML support # XML support
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment