xlogutils.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * xlogutils.h
  3. *
  4. * Utilities for replaying WAL records.
  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/xlogutils.h
  10. */
  11. #ifndef XLOG_UTILS_H
  12. #define XLOG_UTILS_H
  13. #include "access/xlogreader.h"
  14. #include "storage/bufmgr.h"
  15. extern bool XLogHaveInvalidPages(void);
  16. extern void XLogCheckInvalidPages(void);
  17. extern void XLogDropRelation(RelFileNode rnode, ForkNumber forknum);
  18. extern void XLogDropDatabase(Oid dbid);
  19. extern void XLogTruncateRelation(RelFileNode rnode, ForkNumber forkNum,
  20. BlockNumber nblocks);
  21. /* Result codes for XLogReadBufferForRedo[Extended] */
  22. typedef enum
  23. {
  24. BLK_NEEDS_REDO, /* changes from WAL record need to be applied */
  25. BLK_DONE, /* block is already up-to-date */
  26. BLK_RESTORED, /* block was restored from a full-page image */
  27. BLK_NOTFOUND /* block was not found (and hence does not
  28. * need to be replayed) */
  29. } XLogRedoAction;
  30. extern XLogRedoAction XLogReadBufferForRedo(XLogReaderState *record,
  31. uint8 buffer_id, Buffer *buf);
  32. extern Buffer XLogInitBufferForRedo(XLogReaderState *record, uint8 block_id);
  33. extern XLogRedoAction XLogReadBufferForRedoExtended(XLogReaderState *record,
  34. uint8 buffer_id,
  35. ReadBufferMode mode, bool get_cleanup_lock,
  36. Buffer *buf);
  37. extern Buffer XLogReadBufferExtended(RelFileNode rnode, ForkNumber forknum,
  38. BlockNumber blkno, ReadBufferMode mode);
  39. extern Relation CreateFakeRelcacheEntry(RelFileNode rnode);
  40. extern void FreeFakeRelcacheEntry(Relation fakerel);
  41. extern int read_local_xlog_page(XLogReaderState *state,
  42. XLogRecPtr targetPagePtr, int reqLen,
  43. XLogRecPtr targetRecPtr, char *cur_page,
  44. TimeLineID *pageTLI);
  45. #endif