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