From 3d0dcea619b72a2409bb6747ded5a16f7428631d Mon Sep 17 00:00:00 2001 From: Jingtang Zhang Date: Fri, 15 Aug 2025 18:11:02 +0800 Subject: [PATCH] Fix SMgrRelation object memory leak in DropRelationFiles to be done --- src/backend/storage/smgr/md.c | 2 +- src/backend/storage/smgr/smgr.c | 3 +-- src/include/storage/smgr.h | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index 2ccb0faceb5..f9d65cb5b65 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -1607,7 +1607,7 @@ DropRelationFiles(RelFileLocator *delrels, int ndelrels, bool isRedo) smgrdounlinkall(srels, ndelrels, isRedo); for (i = 0; i < ndelrels; i++) - smgrclose(srels[i]); + smgrdestroy(srels[i]); pfree(srels); } diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index bce37a36d51..a646c2ef725 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -163,7 +163,6 @@ static dlist_head unpinned_relns; /* local function prototypes */ static void smgrshutdown(int code, Datum arg); -static void smgrdestroy(SMgrRelation reln); static void smgr_aio_reopen(PgAioHandle *ioh); static char *smgr_aio_describe_identity(const PgAioTargetData *sd); @@ -319,7 +318,7 @@ smgrunpin(SMgrRelation reln) /* * smgrdestroy() -- Delete an SMgrRelation object. */ -static void +void smgrdestroy(SMgrRelation reln) { ForkNumber forknum; diff --git a/src/include/storage/smgr.h b/src/include/storage/smgr.h index 3964d9334b3..3b07b3ceea1 100644 --- a/src/include/storage/smgr.h +++ b/src/include/storage/smgr.h @@ -82,6 +82,7 @@ extern bool smgrexists(SMgrRelation reln, ForkNumber forknum); extern void smgrpin(SMgrRelation reln); extern void smgrunpin(SMgrRelation reln); extern void smgrclose(SMgrRelation reln); +extern void smgrdestroy(SMgrRelation reln); extern void smgrdestroyall(void); extern void smgrrelease(SMgrRelation reln); extern void smgrreleaseall(void); -- 2.39.3