From 3812a3e497a69fc083ea88d10c05614319f350ec Mon Sep 17 00:00:00 2001
From: Maxim Orlov <orlovmg@gmail.com>
Date: Wed, 26 Feb 2025 11:17:50 +0300
Subject: [PATCH v0] =?UTF-8?q?Expect=20huge=20number=20of=20=E2=80=8B?=
 =?UTF-8?q?=E2=80=8Brequests=20in=20checkpointer?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/backend/postmaster/checkpointer.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c
index 7acbbd3e26..17635bc018 100644
--- a/src/backend/postmaster/checkpointer.c
+++ b/src/backend/postmaster/checkpointer.c
@@ -1232,7 +1232,8 @@ CompactCheckpointerRequestQueue(void)
 		return false;
 
 	/* Initialize skip_slot array */
-	skip_slot = palloc0(sizeof(bool) * CheckpointerShmem->num_requests);
+	skip_slot = palloc_extended(sizeof(bool) * CheckpointerShmem->num_requests,
+								MCXT_ALLOC_HUGE | MCXT_ALLOC_ZERO);
 
 	/* Initialize temporary hash table */
 	ctl.keysize = sizeof(CheckpointerRequest);
@@ -1343,8 +1344,11 @@ AbsorbSyncRequests(void)
 	n = CheckpointerShmem->num_requests;
 	if (n > 0)
 	{
-		requests = (CheckpointerRequest *) palloc(n * sizeof(CheckpointerRequest));
-		memcpy(requests, CheckpointerShmem->requests, n * sizeof(CheckpointerRequest));
+		Size	size;
+
+		size = n * sizeof(CheckpointerRequest);
+		requests = palloc_extended(size, MCXT_ALLOC_HUGE);
+		memcpy(requests, CheckpointerShmem->requests, size);
 	}
 
 	START_CRIT_SECTION();
-- 
2.43.0

