Re: Use LOCKMODE in parse_relation.c/.h

Andreas Karlsson <andreas@proxel.se>

From: Andreas Karlsson <andreas@proxel.se>
To: Peter Eisentraut <peter@eisentraut.org>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-02-18T17:19:57Z
Lists: pgsql-hackers
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.

Andreas




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.