Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "alexwork033(at)gmail(dot)com" <alexwork033(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>
Subject: Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs
Date: 2024-03-27 16:41:04
Message-ID: 20240327164104.GA4122659@nathanxps13
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Mar 27, 2024 at 01:21:23PM -0300, Ranier Vilela wrote:
> Nathan Bossart <nathandbossart(at)gmail(dot)com> writes:
>>Committed with that change. Thanks for the guidance on this one.
>
> I think that left an oversight in a commit d365ae7
> <https://github.com/postgres/postgres/commit/d365ae705409f5d9c81da4b668f59c3598feb512>
> If the admin_role is a NULL pointer, so, can be dereferenced
> in the main loop of the function roles_is_member_of and
> worst, IMO, can be destroying aleatory memory?
>
> First, is a better shortcut test to check if admin_role is NOT NULL.
> Second, !OidIsValid(*admin_role), It doesn't seem necessary anymore.
>
> Or am I losing something?

If admin_role is NULL, then admin_of is expected to be set to InvalidOid.
See the assertion at the top of the function. AFAICT the code that
dereferences admin_role short-circuits if admin_of is invalid.

--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Ranier Vilela 2024-03-27 16:47:38 Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs
Previous Message Ranier Vilela 2024-03-27 16:21:23 Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs