pgsql: Remove unnecessary failure cases in RemoveRoleFromObjectPolicy()

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Remove unnecessary failure cases in RemoveRoleFromObjectPolicy()
Дата
Msg-id E1lwq7W-0004zu-Gq@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Remove unnecessary failure cases in RemoveRoleFromObjectPolicy().

It's not really necessary for this function to open or lock the
relation associated with the pg_policy entry it's modifying.  The
error checks it's making on the rel are if anything counterproductive
(e.g., if we don't want to allow installation of policies on system
catalogs, here is not the place to prevent that).  In particular, it
seems just wrong to insist on an ownership check.  That has the net
effect of forcing people to use superuser for DROP OWNED BY, which
surely is not an effect we want.  Also there is no point in rebuilding
the dependencies of the policy expressions, which aren't being
changed.  Lastly, locking the table also seems counterproductive; it's
not helping to prevent race conditions, since we failed to re-read the
pg_policy row after acquiring the lock.  That means that concurrent
DDL would likely result in "tuple concurrently updated/deleted"
errors; which is the same behavior this code will produce, with less
overhead.

Per discussion of bug #17062.  Back-patch to all supported versions,
as the failure cases this eliminates seem just as undesirable in 9.6
as in HEAD.

Discussion: https://postgr.es/m/1573181.1624220108@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5a0f1c8c0193f0dd7fba50c22d96781fa2414007

Modified Files
--------------
src/backend/commands/policy.c | 195 ++++++++++--------------------------------
1 file changed, 47 insertions(+), 148 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pgsql: Doc: remove commit f560209c6 from v14 release notes.
Следующее
От: Michael Paquier
Дата:
Сообщение: pgsql: Remove some useless logs from the TAP tests of pgbench