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

Поиск
Список
Период
Сортировка
От Ranier Vilela
Тема Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs
Дата
Msg-id CAEudQApRX9FknxuAe1h1ssjCuqSxefj+UnCcM+DMcbEtmVX2iA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs  (Nathan Bossart <nathandbossart@gmail.com>)
Ответы Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs  (Nathan Bossart <nathandbossart@gmail.com>)
Список pgsql-hackers
Em qua., 27 de mar. de 2024 às 13:41, Nathan Bossart <nathandbossart@gmail.com> escreveu:
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.
These conditions seem a little fragile and confusing to me.
When a simple test, it protects the pointer and avoids a series of tests, 
which are unnecessary if the pointer is invalid.

best regards,
Ranier Vilela

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

Предыдущее
От: Nathan Bossart
Дата:
Сообщение: Re: Slow GRANT ROLE on PostgreSQL 16 with thousands of ROLEs
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Query Regarding frame options initialization in Window aggregate state