From fb1d0662da0397d9f0d22bd3e5028cae55c72f6a Mon Sep 17 00:00:00 2001 From: markrui Date: Sat, 13 Jun 2026 23:11:12 +0800 Subject: [PATCH] Remove all-zeros page WAL compression to reduce redundant WAL on extension Revert the Neon hack in XLogRecordAssemble that compressed an all-zeros new page into a single whole-page hole (hole_offset = 0, hole_length = BLCKSZ), and restore vanilla PostgreSQL's standard pd_lower/pd_upper hole computation. This special compression existed only to make the per-block zero-page FPIs that Neon emitted on relation extension cheap. Neon now logs a single marker FPI for the last extended block instead of one FPI per block, so those redundant per-block WAL records are gone and the compression hack is no longer needed. Removing it cuts WAL volume during relation extension, improves write performance, and keeps the WAL parseable by unmodified PostgreSQL. --- src/backend/access/transam/xloginsert.c | 32 ++++++++++--------------- 1 file changed, 12 insertions(+), 20 deletions(-) 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