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