PostgreSQL Source Code: src/include/access/multixact.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11#ifndef MULTIXACT_H
12#define MULTIXACT_H
13
17
18
19
20
21
22
23
24#define InvalidMultiXactId ((MultiXactId) 0)
25#define FirstMultiXactId ((MultiXactId) 1)
26#define MaxMultiXactId ((MultiXactId) 0xFFFFFFFF)
27
28#define MultiXactIdIsValid(multi) ((multi) != InvalidMultiXactId)
29
30#define MaxMultiXactOffset ((MultiXactOffset) 0xFFFFFFFF)
31
32
33
34
35
36
37typedef enum
38{
43
45
48
49#define MaxMultiXactStatus MultiXactStatusUpdate
50
51
52#define ISUPDATE_from_mxstatus(status) \
53 ((status) > MultiXactStatusForUpdate)
54
55
57{
61
62
63
64
65
66
67
68#define XLOG_MULTIXACT_ZERO_OFF_PAGE 0x00
69#define XLOG_MULTIXACT_ZERO_MEM_PAGE 0x10
70#define XLOG_MULTIXACT_CREATE_ID 0x20
71#define XLOG_MULTIXACT_TRUNCATE_ID 0x30
72
74{
80
81#define SizeOfMultiXactCreate (offsetof(xl_multixact_create, members))
82
84{
86
87
90
91
95
96#define SizeOfMultiXactTruncate (sizeof(xl_multixact_truncate))
97
98
106
112 bool from_pgupgrade, bool isLockOnly);
116
119
123
130 Oid oldest_datoid,
131 bool is_startup);
136 Oid *oldestMultiDB);
140 Oid newOldestMultiDB);
147
154
160
161#endif
TransactionId MultiXactId
#define FLEXIBLE_ARRAY_MEMBER
void MultiXactShmemInit(void)
MultiXactId MultiXactIdExpand(MultiXactId multi, TransactionId xid, MultiXactStatus status)
void ReadMultiXactIdRange(MultiXactId *oldest, MultiXactId *next)
bool MultiXactIdPrecedes(MultiXactId multi1, MultiXactId multi2)
void multixact_redo(XLogReaderState *record)
@ MultiXactStatusForShare
@ MultiXactStatusForNoKeyUpdate
@ MultiXactStatusNoKeyUpdate
@ MultiXactStatusForUpdate
@ MultiXactStatusForKeyShare
int multixactoffsetssyncfiletag(const FileTag *ftag, char *path)
void multixact_twophase_postcommit(TransactionId xid, uint16 info, void *recdata, uint32 len)
void MultiXactSetNextMXact(MultiXactId nextMulti, MultiXactOffset nextMultiOffset)
void multixact_twophase_recover(TransactionId xid, uint16 info, void *recdata, uint32 len)
void AtPrepare_MultiXact(void)
bool MultiXactIdPrecedesOrEquals(MultiXactId multi1, MultiXactId multi2)
void MultiXactAdvanceOldest(MultiXactId oldestMulti, Oid oldestMultiDB)
bool MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
void MultiXactIdSetOldestMember(void)
void multixact_desc(StringInfo buf, XLogReaderState *record)
void PostPrepare_MultiXact(TransactionId xid)
Size MultiXactShmemSize(void)
void multixact_twophase_postabort(TransactionId xid, uint16 info, void *recdata, uint32 len)
void MultiXactGetCheckptMulti(bool is_shutdown, MultiXactId *nextMulti, MultiXactOffset *nextMultiOffset, MultiXactId *oldestMulti, Oid *oldestMultiDB)
void SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid, bool is_startup)
int multixactmemberssyncfiletag(const FileTag *ftag, char *path)
MultiXactId GetOldestMultiXactId(void)
void CheckPointMultiXact(void)
MultiXactId MultiXactIdCreateFromMembers(int nmembers, MultiXactMember *members)
char * mxid_to_string(MultiXactId multi, int nmembers, MultiXactMember *members)
int MultiXactMemberFreezeThreshold(void)
void MultiXactAdvanceNextMXact(MultiXactId minMulti, MultiXactOffset minMultiOffset)
MultiXactId ReadNextMultiXactId(void)
void BootStrapMultiXact(void)
MultiXactId MultiXactIdCreate(TransactionId xid1, MultiXactStatus status1, TransactionId xid2, MultiXactStatus status2)
void TruncateMultiXact(MultiXactId newOldestMulti, Oid newOldestMultiDB)
struct MultiXactMember MultiXactMember
const char * multixact_identify(uint8 info)
void AtEOXact_MultiXact(void)
struct xl_multixact_truncate xl_multixact_truncate
void StartupMultiXact(void)
struct xl_multixact_create xl_multixact_create
int GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **members, bool from_pgupgrade, bool isLockOnly)
MultiXactMember members[FLEXIBLE_ARRAY_MEMBER]
MultiXactOffset startTruncMemb
MultiXactOffset endTruncMemb
MultiXactId startTruncOff