Simplify permissions for LOCK TABLE.
authorJeff Davis <jdavis@postgresql.org>
Fri, 13 Jan 2023 22:14:54 +0000 (14:14 -0800)
committerJeff Davis <jdavis@postgresql.org>
Fri, 13 Jan 2023 22:33:19 +0000 (14:33 -0800)
commitc44f6334ca6ff6d242d9eb6742441bc4e1294067
tree96737157311289cfc4ffbebe74ada84016423a76
parentb7ae03953690a1dee455ba3823cc8f71a72cbe1d
Simplify permissions for LOCK TABLE.

The prior behavior was confusing and hard to document. For instance,
if you had UPDATE privileges, you could lock a table in any lock mode
except ACCESS SHARE mode.

Now, if granted a privilege to lock at a given mode, one also has
privileges to lock at a less-conflicting mode. MAINTAIN, UPDATE,
DELETE, and TRUNCATE privileges allow any lock mode. INSERT privileges
allow ROW EXCLUSIVE (or below). SELECT privileges allow ACCESS SHARE.

Reviewed-by: Nathan Bossart
Discussion: https://postgr.es/m/9550c76535404a83156252b25a11babb4792ea1e.camel%40j-davis.com
doc/src/sgml/ref/lock.sgml
src/backend/commands/lockcmds.c
src/test/regress/expected/privileges.out
src/test/regress/sql/privileges.sql