130 #define MAXNUMMESSAGES 4096
131 #define MSGNUMWRAPAROUND (MAXNUMMESSAGES * 262144)
132 #define CLEANUP_MIN (MAXNUMMESSAGES / 2)
133 #define CLEANUP_QUANTUM (MAXNUMMESSAGES / 16)
134 #define SIG_THRESHOLD (MAXNUMMESSAGES / 2)
135 #define WRITE_QUANTUM 64
305 (
errcode(ERRCODE_TOO_MANY_CONNECTIONS),
306 errmsg(
"sorry, too many clients already")));
393 if (backendID > 0 && backendID <= segP->lastBackend)
397 result = stateP->
proc;
422 if (backendID > 0 && backendID <= segP->lastBackend)
487 while (nthistime-- > 0)
610 while (n < datasize && stateP->nextMsgNum < max)
660 if (!callerHasWriteLock)
700 if (n < minsig && !stateP->signaled)
741 pid_t his_pid = needSig->
procPid;
747 elog(
DEBUG4,
"sending sinval catchup signal to PID %d", (
int) his_pid);
749 if (callerHasWriteLock)
755 if (!callerHasWriteLock)
#define offsetof(type, field)
#define PointerIsValid(pointer)
#define FLEXIBLE_ARRAY_MEMBER
uint32 LocalTransactionId
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
void on_shmem_exit(pg_on_exit_callback function, Datum arg)
Assert(fmt[strlen(fmt) - 1] !='\n')
#define InvalidLocalTransactionId
#define LocalTransactionIdIsValid(lxid)
bool LWLockAcquire(LWLock *lock, LWLockMode mode)
void LWLockRelease(LWLock *lock)
static void static void status(const char *fmt,...) pg_attribute_printf(1
#define DatumGetPointer(X)
#define PointerGetDatum(X)
int SendProcSignal(pid_t pid, ProcSignalReason reason, BackendId backendId)
@ PROCSIG_CATCHUP_INTERRUPT
Size add_size(Size s1, Size s2)
void * ShmemInitStruct(const char *name, Size size, bool *foundPtr)
Size mul_size(Size s1, Size s2)
struct ProcState ProcState
static SISeg * shmInvalBuffer
void SICleanupQueue(bool callerHasWriteLock, int minFree)
void BackendIdGetTransactionIds(int backendID, TransactionId *xid, TransactionId *xmin)
static void CleanupInvalidationState(int status, Datum arg)
Size SInvalShmemSize(void)
void SharedInvalBackendInit(bool sendOnly)
int SIGetDataEntries(SharedInvalidationMessage *data, int datasize)
void CreateSharedInvalidationState(void)
void SIInsertDataEntries(const SharedInvalidationMessage *data, int n)
LocalTransactionId GetNextLocalTransactionId(void)
static LocalTransactionId nextLocalTransactionId
PGPROC * BackendIdGetProc(int backendID)
#define SpinLockInit(lock)
#define SpinLockRelease(lock)
#define SpinLockAcquire(lock)
LocalTransactionId nextLXID
SharedInvalidationMessage buffer[MAXNUMMESSAGES]
ProcState procState[FLEXIBLE_ARRAY_MEMBER]
#define InvalidTransactionId