You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudberry.apache.org by ch...@apache.org on 2025/12/23 16:38:51 UTC

(cloudberry) branch cbdb-postgres-merge updated: Add BM_TEMP to buffer state for temp relation

This is an automated email from the ASF dual-hosted git repository.

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this push:
     new 2d379a3cf1d Add BM_TEMP to buffer state for temp relation
2d379a3cf1d is described below

commit 2d379a3cf1dcc2375164c47fff971ffe7565c72d
Author: Jinbao Chen <ch...@gmail.com>
AuthorDate: Wed Dec 24 00:37:41 2025 +0800

    Add BM_TEMP to buffer state for temp relation
---
 src/backend/access/bitmap/bitmappages.c | 6 ++----
 src/backend/storage/buffer/bufmgr.c     | 7 +++++++
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/backend/access/bitmap/bitmappages.c b/src/backend/access/bitmap/bitmappages.c
index d4b9d1e3f4c..e9749000d9d 100644
--- a/src/backend/access/bitmap/bitmappages.c
+++ b/src/backend/access/bitmap/bitmappages.c
@@ -88,10 +88,8 @@ _bitmap_getbuf(Relation rel, BlockNumber blkno, int access)
 		if (needLock)
 			LockRelationForExtension(rel, ExclusiveLock);
 
-		buf = ReadBuffer(rel, P_NEW);
-
-		/* Acquire buffer lock on new page */
-		LockBuffer(buf, BM_WRITE);
+		buf = ExtendBufferedRel(BMR_REL(rel), MAIN_FORKNUM, NULL,
+								EB_SKIP_EXTENSION_LOCK | EB_LOCK_FIRST);
 
 		/*
 		 * Release the file-extension lock; it's now OK for someone else to
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index f35efc9e13b..0f23037fb0e 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -2135,6 +2135,8 @@ ExtendBufferedRelShared(BufferManagerRelation bmr,
 			buf_state |= BM_TAG_VALID | BUF_USAGECOUNT_ONE;
 			if (bmr.relpersistence == RELPERSISTENCE_PERMANENT || fork == INIT_FORKNUM)
 				buf_state |= BM_PERMANENT;
+			else if (bmr.relpersistence == RELPERSISTENCE_TEMP)
+				buf_state |= BM_TAG_VALID | BM_TEMP | BUF_USAGECOUNT_ONE;
 
 			UnlockBufHdr(victim_buf_hdr, buf_state);
 
@@ -5472,6 +5474,11 @@ AbortBufferIO(Buffer buffer)
 
 			path = relpathperm(BufTagGetRelFileLocator(&buf_hdr->tag),
 							   BufTagGetForkNum(&buf_hdr->tag));
+
+			path = relpathbackend(BufTagGetRelFileLocator(&buf_hdr->tag),
+								  (buf_state & BM_TEMP) ?
+								  TempRelBackendId : InvalidBackendId,
+								  BufTagGetForkNum(&buf_hdr->tag));
 			ereport(WARNING,
 					(errcode(ERRCODE_IO_ERROR),
 					 errmsg("could not write block %u of %s",


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cloudberry.apache.org
For additional commands, e-mail: commits-help@cloudberry.apache.org