PostgreSQL Source Code git master
Loading...
Searching...
No Matches
xlogrecord.h File Reference
#include "access/rmgr.h"
#include "access/xlogdefs.h"
#include "port/pg_crc32c.h"
#include "storage/block.h"
#include "storage/relfilelocator.h"
Include dependency graph for xlogrecord.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  XLogRecord
 
struct  XLogRecordBlockHeader
 
struct  XLogRecordBlockImageHeader
 
struct  XLogRecordBlockCompressHeader
 
struct  XLogRecordDataHeaderShort
 
struct  XLogRecordDataHeaderLong
 

Macros

#define SizeOfXLogRecord   (offsetof(XLogRecord, xl_crc) + sizeof(pg_crc32c))
 
#define XLR_INFO_MASK   0x0F
 
#define XLR_RMGR_INFO_MASK   0xF0
 
#define XLogRecordMaxSize   (1020 * 1024 * 1024)
 
#define XLR_SPECIAL_REL_UPDATE   0x01
 
#define XLR_CHECK_CONSISTENCY   0x02
 
#define SizeOfXLogRecordBlockHeader   (offsetof(XLogRecordBlockHeader, data_length) + sizeof(uint16))
 
#define SizeOfXLogRecordBlockImageHeader    (offsetof(XLogRecordBlockImageHeader, bimg_info) + sizeof(uint8))
 
#define BKPIMAGE_HAS_HOLE   0x01 /* page image has "hole" */
 
#define BKPIMAGE_APPLY
 
#define BKPIMAGE_COMPRESS_PGLZ   0x04
 
#define BKPIMAGE_COMPRESS_LZ4   0x08
 
#define BKPIMAGE_COMPRESS_ZSTD   0x10
 
#define BKPIMAGE_COMPRESSED(info)
 
#define SizeOfXLogRecordBlockCompressHeader    sizeof(XLogRecordBlockCompressHeader)
 
#define MaxSizeOfXLogRecordBlockHeader
 
#define BKPBLOCK_FORK_MASK   0x0F
 
#define BKPBLOCK_FLAG_MASK   0xF0
 
#define BKPBLOCK_HAS_IMAGE   0x10 /* block data is an XLogRecordBlockImage */
 
#define BKPBLOCK_HAS_DATA   0x20
 
#define BKPBLOCK_WILL_INIT   0x40 /* redo will re-init the page */
 
#define BKPBLOCK_SAME_REL
 
#define SizeOfXLogRecordDataHeaderShort   (sizeof(uint8) * 2)
 
#define SizeOfXLogRecordDataHeaderLong   (sizeof(uint8) + sizeof(uint32))
 
#define XLR_MAX_BLOCK_ID   32
 
#define XLR_BLOCK_ID_DATA_SHORT   255
 
#define XLR_BLOCK_ID_DATA_LONG   254
 
#define XLR_BLOCK_ID_ORIGIN   253
 
#define XLR_BLOCK_ID_TOPLEVEL_XID   252
 

Typedefs

typedef struct XLogRecord XLogRecord
 
typedef struct XLogRecordBlockHeader XLogRecordBlockHeader
 
typedef struct XLogRecordBlockImageHeader XLogRecordBlockImageHeader
 
typedef struct XLogRecordBlockCompressHeader XLogRecordBlockCompressHeader
 
typedef struct XLogRecordDataHeaderShort XLogRecordDataHeaderShort
 
typedef struct XLogRecordDataHeaderLong XLogRecordDataHeaderLong
 

Macro Definition Documentation

◆ BKPBLOCK_FLAG_MASK

#define BKPBLOCK_FLAG_MASK   0xF0

Definition at line 196 of file xlogrecord.h.

◆ BKPBLOCK_FORK_MASK

#define BKPBLOCK_FORK_MASK   0x0F

Definition at line 195 of file xlogrecord.h.

◆ BKPBLOCK_HAS_DATA

#define BKPBLOCK_HAS_DATA   0x20

Definition at line 198 of file xlogrecord.h.

◆ BKPBLOCK_HAS_IMAGE

#define BKPBLOCK_HAS_IMAGE   0x10 /* block data is an XLogRecordBlockImage */

Definition at line 197 of file xlogrecord.h.

◆ BKPBLOCK_SAME_REL

#define BKPBLOCK_SAME_REL
Value:
0x80 /* RelFileLocator omitted, same as
* previous */

Definition at line 200 of file xlogrecord.h.

