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>
pull/258/head
Alexander Korotkov 2 days ago
parent c5ae07a90a
commit b27e48213f
  1. 10
      src/backend/access/transam/xlogwait.c
  2. 7
      src/include/access/xlogwait.h

@ -126,7 +126,7 @@ updateMinWaitedLSN(WaitLSNType lsnType)
XLogRecPtr minWaitedLSN = PG_UINT64_MAX; XLogRecPtr minWaitedLSN = PG_UINT64_MAX;
int i = (int) lsnType; 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])) if (!pairingheap_is_empty(&waitLSNState->waitersHeap[i]))
{ {
@ -147,7 +147,7 @@ addLSNWaiter(XLogRecPtr lsn, WaitLSNType lsnType)
WaitLSNProcInfo *procInfo = &waitLSNState->procInfos[MyProcNumber]; WaitLSNProcInfo *procInfo = &waitLSNState->procInfos[MyProcNumber];
int i = (int) lsnType; 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); LWLockAcquire(WaitLSNLock, LW_EXCLUSIVE);
@ -172,7 +172,7 @@ deleteLSNWaiter(WaitLSNType lsnType)
WaitLSNProcInfo *procInfo = &waitLSNState->procInfos[MyProcNumber]; WaitLSNProcInfo *procInfo = &waitLSNState->procInfos[MyProcNumber];
int i = (int) lsnType; 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); LWLockAcquire(WaitLSNLock, LW_EXCLUSIVE);
@ -213,7 +213,7 @@ wakeupWaiters(WaitLSNType lsnType, XLogRecPtr currentLSN)
int numWakeUpProcs; int numWakeUpProcs;
int i = (int) lsnType; int i = (int) lsnType;
Assert(i >= 0 && i < (int) WAIT_LSN_TYPE_COUNT); Assert(i >= 0 && i < WAIT_LSN_TYPE_COUNT);
do do
{ {
@ -270,7 +270,7 @@ WaitLSNWakeup(WaitLSNType lsnType, XLogRecPtr currentLSN)
{ {
int i = (int) lsnType; 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 * Fast path check. Skip if currentLSN is InvalidXLogRecPtr, which means

@ -35,11 +35,12 @@ typedef enum
*/ */
typedef enum WaitLSNType typedef enum WaitLSNType
{ {
WAIT_LSN_TYPE_REPLAY = 0, /* Waiting for replay on standby */ WAIT_LSN_TYPE_REPLAY, /* Waiting for replay on standby */
WAIT_LSN_TYPE_FLUSH = 1, /* Waiting for flush on primary */ WAIT_LSN_TYPE_FLUSH, /* Waiting for flush on primary */
WAIT_LSN_TYPE_COUNT = 2
} WaitLSNType; } WaitLSNType;
#define WAIT_LSN_TYPE_COUNT (WAIT_LSN_TYPE_FLUSH + 1)
/* /*
* WaitLSNProcInfo - the shared memory structure representing information * WaitLSNProcInfo - the shared memory structure representing information
* about the single process, which may wait for LSN operations. An item of * about the single process, which may wait for LSN operations. An item of

Loading…
Cancel
Save