postgres.git / summary / log / commit / refs
commit b27e48213fbc1d0ff698be4ae5a0eb3e161d9172
Author: Alexander Korotkov <akorotkov@postgresql.org>
Date: Sun Dec 14 15:18:32 2025 +0000
Refactor WaitLSNType enum to use a macro for type count
Change WAIT_LSN_TYPE_COUNT from an enum sentinel to a macro definition,
in a similar way to IOObject, IOContext, and BackendType enums. Remove
explicit enum value assignments well.
Author: Xuneng Zhou <xunengzhou@gmail.com>
src/backend/access/transam/xlogwait.c | 10 +++++-----
src/include/access/xlogwait.h | 7 ++++---
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/backend/access/transam/xlogwait.c b/src/backend/access/transam/xlogwait.c
index 84613fc39c7..6109381c0f0 100644
--- a/src/backend/access/transam/xlogwait.c
+++ b/src/backend/access/transam/xlogwait.c
@@ -126,7 +126,7 @@ updateMinWaitedLSN(WaitLSNType lsnType)
XLogRecPtr minWaitedLSN = PG_UINT64_MAX;
int i = (int) lsnType;
- Assert(i >= 0 && i < (int) WAIT_LSN_TYPE_COUNT);
+ Assert(i >= 0 && i < WAIT_LSN_TYPE_COUNT);
if (!pairingheap_is_empty(&waitLSNState->waitersHeap[i]))
{
@@ -147,7 +147,7 @@ addLSNWaiter(XLogRecPtr lsn, WaitLSNType lsnType)
WaitLSNProcInfo *procInfo = &waitLSNState->procInfos[MyProcNumber];
int i = (int) lsnType;
- Assert(i >= 0 && i < (int) WAIT_LSN_TYPE_COUNT);
+ Assert(i >= 0 && i < WAIT_LSN_TYPE_COUNT);
LWLockAcquire(WaitLSNLock, LW_EXCLUSIVE);
@@ -172,7 +172,7 @@ deleteLSNWaiter(WaitLSNType lsnType)
WaitLSNProcInfo *procInfo = &waitLSNState->procInfos[MyProcNumber];
int i = (int) lsnType;
- Assert(i >= 0 && i < (int) WAIT_LSN_TYPE_COUNT);
+ Assert(i >= 0 && i < WAIT_LSN_TYPE_COUNT);
LWLockAcquire(WaitLSNLock, LW_EXCLUSIVE);
@@ -213,7 +213,7 @@ wakeupWaiters(WaitLSNType lsnType, XLogRecPtr currentLSN)
int numWakeUpProcs;
int i = (int) lsnType;
- Assert(i >= 0 && i < (int) WAIT_LSN_TYPE_COUNT);
+ Assert(i >= 0 && i < WAIT_LSN_TYPE_COUNT);
do
{
@@ -270,7 +270,7 @@ WaitLSNWakeup(WaitLSNType lsnType, XLogRecPtr currentLSN)
{
int i = (int) lsnType;
- Assert(i >= 0 && i < (int) WAIT_LSN_TYPE_COUNT);
+ Assert(i >= 0 && i < WAIT_LSN_TYPE_COUNT);
/*
* Fast path check. Skip if currentLSN is InvalidXLogRecPtr, which means
diff --git a/src/include/access/xlogwait.h b/src/include/access/xlogwait.h
index e607441d618..3e8fcbd9177 100644
--- a/src/include/access/xlogwait.h
+++ b/src/include/access/xlogwait.h
@@ -35,11 +35,12 @@ typedef enum
*/
typedef enum WaitLSNType
{
- WAIT_LSN_TYPE_REPLAY = 0, /* Waiting for replay on standby */
- WAIT_LSN_TYPE_FLUSH = 1, /* Waiting for flush on primary */
- WAIT_LSN_TYPE_COUNT = 2
+ WAIT_LSN_TYPE_REPLAY, /* Waiting for replay on standby */
+ WAIT_LSN_TYPE_FLUSH, /* Waiting for flush on primary */
} WaitLSNType;
+#define WAIT_LSN_TYPE_COUNT (WAIT_LSN_TYPE_FLUSH + 1)
+
/*
* WaitLSNProcInfo - the shared memory structure representing information
* about the single process, which may wait for LSN operations. An item of
[parent: c5ae07a90a0f]