I attempted quick review and could not come up with much except this
+ /* + * Calculate the amount of FPI data in the record. Each backup block + * takes up BLCKSZ bytes, minus the "hole" length. + * + * XXX: We peek into xlogreader's private decoded backup blocks for the + * hole_length. It doesn't seem worth it to add an accessor macro for + * this. + */ + fpi_len = 0; + for (block_id = 0; block_id <= record->max_block_id; block_id++) + { + if (XLogRecHasCompressedBlockImage(record, block_id)) + fpi_len += BLCKSZ - record->blocks[block_id].compress_len;
IIUC, fpi_len in case of compressed block image should be
fpi_len = record->blocks[block_id].compress_len;
Yep, true. Patches need a rebase btw as Heikki fixed a commit related to the stats of pg_xlogdump.