diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c index aa2783a2064..06d6a55bdcf 100644 --- a/src/backend/access/transam/xloginsert.c +++ b/src/backend/access/transam/xloginsert.c @@ -690,30 +690,22 @@ XLogRecordAssemble(RmgrId rmid, uint8 info, */ if (regbuf->flags & REGBUF_STANDARD) { - if (PageIsNew(page)) + /* Assume we can omit data between pd_lower and pd_upper */ + uint16 lower = ((PageHeader) page)->pd_lower; + uint16 upper = ((PageHeader) page)->pd_upper; + + if (lower >= SizeOfPageHeaderData && + upper > lower && + upper <= BLCKSZ) { - bimg.hole_offset = 0; - cbimg.hole_length = BLCKSZ; + bimg.hole_offset = lower; + cbimg.hole_length = upper - lower; } else { - /* Assume we can omit data between pd_lower and pd_upper */ - uint16 lower = ((PageHeader) page)->pd_lower; - uint16 upper = ((PageHeader) page)->pd_upper; - - if (lower >= SizeOfPageHeaderData && - upper > lower && - upper <= BLCKSZ) - { - bimg.hole_offset = lower; - cbimg.hole_length = upper - lower; - } - else - { - /* No "hole" to remove */ - bimg.hole_offset = 0; - cbimg.hole_length = 0; - } + /* No "hole" to remove */ + bimg.hole_offset = 0; + cbimg.hole_length = 0; } } else