mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Add WAL consistency checking facility.
When the new GUC wal_consistency_checking is set to a non-empty value, it triggers recording of additional full-page images, which are compared on the standby against the results of applying the WAL record (without regard to those full-page images). Allowable differences such as hints are masked out, and the resulting pages are compared; any difference results in a FATAL error on the standby. Kuntal Ghosh, based on earlier patches by Michael Paquier and Heikki Linnakangas. Extensively reviewed and revised by Michael Paquier and by me, with additional reviews and comments from Amit Kapila, Álvaro Herrera, Simon Riggs, and Peter Eisentraut.
This commit is contained in:
@ -51,7 +51,8 @@ typedef struct
|
||||
uint8 flags;
|
||||
|
||||
/* Information on full-page image, if any */
|
||||
bool has_image;
|
||||
bool has_image; /* has image, even for consistency checking */
|
||||
bool apply_image; /* has image that should be restored */
|
||||
char *bkp_image;
|
||||
uint16 hole_offset;
|
||||
uint16 hole_length;
|
||||
@ -205,6 +206,8 @@ extern bool DecodeXLogRecord(XLogReaderState *state, XLogRecord *record,
|
||||
((decoder)->blocks[block_id].in_use)
|
||||
#define XLogRecHasBlockImage(decoder, block_id) \
|
||||
((decoder)->blocks[block_id].has_image)
|
||||
#define XLogRecBlockImageApply(decoder, block_id) \
|
||||
((decoder)->blocks[block_id].apply_image)
|
||||
|
||||
extern bool RestoreBlockImage(XLogReaderState *recoder, uint8 block_id, char *dst);
|
||||
extern char *XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len);
|
||||
|
Reference in New Issue
Block a user