From caa2f84ebcc23ba2be03e45ce78e1cd25b6b8816 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Wed, 18 Feb 2026 10:35:38 +0100 Subject: [PATCH] Use LOCKMODE in parse_relation.c/.h There were 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. --- src/backend/parser/parse_relation.c | 12 ++---------- src/include/parser/parse_relation.h | 5 +++-- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index 3ec8d8de011..e003db520de 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -1422,13 +1422,9 @@ buildNSItemFromLists(RangeTblEntry *rte, Index rtindex, * This is essentially just the same as table_openrv(), except that it caters * to some parser-specific error reporting needs, notably that it arranges * to include the RangeVar's parse location in any resulting error. - * - * 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. */ Relation -parserOpenTable(ParseState *pstate, const RangeVar *relation, int lockmode) +parserOpenTable(ParseState *pstate, const RangeVar *relation, LOCKMODE lockmode) { Relation rel; ParseCallbackState pcbstate; @@ -1571,15 +1567,11 @@ addRangeTableEntry(ParseState *pstate, * of AccessShareLock, RowShareLock, or RowExclusiveLock depending on the * RTE's role within the query. The caller must hold that lock mode * or a stronger one. - * - * 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. */ ParseNamespaceItem * addRangeTableEntryForRelation(ParseState *pstate, Relation rel, - int lockmode, + LOCKMODE lockmode, Alias *alias, bool inh, bool inFromCl) diff --git a/src/include/parser/parse_relation.h b/src/include/parser/parse_relation.h index 5379330a9bf..46b2d5ca02a 100644 --- a/src/include/parser/parse_relation.h +++ b/src/include/parser/parse_relation.h @@ -15,6 +15,7 @@ #define PARSE_RELATION_H #include "parser/parse_node.h" +#include "storage/lockdefs.h" extern ParseNamespaceItem *refnameNamespaceItem(ParseState *pstate, @@ -44,7 +45,7 @@ extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonl extern void markNullableIfNeeded(ParseState *pstate, Var *var); extern void markVarForSelectPriv(ParseState *pstate, Var *var); extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation, - int lockmode); + LOCKMODE lockmode); extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate, RangeVar *relation, Alias *alias, @@ -52,7 +53,7 @@ extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate, bool inFromCl); extern ParseNamespaceItem *addRangeTableEntryForRelation(ParseState *pstate, Relation rel, - int lockmode, + LOCKMODE lockmode, Alias *alias, bool inh, bool inFromCl); -- 2.53.0