diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index 50c052e993..a79048d233 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -1446,8 +1446,10 @@ sendFile(const char *readfilename, const char *tarfilename, struct stat *statbuf * written only halfway and the checksum would not be valid. * However, replaying WAL would reinstate the correct page in * this case. + * We also skip completely new pages, since they don't have + * a checksum yet. */ - if (PageGetLSN(page) < startptr) + if (!PageIsNew(page) && PageGetLSN(page) < startptr) { checksum = pg_checksum_page((char *) page, blkno + segmentno * RELSEG_SIZE); phdr = (PageHeader) page; diff --git a/src/bin/pg_verify_checksums/pg_verify_checksums.c b/src/bin/pg_verify_checksums/pg_verify_checksums.c index d472f1291c..b065d0bb89 100644 --- a/src/bin/pg_verify_checksums/pg_verify_checksums.c +++ b/src/bin/pg_verify_checksums/pg_verify_checksums.c @@ -106,6 +106,10 @@ scan_file(char *fn, int segmentno) } blocks++; + /* New pages have no checksum yet */ + if (PageIsNew(buf)) + continue; + csum = pg_checksum_page(buf, blockno + segmentno * RELSEG_SIZE); if (csum != header->pd_checksum) {