Heikki Linnakangas wrote: > KaiGai Kohei wrote: >> Currently, the ACL_SELECT_FOR_UPDATE privilege is defined as an alias >> of ACL_UPDATE as follows: >> >> at src/include/nodes/parsenodes.h: >> : >> /* Currently, SELECT ... FOR UPDATE/FOR SHARE requires UPDATE privileges */ >> #define ACL_SELECT_FOR_UPDATE ACL_UPDATE >> : >> >> It is unconfortable for us because SE-PostgreSQL have two individual >> permissions for updates (db_table:{update}) and explicit table locks >> (db_table:{lock}), but it unables to discriminate whether the given >> relation is actually used for UPDATE or SELECT FOR UPDATE. > > What's the point of doing SELECT FOR UPDATE if you're not actually going > to UPDATE the row? Having separate permissions for SELECT FOR UPDATE and > UPDATE seems useless.
I wonder why SELECT FOR UPDATE need ACL_UPDATE, although the statement itself does not modify any of the given relation. Indeed, it normally leads UPDATE statements, but I think ACL_UPDATE should be checked on the later phase. > A separate permission for SELECT FOR SHARE makes more sense, though. It is my major concern rather than exclusive locks. The SELECT FOR SHARE statement also requires ACL_SELECT_FOR_UPDATE, although it is a read only operation. It makes us hard to set up a table with foreign-key which refers a primary-key on read-only table, for example. Thanks, -- OSS Platform Development Division, NEC KaiGai Kohei <kai...@ak.jp.nec.com> -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers