From e7ba11349dfa6c0dc250562c13c8db90d53dcdab Mon Sep 17 00:00:00 2001
From: Alexey Makhmutov <a.makhmutov@postgrespro.ru>
Date: Mon, 16 Mar 2026 13:33:10 +0300
Subject: [PATCH 2/2] Use PageGetHeapFreeSpace in heap_xlog_visible.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Free space in regular heap pages need to be calculated using
PageGetHeapFreeSpace rather than PageGetFreeSpace. This is required to
take into account the MaxHeapTuplesPerPage limit, otherwise page may be
marked as having free space while it’s impossible to add any new row to
it.
---
 src/backend/access/heap/heapam_xlog.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/backend/access/heap/heapam_xlog.c b/src/backend/access/heap/heapam_xlog.c
index 1da774c1536..c8f5f4f7988 100644
--- a/src/backend/access/heap/heapam_xlog.c
+++ b/src/backend/access/heap/heapam_xlog.c
@@ -326,7 +326,7 @@ heap_xlog_visible(XLogReaderState *record)
 
 	if (BufferIsValid(buffer))
 	{
-		Size		space = PageGetFreeSpace(BufferGetPage(buffer));
+		Size		space = PageGetHeapFreeSpace(BufferGetPage(buffer));
 
 		UnlockReleaseBuffer(buffer);
 
-- 
2.53.0

