diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c index 0223ee4408..2d078d8fbb 100644 --- a/src/bin/pg_checksums/pg_checksums.c +++ b/src/bin/pg_checksums/pg_checksums.c @@ -229,12 +229,17 @@ scan_file(const char *fn, BlockNumber segmentno) } blocks++; + /* + * The current_size is calculated before checking if header is a + * new page, because total_size includes the size of new pages. + */ + current_size += r; + /* New pages have no checksum yet */ if (PageIsNew(header)) continue; csum = pg_checksum_page(buf.data, blockno + segmentno * RELSEG_SIZE); - current_size += r; if (mode == PG_MODE_CHECK) { if (csum != header->pd_checksum)