214{
215 uint8 id; /* XLR_BLOCK_ID_DATA_SHORT */
216 uint8 data_length; /* number of payload bytes */
218
219#define SizeOfXLogRecordDataHeaderShort (sizeof(uint8) * 2)
220
221typedef struct XLogRecordDataHeaderLong
222{
223 uint8 id; /* XLR_BLOCK_ID_DATA_LONG */
224 /* followed by uint32 data_length, unaligned */
226
227#define SizeOfXLogRecordDataHeaderLong (sizeof(uint8) + sizeof(uint32))
228
229/*
230 * Block IDs used to distinguish different kinds of record fragments. Block
231 * references are numbered from 0 to XLR_MAX_BLOCK_ID. A rmgr is free to use
232 * any ID number in that range (although you should stick to small numbers,
233 * because the WAL machinery is optimized for that case). A few ID
234 * numbers are reserved to denote the "main" data portion of the record,
235 * as well as replication-supporting transaction metadata.
236 *
237 * The maximum is currently set at 32, quite arbitrarily. Most records only
238 * need a handful of block references, but there are a few exceptions that
239 * need more.
240 */
241#define XLR_MAX_BLOCK_ID 32
242
243#define XLR_BLOCK_ID_DATA_SHORT 255
244#define XLR_BLOCK_ID_DATA_LONG 254
245#define XLR_BLOCK_ID_ORIGIN 253
246#define XLR_BLOCK_ID_TOPLEVEL_XID 252
247
248#endif /* XLOGRECORD_H */
uint8_t uint8
Definition c.h:554

◆ BKPBLOCK_WILL_INIT

#define BKPBLOCK_WILL_INIT   0x40 /* redo will re-init the page */

Definition at line 199 of file xlogrecord.h.

◆ BKPIMAGE_APPLY

#define BKPIMAGE_APPLY
Value:
0x02 /* page image should be restored
* during replay */

Definition at line 158 of file xlogrecord.h.

◆ BKPIMAGE_COMPRESS_LZ4

#define BKPIMAGE_COMPRESS_LZ4   0x08

Definition at line 161 of file xlogrecord.h.

◆ BKPIMAGE_COMPRESS_PGLZ

#define BKPIMAGE_COMPRESS_PGLZ   0x04

Definition at line 160 of file xlogrecord.h.

◆ BKPIMAGE_COMPRESS_ZSTD

#define BKPIMAGE_COMPRESS_ZSTD   0x10

Definition at line 162 of file xlogrecord.h.

◆ BKPIMAGE_COMPRESSED

#define BKPIMAGE_COMPRESSED (   info)
Value:
#define BKPIMAGE_COMPRESS_ZSTD
Definition xlogrecord.h:162
#define BKPIMAGE_COMPRESS_LZ4
Definition xlogrecord.h:161
#define BKPIMAGE_COMPRESS_PGLZ
Definition xlogrecord.h:160

Definition at line 164 of file xlogrecord.h.

◆ BKPIMAGE_HAS_HOLE

#define BKPIMAGE_HAS_HOLE   0x01 /* page image has "hole" */

Definition at line 157 of file xlogrecord.h.

◆ MaxSizeOfXLogRecordBlockHeader

#define MaxSizeOfXLogRecordBlockHeader
Value:
uint32 BlockNumber
Definition block.h:31
static int fb(int x)
#define SizeOfXLogRecordBlockImageHeader
Definition xlogrecord.h:153
#define SizeOfXLogRecordBlockCompressHeader
Definition xlogrecord.h:177
#define SizeOfXLogRecordBlockHeader
Definition xlogrecord.h:115

Definition at line 184 of file xlogrecord.h.

◆ SizeOfXLogRecord

#define SizeOfXLogRecord   (offsetof(XLogRecord, xl_crc) + sizeof(pg_crc32c))

Definition at line 55 of file xlogrecord.h.

◆ SizeOfXLogRecordBlockCompressHeader

#define SizeOfXLogRecordBlockCompressHeader    sizeof(XLogRecordBlockCompressHeader)

Definition at line 177 of file xlogrecord.h.

◆ SizeOfXLogRecordBlockHeader

#define SizeOfXLogRecordBlockHeader   (offsetof(XLogRecordBlockHeader, data_length) + sizeof(uint16))

Definition at line 115 of file xlogrecord.h.

◆ SizeOfXLogRecordBlockImageHeader

#define SizeOfXLogRecordBlockImageHeader    (offsetof(XLogRecordBlockImageHeader, bimg_info) + sizeof(uint8))

Definition at line 153 of file xlogrecord.h.

◆ SizeOfXLogRecordDataHeaderLong

#define SizeOfXLogRecordDataHeaderLong   (sizeof(uint8) + sizeof(uint32))

Definition at line 225 of file xlogrecord.h.

◆ SizeOfXLogRecordDataHeaderShort

#define SizeOfXLogRecordDataHeaderShort   (sizeof(uint8) * 2)

Definition at line 217 of file xlogrecord.h.

◆ XLogRecordMaxSize

#define XLogRecordMaxSize   (1020 * 1024 * 1024)

Definition at line 74 of file xlogrecord.h.

◆ XLR_BLOCK_ID_DATA_LONG

#define XLR_BLOCK_ID_DATA_LONG   254

Definition at line 242 of file xlogrecord.h.

◆ XLR_BLOCK_ID_DATA_SHORT

#define XLR_BLOCK_ID_DATA_SHORT   255

Definition at line 241 of file xlogrecord.h.

◆ XLR_BLOCK_ID_ORIGIN

#define XLR_BLOCK_ID_ORIGIN   253

Definition at line 243 of file xlogrecord.h.

◆ XLR_BLOCK_ID_TOPLEVEL_XID

#define XLR_BLOCK_ID_TOPLEVEL_XID   252

Definition at line 244 of file xlogrecord.h.

◆ XLR_CHECK_CONSISTENCY

#define XLR_CHECK_CONSISTENCY   0x02

Definition at line 91 of file xlogrecord.h.

◆ XLR_INFO_MASK

#define XLR_INFO_MASK   0x0F

Definition at line 62 of file xlogrecord.h.

◆ XLR_MAX_BLOCK_ID

#define XLR_MAX_BLOCK_ID   32

Definition at line 239 of file xlogrecord.h.

◆ XLR_RMGR_INFO_MASK

#define XLR_RMGR_INFO_MASK   0xF0

Definition at line 63 of file xlogrecord.h.

◆ XLR_SPECIAL_REL_UPDATE

#define XLR_SPECIAL_REL_UPDATE   0x01

Definition at line 82 of file xlogrecord.h.

Typedef Documentation

◆ XLogRecord

◆ XLogRecordBlockCompressHeader

◆ XLogRecordBlockHeader

◆ XLogRecordBlockImageHeader

◆ XLogRecordDataHeaderLong

◆ XLogRecordDataHeaderShort