mirror of
https://github.com/postgres/postgres.git
synced 2025-12-18 05:01:01 +03:00
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>
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user