mirror of
https://github.com/postgres/postgres.git
synced 2025-08-22 21:53:06 +03:00
Track the oldest XID that can be safely looked up in CLOG.
This provides infrastructure for looking up arbitrary, user-supplied XIDs without a risk of scary-looking failures from within the clog module. Normally, the oldest XID that can be safely looked up in CLOG is the same as the oldest XID that can reused without causing wraparound, and the latter is already tracked. However, while truncation is in progress, the values are different, so we must keep track of them separately. Craig Ringer, reviewed by Simon Riggs and by me. Discussion: http://postgr.es/m/CAMsr+YHQiWNEi0daCTboS40T+V5s_+dst3PYv_8v2wNVH+Xx4g@mail.gmail.com
This commit is contained in:
@@ -28,6 +28,12 @@ typedef int XidStatus;
|
||||
#define TRANSACTION_STATUS_ABORTED 0x02
|
||||
#define TRANSACTION_STATUS_SUB_COMMITTED 0x03
|
||||
|
||||
typedef struct xl_clog_truncate
|
||||
{
|
||||
int pageno;
|
||||
TransactionId oldestXact;
|
||||
Oid oldestXactDb;
|
||||
} xl_clog_truncate;
|
||||
|
||||
extern void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids,
|
||||
TransactionId *subxids, XidStatus status, XLogRecPtr lsn);
|
||||
@@ -42,7 +48,7 @@ extern void TrimCLOG(void);
|
||||
extern void ShutdownCLOG(void);
|
||||
extern void CheckPointCLOG(void);
|
||||
extern void ExtendCLOG(TransactionId newestXact);
|
||||
extern void TruncateCLOG(TransactionId oldestXact);
|
||||
extern void TruncateCLOG(TransactionId oldestXact, Oid oldestxid_datoid);
|
||||
|
||||
/* XLOG stuff */
|
||||
#define CLOG_ZEROPAGE 0x00
|
||||
|
Reference in New Issue
Block a user