24 #define InvalidMultiXactId ((MultiXactId) 0) 25 #define FirstMultiXactId ((MultiXactId) 1) 26 #define MaxMultiXactId ((MultiXactId) 0xFFFFFFFF) 28 #define MultiXactIdIsValid(multi) ((multi) != InvalidMultiXactId) 30 #define MaxMultiXactOffset ((MultiXactOffset) 0xFFFFFFFF) 33 #define NUM_MULTIXACTOFFSET_BUFFERS 8 34 #define NUM_MULTIXACTMEMBER_BUFFERS 16 53 #define MaxMultiXactStatus MultiXactStatusUpdate 56 #define ISUPDATE_from_mxstatus(status) \ 57 ((status) > MultiXactStatusForUpdate) 72 #define XLOG_MULTIXACT_ZERO_OFF_PAGE 0x00 73 #define XLOG_MULTIXACT_ZERO_MEM_PAGE 0x10 74 #define XLOG_MULTIXACT_CREATE_ID 0x20 75 #define XLOG_MULTIXACT_TRUNCATE_ID 0x30 85 #define SizeOfMultiXactCreate (offsetof(xl_multixact_create, members)) 100 #define SizeOfMultiXactTruncate (sizeof(xl_multixact_truncate)) 116 bool allow_old,
bool isLockOnly);
152 void *recdata,
uint32 len);
154 void *recdata,
uint32 len);
156 void *recdata,
uint32 len);
MultiXactId MultiXactIdCreate(TransactionId xid1, MultiXactStatus status1, TransactionId xid2, MultiXactStatus status2)
Size MultiXactShmemSize(void)
void MultiXactSetNextMXact(MultiXactId nextMulti, MultiXactOffset nextMultiOffset)
struct xl_multixact_create xl_multixact_create
void AtEOXact_MultiXact(void)
void MultiXactAdvanceOldest(MultiXactId oldestMulti, Oid oldestMultiDB)
MultiXactId GetOldestMultiXactId(void)
#define FLEXIBLE_ARRAY_MEMBER
void multixact_twophase_postcommit(TransactionId xid, uint16 info, void *recdata, uint32 len)
void StartupMultiXact(void)
char * mxid_to_string(MultiXactId multi, int nmembers, MultiXactMember *members)
void BootStrapMultiXact(void)
bool MultiXactIdIsRunning(MultiXactId multi, bool isLockOnly)
MultiXactId ReadNextMultiXactId(void)
MultiXactId MultiXactIdCreateFromMembers(int nmembers, MultiXactMember *members)
const char * multixact_identify(uint8 info)
void multixact_desc(StringInfo buf, XLogReaderState *record)
void MultiXactGetCheckptMulti(bool is_shutdown, MultiXactId *nextMulti, MultiXactOffset *nextMultiOffset, MultiXactId *oldestMulti, Oid *oldestMultiDB)
void MultiXactIdSetOldestMember(void)
MultiXactOffset endTruncMemb
int multixactmemberssyncfiletag(const FileTag *ftag, char *path)
MultiXactOffset startTruncMemb
int GetMultiXactIdMembers(MultiXactId multi, MultiXactMember **xids, bool allow_old, bool isLockOnly)
void AtPrepare_MultiXact(void)
void MultiXactAdvanceNextMXact(MultiXactId minMulti, MultiXactOffset minMultiOffset)
TransactionId MultiXactId
void PostPrepare_MultiXact(TransactionId xid)
void CheckPointMultiXact(void)
struct MultiXactMember MultiXactMember
void multixact_twophase_recover(TransactionId xid, uint16 info, void *recdata, uint32 len)
MultiXactId startTruncOff
int MultiXactMemberFreezeThreshold(void)
void MultiXactShmemInit(void)
void SetMultiXactIdLimit(MultiXactId oldest_datminmxid, Oid oldest_datoid, bool is_startup)
bool MultiXactIdPrecedesOrEquals(MultiXactId multi1, MultiXactId multi2)
int multixactoffsetssyncfiletag(const FileTag *ftag, char *path)
struct xl_multixact_truncate xl_multixact_truncate
void ReadMultiXactIdRange(MultiXactId *oldest, MultiXactId *next)
bool MultiXactIdPrecedes(MultiXactId multi1, MultiXactId multi2)
MultiXactId MultiXactIdExpand(MultiXactId multi, TransactionId xid, MultiXactStatus status)
void multixact_redo(XLogReaderState *record)
void multixact_twophase_postabort(TransactionId xid, uint16 info, void *recdata, uint32 len)
void TruncateMultiXact(MultiXactId oldestMulti, Oid oldestMultiDB)