Re: Proper object locking for GRANT/REVOKE

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-11-09T12:43:13Z
Lists: pgsql-hackers
On 31.10.24 15:26, Bertrand Drouvot wrote:
> +  address = get_object_address(objtype, lfirst(cell), &relation, lockmode, false);
> +  Assert(relation == NULL);
> 
> Worth to explain why we do expect relation to be NULL here? (the comment on top
> of get_object_address() says it all, but maybe a few words here could be worth
> it).

There are several other callers with this pattern.

Maybe it would be better to push the assertion into 
get_object_address(), something like

     Assert(!relation || relp)

near the end.  Meaning, if you pass NULL for the relp argument, then you 
don't expect a relation.  This is kind of what will happen now anyway, 
except with a segfault instead of an assertion.




Commits

  1. Put back intra-grant-inplace.spec test coverage

  2. Improve objectNamesToOids() comment

  3. Proper object locking for GRANT/REVOKE

  4. Add an assertion in get_object_address()