| /*------------------------------------------------------------------------- |
| * |
| * storage_xlog.h |
| * prototypes for XLog support for backend/catalog/storage.c |
| * |
| * |
| * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group |
| * Portions Copyright (c) 1994, Regents of the University of California |
| * |
| * src/include/catalog/storage_xlog.h |
| * |
| *------------------------------------------------------------------------- |
| */ |
| #ifndef STORAGE_XLOG_H |
| #define STORAGE_XLOG_H |
| |
| #include "access/xlogreader.h" |
| #include "lib/stringinfo.h" |
| #include "storage/block.h" |
| #include "storage/relfilenode.h" |
| #include "storage/smgr.h" |
| |
| /* |
| * Declarations for smgr-related XLOG records |
| * |
| * Note: we log file creation and truncation here, but logging of deletion |
| * actions is handled by xact.c, because it is part of transaction commit. |
| */ |
| |
| /* XLOG gives us high 4 bits */ |
| #define XLOG_SMGR_CREATE 0x10 |
| #define XLOG_SMGR_TRUNCATE 0x20 |
| |
| typedef struct xl_smgr_create |
| { |
| RelFileNode rnode; |
| ForkNumber forkNum; |
| SMgrImpl impl; |
| } xl_smgr_create; |
| |
| /* flags for xl_smgr_truncate */ |
| #define SMGR_TRUNCATE_HEAP 0x0001 |
| #define SMGR_TRUNCATE_VM 0x0002 |
| #define SMGR_TRUNCATE_FSM 0x0004 |
| #define SMGR_TRUNCATE_ALL \ |
| (SMGR_TRUNCATE_HEAP|SMGR_TRUNCATE_VM|SMGR_TRUNCATE_FSM) |
| |
| typedef struct xl_smgr_truncate |
| { |
| BlockNumber blkno; |
| RelFileNode rnode; |
| int flags; |
| } xl_smgr_truncate; |
| |
| extern void log_smgrcreate(const RelFileNode *rnode, ForkNumber forkNum, SMgrImpl impl); |
| |
| extern void smgr_redo(XLogReaderState *record); |
| extern void smgr_desc(StringInfo buf, XLogReaderState *record); |
| extern const char *smgr_identify(uint8 info); |
| |
| #endif /* STORAGE_XLOG_H */ |