commit_ts.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. #include "access/xlog.h"
  14. #include "datatype/timestamp.h"
  15. #include "replication/origin.h"
  16. #include "utils/guc.h"
  17. extern PGDLLIMPORT bool track_commit_timestamp;
  18. extern bool check_track_commit_timestamp(bool *newval, void **extra,
  19. GucSource source);
  20. extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,
  21. TransactionId *subxids, TimestampTz timestamp,
  22. RepOriginId nodeid, bool write_xlog);
  23. extern bool TransactionIdGetCommitTsData(TransactionId xid,
  24. TimestampTz *ts, RepOriginId *nodeid);
  25. extern TransactionId GetLatestCommitTsData(TimestampTz *ts,
  26. RepOriginId *nodeid);
  27. extern Size CommitTsShmemBuffers(void);
  28. extern Size CommitTsShmemSize(void);
  29. extern void CommitTsShmemInit(void);
  30. extern void BootStrapCommitTs(void);
  31. extern void StartupCommitTs(void);
  32. extern void CommitTsParameterChange(bool xlrecvalue, bool pgcontrolvalue);
  33. extern void CompleteCommitTsInitialization(void);
  34. extern void ShutdownCommitTs(void);
  35. extern void CheckPointCommitTs(void);
  36. extern void ExtendCommitTs(TransactionId newestXact);
  37. extern void TruncateCommitTs(TransactionId oldestXact);
  38. extern void SetCommitTsLimit(TransactionId oldestXact,
  39. TransactionId newestXact);
  40. extern void AdvanceOldestCommitTsXid(TransactionId oldestXact);
  41. /* XLOG stuff */
  42. #define COMMIT_TS_ZEROPAGE 0x00
  43. #define COMMIT_TS_TRUNCATE 0x10
  44. #define COMMIT_TS_SETTS 0x20
  45. typedef struct xl_commit_ts_set
  46. {
  47. TimestampTz timestamp;
  48. RepOriginId nodeid;
  49. TransactionId mainxid;
  50. /* subxact Xids follow */
  51. } xl_commit_ts_set;
  52. #define SizeOfCommitTsSet (offsetof(xl_commit_ts_set, mainxid) + \
  53. sizeof(TransactionId))
  54. extern void commit_ts_redo(XLogReaderState *record);
  55. extern void commit_ts_desc(StringInfo buf, XLogReaderState *record);
  56. extern const char *commit_ts_identify(uint8 info);
  57. #endif /* COMMIT_TS_H */