Hi,

Commit [1] introduced a new memory context suitable for situations when we
should allocate a large amount of memory with no need to free or reallocate it.

I think that it will be useful for temp buffers :
1) We allocate them lazily and never try to free them.
2) Some users are very active in working with temporary tables, and as
a result,
they set large values for the "temp_buffers" parameter (several gigabytes).

Thus, the use case for temp buffers seems to perfectly fit for bump
memory context.
What do you think?

[1] 29f6a959cfd8ffa7d6db2c0629439c5329e2853e

--
Best regards,
Daniil Davydov
From 046f86e79110005d783b00fe0a73af7ad2a0d3cf Mon Sep 17 00:00:00 2001
From: Daniil Davidov <[email protected]>
Date: Tue, 16 Dec 2025 14:45:22 +0700
Subject: [PATCH] Use bump memcxt for temp buffers

---
 src/backend/storage/buffer/localbuf.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c
index 15aac7d1c9f..cb2d7141f9d 100644
--- a/src/backend/storage/buffer/localbuf.c
+++ b/src/backend/storage/buffer/localbuf.c
@@ -922,9 +922,9 @@ GetLocalBufferStorage(void)
 		 */
 		if (LocalBufferContext == NULL)
 			LocalBufferContext =
-				AllocSetContextCreate(TopMemoryContext,
-									  "LocalBufferContext",
-									  ALLOCSET_DEFAULT_SIZES);
+				BumpContextCreate(TopMemoryContext,
+								  "LocalBufferContext",
+								  ALLOCSET_DEFAULT_SIZES);
 
 		/* Start with a 16-buffer request; subsequent ones double each time */
 		num_bufs = Max(num_bufs_in_block * 2, 16);
-- 
2.43.0

Reply via email to