]> granicus.if.org Git - postgresql/blob - src/include/access/commit_ts.h
Update copyright for 2016
[postgresql] / src / include / access / commit_ts.h
1 /*
2  * commit_ts.h
3  *
4  * PostgreSQL commit timestamp manager
5  *
6  * Portions Copyright (c) 1996-2016, 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 "utils/guc.h"
18
19
20 extern PGDLLIMPORT bool track_commit_timestamp;
21
22 extern bool check_track_commit_timestamp(bool *newval, void **extra,
23                                                          GucSource source);
24
25 extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,
26                                                            TransactionId *subxids, TimestampTz timestamp,
27                                                            RepOriginId nodeid, bool write_xlog);
28 extern bool TransactionIdGetCommitTsData(TransactionId xid,
29                                                          TimestampTz *ts, RepOriginId *nodeid);
30 extern TransactionId GetLatestCommitTsData(TimestampTz *ts,
31                                           RepOriginId *nodeid);
32
33 extern Size CommitTsShmemBuffers(void);
34 extern Size CommitTsShmemSize(void);
35 extern void CommitTsShmemInit(void);
36 extern void BootStrapCommitTs(void);
37 extern void StartupCommitTs(void);
38 extern void CommitTsParameterChange(bool xlrecvalue, bool pgcontrolvalue);
39 extern void CompleteCommitTsInitialization(void);
40 extern void ShutdownCommitTs(void);
41 extern void CheckPointCommitTs(void);
42 extern void ExtendCommitTs(TransactionId newestXact);
43 extern void TruncateCommitTs(TransactionId oldestXact);
44 extern void SetCommitTsLimit(TransactionId oldestXact,
45                                  TransactionId newestXact);
46 extern void AdvanceOldestCommitTsXid(TransactionId oldestXact);
47
48 /* XLOG stuff */
49 #define COMMIT_TS_ZEROPAGE              0x00
50 #define COMMIT_TS_TRUNCATE              0x10
51 #define COMMIT_TS_SETTS                 0x20
52
53 typedef struct xl_commit_ts_set
54 {
55         TimestampTz timestamp;
56         RepOriginId nodeid;
57         TransactionId mainxid;
58         /* subxact Xids follow */
59 } xl_commit_ts_set;
60
61 #define SizeOfCommitTsSet       (offsetof(xl_commit_ts_set, mainxid) + \
62                                                          sizeof(TransactionId))
63
64
65 extern void commit_ts_redo(XLogReaderState *record);
66 extern void commit_ts_desc(StringInfo buf, XLogReaderState *record);
67 extern const char *commit_ts_identify(uint8 info);
68
69 #endif   /* COMMIT_TS_H */