Use table/index_close() more consistently
authorMichael Paquier <michael@paquier.xyz>
Thu, 18 Dec 2025 22:55:58 +0000 (07:55 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 18 Dec 2025 22:55:58 +0000 (07:55 +0900)
All the code paths updated here have been using relation_close() to
close a relation that has already been opened with table_open() or
index_open(), where a relkind check is enforced.

table_close() and index_open() do the same thing as relation_close(), so
there was no harm, but being inconsistent could lead to issues if the
internals of these close() functions begin to introduce some logic
specific to each relkind in the future.

Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Discussion: https://postgr.es/m/aUKamYGiDKO6byp5@ip-10-97-1-34.eu-west-3.compute.internal

src/backend/access/brin/brin.c
src/backend/parser/parse_utilcmd.c

index 26cb75058d19126682ea3f7cd9689e8f8b3f2567..45d306037a4bb9401dd7f739b5cc9551e2d5e008 100644 (file)
@@ -1478,8 +1478,8 @@ brin_summarize_range(PG_FUNCTION_ARGS)
    /* Restore userid and security context */
    SetUserIdAndSecContext(save_userid, save_sec_context);
 
-   relation_close(indexRel, ShareUpdateExclusiveLock);
-   relation_close(heapRel, ShareUpdateExclusiveLock);
+   index_close(indexRel, ShareUpdateExclusiveLock);
+   table_close(heapRel, ShareUpdateExclusiveLock);
 
    PG_RETURN_INT32((int32) numSummarized);
 }
@@ -1568,8 +1568,8 @@ brin_desummarize_range(PG_FUNCTION_ARGS)
                 errmsg("index \"%s\" is not valid",
                        RelationGetRelationName(indexRel))));
 
-   relation_close(indexRel, ShareUpdateExclusiveLock);
-   relation_close(heapRel, ShareUpdateExclusiveLock);
+   index_close(indexRel, ShareUpdateExclusiveLock);
+   table_close(heapRel, ShareUpdateExclusiveLock);
 
    PG_RETURN_VOID();
 }
index 375b40b29af84b52821a27da47bad8b791fba951..2b7b084f2162ca69669b0549b8a78c8090026b1d 100644 (file)
@@ -2572,7 +2572,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt)
        }
 
        /* Close the index relation but keep the lock */
-       relation_close(index_rel, NoLock);
+       index_close(index_rel, NoLock);
 
        index->indexOid = index_oid;
    }