Skip to content

Commit 9e41148

Browse files
committed
Fix under-parenthesized XLogRecHasBlockRef() macro.
Commit f003d9f left this macro with inadequate (or, one could say, too much) parenthesization. Which was catastrophic to the correctness of calls such as "if (!XLogRecHasBlockRef(record, 1)) ...". There are only a few of those, which perhaps explains why we didn't notice immediately (with our general weakness of WAL replay testing being another factor). I found it by debugging intermittent replay failures like 2021-04-08 14:33:30.191 EDT [29463] PANIC: failed to locate backup block with ID 1 2021-04-08 14:33:30.191 EDT [29463] CONTEXT: WAL redo at 0/95D3438 for SPGist/ADD_NODE: off 1; blkref #0: rel 1663/16384/25998, blk 1
1 parent db01f79 commit 9e41148

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/include/access/xlogreader.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,8 @@ extern bool DecodeXLogRecord(XLogReaderState *state,
385385
#define XLogRecMaxBlockId(decoder) ((decoder)->record->max_block_id)
386386
#define XLogRecGetBlock(decoder, i) (&(decoder)->record->blocks[(i)])
387387
#define XLogRecHasBlockRef(decoder, block_id) \
388-
((decoder)->record->max_block_id >= (block_id)) && \
389-
((decoder)->record->blocks[block_id].in_use)
388+
((decoder)->record->max_block_id >= (block_id) && \
389+
(decoder)->record->blocks[block_id].in_use)
390390
#define XLogRecHasBlockImage(decoder, block_id) \
391391
((decoder)->record->blocks[block_id].has_image)
392392
#define XLogRecBlockImageApply(decoder, block_id) \

0 commit comments

Comments
 (0)