1 /*-------------------------------------------------------------------------
4 * POSTGRES process array definitions.
7 * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * src/include/storage/procarray.h
12 *-------------------------------------------------------------------------
17 #include "storage/lock.h"
18 #include "storage/procsignal.h"
19 #include "storage/standby.h"
20 #include "utils/snapshot.h"
23 extern Size ProcArrayShmemSize(void);
24 extern void CreateSharedProcArray(void);
25 extern void ProcArrayAdd(PGPROC *proc);
26 extern void ProcArrayRemove(PGPROC *proc, TransactionId latestXid);
28 extern void ProcArrayEndTransaction(PGPROC *proc, TransactionId latestXid);
29 extern void ProcArrayClearTransaction(PGPROC *proc);
31 extern void ProcArrayInitRecoveryInfo(TransactionId oldestActiveXid);
32 extern void ProcArrayApplyRecoveryInfo(RunningTransactions running);
33 extern void ProcArrayApplyXidAssignment(TransactionId topxid,
34 int nsubxids, TransactionId *subxids);
36 extern void RecordKnownAssignedTransactionIds(TransactionId xid);
37 extern void ExpireTreeKnownAssignedTransactionIds(TransactionId xid,
38 int nsubxids, TransactionId *subxids,
39 TransactionId max_xid);
40 extern void ExpireAllKnownAssignedTransactionIds(void);
41 extern void ExpireOldKnownAssignedTransactionIds(TransactionId xid);
43 extern RunningTransactions GetRunningTransactionData(void);
45 extern Snapshot GetSnapshotData(Snapshot snapshot);
47 extern bool TransactionIdIsInProgress(TransactionId xid);
48 extern bool TransactionIdIsActive(TransactionId xid);
49 extern TransactionId GetOldestXmin(bool allDbs, bool ignoreVacuum);
51 extern int GetTransactionsInCommit(TransactionId **xids_p);
52 extern bool HaveTransactionsInCommit(TransactionId *xids, int nxids);
54 extern PGPROC *BackendPidGetProc(int pid);
55 extern int BackendXidGetPid(TransactionId xid);
56 extern bool IsBackendPid(int pid);
58 extern VirtualTransactionId *GetCurrentVirtualXIDs(TransactionId limitXmin,
59 bool excludeXmin0, bool allDbs, int excludeVacuum,
61 extern VirtualTransactionId *GetConflictingVirtualXIDs(TransactionId limitXmin, Oid dbOid);
62 extern pid_t CancelVirtualTransaction(VirtualTransactionId vxid, ProcSignalReason sigmode);
64 extern int CountActiveBackends(void);
65 extern int CountDBBackends(Oid databaseid);
66 extern void CancelDBBackends(Oid databaseid, ProcSignalReason sigmode, bool conflictPending);
67 extern int CountUserBackends(Oid roleid);
68 extern bool CountOtherDBBackends(Oid databaseId,
69 int *nbackends, int *nprepared);
71 extern void XidCacheRemoveRunningXids(TransactionId xid,
72 int nxids, const TransactionId *xids,
73 TransactionId latestXid);
75 #endif /* PROCARRAY_H */