PostgreSQL Source Code  git master
commit_ts.h
Go to the documentation of this file.
1 /*
2  * commit_ts.h
3  *
4  * PostgreSQL commit timestamp manager
5  *
6  * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7  * Portions Copyright (c) 1994, Regents of the University of California
8  *
9  * src/include/access/commit_ts.h
10  */
11 #ifndef COMMIT_TS_H
12 #define COMMIT_TS_H
13 
14 #include "access/xlog.h"
15 #include "datatype/timestamp.h"
16 #include "replication/origin.h"
17 #include "storage/sync.h"
18 
19 
21 
22 extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,
24  RepOriginId nodeid);
26  TimestampTz *ts, RepOriginId *nodeid);
28  RepOriginId *nodeid);
29 
30 extern Size CommitTsShmemBuffers(void);
31 extern Size CommitTsShmemSize(void);
32 extern void CommitTsShmemInit(void);
33 extern void BootStrapCommitTs(void);
34 extern void StartupCommitTs(void);
35 extern void CommitTsParameterChange(bool newvalue, bool oldvalue);
36 extern void CompleteCommitTsInitialization(void);
37 extern void CheckPointCommitTs(void);
38 extern void ExtendCommitTs(TransactionId newestXact);
39 extern void TruncateCommitTs(TransactionId oldestXact);
40 extern void SetCommitTsLimit(TransactionId oldestXact,
41  TransactionId newestXact);
42 extern void AdvanceOldestCommitTsXid(TransactionId oldestXact);
43 
44 extern int committssyncfiletag(const FileTag *ftag, char *path);
45 
46 /* XLOG stuff */
47 #define COMMIT_TS_ZEROPAGE 0x00
48 #define COMMIT_TS_TRUNCATE 0x10
49 
50 typedef struct xl_commit_ts_set
51 {
55  /* subxact Xids follow */
57 
58 #define SizeOfCommitTsSet (offsetof(xl_commit_ts_set, mainxid) + \
59  sizeof(TransactionId))
60 
61 typedef struct xl_commit_ts_truncate
62 {
63  int64 pageno;
66 
67 #define SizeOfCommitTsTruncate (offsetof(xl_commit_ts_truncate, oldestXid) + \
68  sizeof(TransactionId))
69 
70 extern void commit_ts_redo(XLogReaderState *record);
71 extern void commit_ts_desc(StringInfo buf, XLogReaderState *record);
72 extern const char *commit_ts_identify(uint8 info);
73 
74 #endif /* COMMIT_TS_H */
#define PGDLLIMPORT
Definition: c.h:1326
unsigned char uint8
Definition: c.h:493
uint32 TransactionId
Definition: c.h:641
size_t Size
Definition: c.h:594
void StartupCommitTs(void)
Definition: commit_ts.c:599
TransactionId GetLatestCommitTsData(TimestampTz *ts, RepOriginId *nodeid)
Definition: commit_ts.c:361
void CommitTsParameterChange(bool newvalue, bool oldvalue)
Definition: commit_ts.c:631
Size CommitTsShmemBuffers(void)
Definition: commit_ts.c:507
struct xl_commit_ts_truncate xl_commit_ts_truncate
const char * commit_ts_identify(uint8 info)
Definition: committsdesc.c:44
Size CommitTsShmemSize(void)
Definition: commit_ts.c:516
void AdvanceOldestCommitTsXid(TransactionId oldestXact)
Definition: commit_ts.c:897
int committssyncfiletag(const FileTag *ftag, char *path)
Definition: commit_ts.c:1021
void CompleteCommitTsInitialization(void)
Definition: commit_ts.c:609
struct xl_commit_ts_set xl_commit_ts_set
void TruncateCommitTs(TransactionId oldestXact)
Definition: commit_ts.c:844
void commit_ts_redo(XLogReaderState *record)
Definition: commit_ts.c:977
bool TransactionIdGetCommitTsData(TransactionId xid, TimestampTz *ts, RepOriginId *nodeid)
Definition: commit_ts.c:275
void BootStrapCommitTs(void)
Definition: commit_ts.c:563
void commit_ts_desc(StringInfo buf, XLogReaderState *record)
Definition: committsdesc.c:22
void CommitTsShmemInit(void)
Definition: commit_ts.c:527
void SetCommitTsLimit(TransactionId oldestXact, TransactionId newestXact)
Definition: commit_ts.c:870
void ExtendCommitTs(TransactionId newestXact)
Definition: commit_ts.c:806
PGDLLIMPORT bool track_commit_timestamp
Definition: commit_ts.c:111
void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids, TransactionId *subxids, TimestampTz timestamp, RepOriginId nodeid)
Definition: commit_ts.c:143
void CheckPointCommitTs(void)
Definition: commit_ts.c:784
int64 TimestampTz
Definition: timestamp.h:39
static char * buf
Definition: pg_test_fsync.c:73
int64 timestamp
Definition: sync.h:51
TransactionId mainxid
Definition: commit_ts.h:54
RepOriginId nodeid
Definition: commit_ts.h:53
TimestampTz timestamp
Definition: commit_ts.h:52
TransactionId oldestXid
Definition: commit_ts.h:64
uint16 RepOriginId
Definition: xlogdefs.h:65