v1-0001-Fix-SMgrRelation-object-memory-leak-in-DropRelationF.patch
application/octet-stream
Filename: v1-0001-Fix-SMgrRelation-object-memory-leak-in-DropRelationF.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch v1-0001
Subject: Fix SMgrRelation object memory leak in DropRelationFiles
| File | + | − |
|---|---|---|
| src/backend/storage/smgr/md.c | 1 | 1 |
| src/backend/storage/smgr/smgr.c | 1 | 2 |
| src/include/storage/smgr.h | 1 | 0 |
From 3d0dcea619b72a2409bb6747ded5a16f7428631d Mon Sep 17 00:00:00 2001
From: Jingtang Zhang <mrdrivingduck@gmail.com>
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