commit_ts.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * commit_ts.h
  3. *
  4. * PostgreSQL commit timestamp manager
  5. *
  6. * Portions Copyright (c) 1996-2022, 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 "storage/sync.h"
  17. extern PGDLLIMPORT bool track_commit_timestamp;
  18. extern void TransactionTreeSetCommitTsData(TransactionId xid, int nsubxids,
  19. TransactionId *subxids, TimestampTz timestamp,
  20. RepOriginId nodeid);
  21. extern bool TransactionIdGetCommitTsData(TransactionId xid,
  22. TimestampTz *ts, RepOriginId *nodeid);
  23. extern TransactionId GetLatestCommitTsData(TimestampTz *ts,
  24. RepOriginId *nodeid);
  25. extern Size CommitTsShmemBuffers(void);
  26. extern Size CommitTsShmemSize(void);
  27. extern void CommitTsShmemInit(void);
  28. extern void BootStrapCommitTs(void);
  29. extern void StartupCommitTs(void);
  30. extern void CommitTsParameterChange(bool newvalue, bool oldvalue);
  31. extern void CompleteCommitTsInitialization(void);
  32. extern void CheckPointCommitTs(void);
  33. extern void ExtendCommitTs(TransactionId newestXact);
  34. extern void TruncateCommitTs(TransactionId oldestXact);
  35. extern void SetCommitTsLimit(TransactionId oldestXact,
  36. TransactionId newestXact);
  37. extern void AdvanceOldestCommitTsXid(TransactionId oldestXact);
  38. extern int committssyncfiletag(const FileTag *ftag, char *path);
  39. /* XLOG stuff */
  40. #define COMMIT_TS_ZEROPAGE 0x00
  41. #define COMMIT_TS_TRUNCATE 0x10
  42. typedef struct xl_commit_ts_set
  43. {
  44. TimestampTz timestamp;
  45. RepOriginId nodeid;
  46. TransactionId mainxid;
  47. /* subxact Xids follow */
  48. } xl_commit_ts_set;
  49. #define SizeOfCommitTsSet (offsetof(xl_commit_ts_set, mainxid) + \
  50. sizeof(TransactionId))
  51. typedef struct xl_commit_ts_truncate
  52. {
  53. int pageno;
  54. TransactionId oldestXid;
  55. } xl_commit_ts_truncate;
  56. #define SizeOfCommitTsTruncate (offsetof(xl_commit_ts_truncate, oldestXid) + \
  57. sizeof(TransactionId))
  58. extern void commit_ts_redo(XLogReaderState *record);
  59. extern void commit_ts_desc(StringInfo buf, XLogReaderState *record);
  60. extern const char *commit_ts_identify(uint8 info);
  61. #endif /* COMMIT_TS_H */