Re: Use LOCKMODE in parse_relation.c/.h

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Andreas Karlsson <andreas@proxel.se>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-02-23T20:27:30Z
Lists: pgsql-hackers
On 18.02.26 18:19, Andreas Karlsson wrote:
> On 2/18/26 10:50 AM, Peter Eisentraut wrote:
>> There are a couple of comments in parse_relation.c
>>
>>  > Note: properly, lockmode should be declared LOCKMODE not int, but that
>>  > would require importing storage/lock.h into parse_relation.h.  Since
>>  > LOCKMODE is typedef'd as int anyway, that seems like overkill.
>>
>> but actually LOCKMODE has been in storage/lockdefs.h for a while,
>> which is intentionally a more narrow header.  So we can include that
>> one in parse_relation.h and just use LOCKMODE normally.
>>
>> An alternative would be to add a duplicate typedef into 
>> parse_relation.h, but that doesn't seem necessary here.
> 
> Looks like a nice change and I did not find any more cases where we 
> should fix this.
> 
> But when I was looking I found a case where BufferLockMode could be used 
> in the gin code (ginStepRight() and the brin (brinGetTupleForHeapBlock) 
> code but I am not sure there are worth fixing.

I think these could be worth improving, if only to make the function 
signatures more clear (there are different kinds of enums for different 
kinds of lock modes).




Commits

  1. Use LOCKMODE in parse_relation.c/.h

  2. Don't include low level locking code from frontend code.

  3. Add a bunch of new error location reports to parse-analysis error messages.