104 lines
4.2 KiB
C
104 lines
4.2 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* procarray.h
|
|
* POSTGRES process array definitions.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/storage/procarray.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PROCARRAY_H
|
|
#define PROCARRAY_H
|
|
|
|
#include "storage/lock.h"
|
|
#include "storage/standby.h"
|
|
#include "utils/relcache.h"
|
|
#include "utils/snapshot.h"
|
|
|
|
|
|
extern Size ProcArrayShmemSize(void);
|
|
extern void CreateSharedProcArray(void);
|
|
extern void ProcArrayAdd(PGPROC *proc);
|
|
extern void ProcArrayRemove(PGPROC *proc, TransactionId latestXid);
|
|
|
|
extern void ProcArrayEndTransaction(PGPROC *proc, TransactionId latestXid);
|
|
extern void ProcArrayClearTransaction(PGPROC *proc);
|
|
|
|
extern void ProcArrayInitRecovery(TransactionId initializedUptoXID);
|
|
extern void ProcArrayApplyRecoveryInfo(RunningTransactions running);
|
|
extern void ProcArrayApplyXidAssignment(TransactionId topxid,
|
|
int nsubxids, TransactionId *subxids);
|
|
|
|
extern void RecordKnownAssignedTransactionIds(TransactionId xid);
|
|
extern void ExpireTreeKnownAssignedTransactionIds(TransactionId xid,
|
|
int nsubxids, TransactionId *subxids,
|
|
TransactionId max_xid);
|
|
extern void ExpireAllKnownAssignedTransactionIds(void);
|
|
extern void ExpireOldKnownAssignedTransactionIds(TransactionId xid);
|
|
extern void KnownAssignedTransactionIdsIdleMaintenance(void);
|
|
|
|
extern int GetMaxSnapshotXidCount(void);
|
|
extern int GetMaxSnapshotSubxidCount(void);
|
|
|
|
extern Snapshot GetSnapshotData(Snapshot snapshot);
|
|
|
|
extern bool ProcArrayInstallImportedXmin(TransactionId xmin,
|
|
VirtualTransactionId *sourcevxid);
|
|
extern bool ProcArrayInstallRestoredXmin(TransactionId xmin, PGPROC *proc);
|
|
|
|
extern RunningTransactions GetRunningTransactionData(void);
|
|
|
|
extern bool TransactionIdIsInProgress(TransactionId xid);
|
|
extern bool TransactionIdIsActive(TransactionId xid);
|
|
extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
|
|
extern TransactionId GetOldestTransactionIdConsideredRunning(void);
|
|
extern TransactionId GetOldestActiveTransactionId(void);
|
|
extern TransactionId GetOldestSafeDecodingTransactionId(bool catalogOnly);
|
|
extern void GetReplicationHorizons(TransactionId *xmin, TransactionId *catalog_xmin);
|
|
|
|
extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids, int type);
|
|
extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids,
|
|
int nvxids, int type);
|
|
|
|
extern PGPROC *ProcNumberGetProc(int procNumber);
|
|
extern void ProcNumberGetTransactionIds(int procNumber, TransactionId *xid,
|
|
TransactionId *xmin, int *nsubxid,
|
|
bool *overflowed);
|
|
extern PGPROC *BackendPidGetProc(int pid);
|
|
extern PGPROC *BackendPidGetProcWithLock(int pid);
|
|
extern int BackendXidGetPid(TransactionId xid);
|
|
extern bool IsBackendPid(int pid);
|
|
|
|
extern VirtualTransactionId *GetCurrentVirtualXIDs(TransactionId limitXmin,
|
|
bool excludeXmin0, bool allDbs, int excludeVacuum,
|
|
int *nvxids);
|
|
extern VirtualTransactionId *GetConflictingVirtualXIDs(TransactionId limitXmin, Oid dbOid);
|
|
extern pid_t CancelVirtualTransaction(VirtualTransactionId vxid, ProcSignalReason sigmode);
|
|
extern pid_t SignalVirtualTransaction(VirtualTransactionId vxid, ProcSignalReason sigmode,
|
|
bool conflictPending);
|
|
|
|
extern bool MinimumActiveBackends(int min);
|
|
extern int CountDBBackends(Oid databaseid);
|
|
extern int CountDBConnections(Oid databaseid);
|
|
extern void CancelDBBackends(Oid databaseid, ProcSignalReason sigmode, bool conflictPending);
|
|
extern int CountUserBackends(Oid roleid);
|
|
extern bool CountOtherDBBackends(Oid databaseId,
|
|
int *nbackends, int *nprepared);
|
|
extern void TerminateOtherDBBackends(Oid databaseId);
|
|
|
|
extern void XidCacheRemoveRunningXids(TransactionId xid,
|
|
int nxids, const TransactionId *xids,
|
|
TransactionId latestXid);
|
|
|
|
extern void ProcArraySetReplicationSlotXmin(TransactionId xmin,
|
|
TransactionId catalog_xmin, bool already_locked);
|
|
|
|
extern void ProcArrayGetReplicationSlotXmin(TransactionId *xmin,
|
|
TransactionId *catalog_xmin);
|
|
|
|
#endif /* PROCARRAY_H */
|