generic_xlog.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*-------------------------------------------------------------------------
  2. *
  3. * generic_xlog.h
  4. * Generic xlog API definition.
  5. *
  6. *
  7. * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
  8. * Portions Copyright (c) 1994, Regents of the University of California
  9. *
  10. * src/include/access/generic_xlog.h
  11. *
  12. *-------------------------------------------------------------------------
  13. */
  14. #ifndef GENERIC_XLOG_H
  15. #define GENERIC_XLOG_H
  16. #include "access/xlog.h"
  17. #include "access/xlog_internal.h"
  18. #include "access/xloginsert.h"
  19. #include "storage/bufpage.h"
  20. #include "utils/rel.h"
  21. #define MAX_GENERIC_XLOG_PAGES XLR_NORMAL_MAX_BLOCK_ID
  22. /* Flag bits for GenericXLogRegisterBuffer */
  23. #define GENERIC_XLOG_FULL_IMAGE 0x0001 /* write full-page image */
  24. /* state of generic xlog record construction */
  25. struct GenericXLogState;
  26. typedef struct GenericXLogState GenericXLogState;
  27. /* API for construction of generic xlog records */
  28. extern GenericXLogState *GenericXLogStart(Relation relation);
  29. extern Page GenericXLogRegisterBuffer(GenericXLogState *state, Buffer buffer,
  30. int flags);
  31. extern XLogRecPtr GenericXLogFinish(GenericXLogState *state);
  32. extern void GenericXLogAbort(GenericXLogState *state);
  33. /* functions defined for rmgr */
  34. extern void generic_redo(XLogReaderState *record);
  35. extern const char *generic_identify(uint8 info);
  36. extern void generic_desc(StringInfo buf, XLogReaderState *record);
  37. extern void generic_mask(char *pagedata, BlockNumber blkno);
  38. #endif /* GENERIC_XLOG_H */