Re: incorrect pg_dump output due to not handling dropped rolescorrectly - Mailing list pgsql-bugs

From Michael Paquier
Subject Re: incorrect pg_dump output due to not handling dropped rolescorrectly
Date
Msg-id 20191118115616.GF1543@paquier.xyz
Whole thread Raw
In response to Re: incorrect pg_dump output due to not handling dropped rolescorrectly  (Floris Van Nee <florisvannee@Optiver.com>)
Responses Re: incorrect pg_dump output due to not handling dropped rolescorrectly  (Stephen Frost <sfrost@snowman.net>)
List pgsql-bugs
On Mon, Nov 18, 2019 at 09:16:06AM +0000, Floris Van Nee wrote:
> So, if we do it during DROP OWNED BY, we should also handle it
> during one of the below REVOKE commands. Perhaps DROP OWNED BY
> already calls one of these functions internally - in that case you
> can ignore my comment. Just wanted to make sure we catch all
> possible cases this can occur.

One problem here is that you would need to scan and track down all the
entries in pg_init_privs if you'd like to make sure that all the
traces of the role have been removed, so that's really not good for
performance.  The fix I was actually imagining upthread would be to
add a new type of entry in pg_shdepend linking the role with
pg_init_privs for the object where an ACL is added.  This would
prevent DROP ROLE to complete with your scenarios, and if the role
ownerships are dropped we could use the link between the object and
the role to remove directly the ACL for the role in the object.
That's not really backpatchable unfortunately.  On top of the new
pg_depend type we would need a new cleanup routine similar to what
happens for policy ACLs when dropping a role.
--
Michael

Attachment

pgsql-bugs by date:

Previous
From: Floris Van Nee
Date:
Subject: Re: incorrect pg_dump output due to not handling dropped rolescorrectly
Next
From: Tomas Vondra
Date:
Subject: Re: BUG #16122: segfault pg_detoast_datum (datum=0x0) at fmgr.c:1833numrange query