Re: pgsql: Fix misbehavior of DROP OWNED BY with duplicate polroles entries

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: Re: pgsql: Fix misbehavior of DROP OWNED BY with duplicate polroles entries
Date: 2021-06-18 23:18:18
Message-ID: YM0puvBnbBIZxJt2@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

On Fri, Jun 18, 2021 at 10:00:33PM +0000, Tom Lane wrote:
> Fix misbehavior of DROP OWNED BY with duplicate polroles entries.
>
> Ordinarily, a pg_policy.polroles array wouldn't list the same role
> more than once; but CREATE POLICY does not prevent that. If we
> perform DROP OWNED BY on a role that is listed more than once,
> RemoveRoleFromObjectPolicy either suffered an assertion failure
> or encountered a tuple-updated-by-self error. Rewrite it to cope
> correctly with duplicate entries, and add a CommandCounterIncrement
> call to prevent the other problem.
>
> Per discussion, there's other cleanup that ought to happen here,
> but this seems like the minimum essential fix.

A nit here.
+ /* If any roles remain, update the policy entry. */
+ if (num_roles > 0)
+ {
/* This is the array for the new tuple */
This indentation is incorrect.
--
Michael

In response to

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2021-06-19 02:42:41 Re: pgsql: Fix misbehavior of DROP OWNED BY with duplicate polroles entries
Previous Message Alvaro Herrera 2021-06-18 22:50:03 pgsql: Add test case for obsoleting slot with active walsender