From 64224afc26215c718d50e4387912449fda8e7036 Mon Sep 17 00:00:00 2001
From: Aleksander Alekseev <aleksander@timescale.com>
Date: Wed, 26 Jun 2024 14:02:42 +0300
Subject: [PATCH v3 2/2] Use int64 for page numbers in clog.c & async.c

Oversight of 4ed8f0913bfd

Aleksander Alekseev, Noah Misch, Michael Paquier
---
 src/backend/access/transam/clog.c |  4 ++--
 src/backend/commands/async.c      | 22 +++++++++++-----------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index 44c253246b..e6f79320e9 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -445,7 +445,7 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status,
 	PGPROC	   *proc = MyProc;
 	uint32		nextidx;
 	uint32		wakeidx;
-	int			prevpageno;
+	int64		prevpageno;
 	LWLock	   *prevlock = NULL;
 
 	/* We should definitely have an XID whose status needs to be updated. */
@@ -577,7 +577,7 @@ TransactionGroupUpdateXidStatus(TransactionId xid, XidStatus status,
 	while (nextidx != INVALID_PROC_NUMBER)
 	{
 		PGPROC	   *nextproc = &ProcGlobal->allProcs[nextidx];
-		int			thispageno = nextproc->clogGroupMemberPage;
+		int64		thispageno = nextproc->clogGroupMemberPage;
 
 		/*
 		 * If the page to update belongs to a different bank than the previous
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index ab4c72762d..3c43a700e7 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -283,7 +283,7 @@ typedef struct AsyncQueueControl
 	QueuePosition head;			/* head points to the next free location */
 	QueuePosition tail;			/* tail must be <= the queue position of every
 								 * listening backend */
-	int			stopPage;		/* oldest unrecycled page; must be <=
+	int64			stopPage;	/* oldest unrecycled page; must be <=
 								 * tail.page */
 	ProcNumber	firstListener;	/* id of first listener, or
 								 * INVALID_PROC_NUMBER */
@@ -1271,9 +1271,9 @@ asyncQueueUnregister(void)
 static bool
 asyncQueueIsFull(void)
 {
-	int			headPage = QUEUE_POS_PAGE(QUEUE_HEAD);
-	int			tailPage = QUEUE_POS_PAGE(QUEUE_TAIL);
-	int			occupied = headPage - tailPage;
+	int64		headPage = QUEUE_POS_PAGE(QUEUE_HEAD);
+	int64		tailPage = QUEUE_POS_PAGE(QUEUE_TAIL);
+	int64		occupied = headPage - tailPage;
 
 	return occupied >= max_notify_queue_pages;
 }
@@ -1505,9 +1505,9 @@ pg_notification_queue_usage(PG_FUNCTION_ARGS)
 static double
 asyncQueueUsage(void)
 {
-	int			headPage = QUEUE_POS_PAGE(QUEUE_HEAD);
-	int			tailPage = QUEUE_POS_PAGE(QUEUE_TAIL);
-	int			occupied = headPage - tailPage;
+	int64		headPage = QUEUE_POS_PAGE(QUEUE_HEAD);
+	int64		tailPage = QUEUE_POS_PAGE(QUEUE_TAIL);
+	int64		occupied = headPage - tailPage;
 
 	if (occupied == 0)
 		return (double) 0;		/* fast exit for common case */
@@ -1932,7 +1932,7 @@ asyncQueueReadAllNotifications(void)
 
 		do
 		{
-			int			curpage = QUEUE_POS_PAGE(pos);
+			int64		curpage = QUEUE_POS_PAGE(pos);
 			int			curoffset = QUEUE_POS_OFFSET(pos);
 			int			slotno;
 			int			copysize;
@@ -2108,9 +2108,9 @@ static void
 asyncQueueAdvanceTail(void)
 {
 	QueuePosition min;
-	int			oldtailpage;
-	int			newtailpage;
-	int			boundary;
+	int64		oldtailpage;
+	int64		newtailpage;
+	int64		boundary;
 
 	/* Restrict task to one backend per cluster; see SimpleLruTruncate(). */
 	LWLockAcquire(NotifyQueueTailLock, LW_EXCLUSIVE);
-- 
2.45.2

