@@ -100,7 +100,7 @@ typedef struct BackupPageHeader
100100} BackupPageHeader ;
101101
102102/* Special value for compressed_size field */
103- #define PageIsTruncated -1
103+ #define PageIsTruncated -2
104104
105105/* Verify page's header */
106106static bool
@@ -239,6 +239,7 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
239239 BlockNumber absolute_blknum = file -> segno * RELSEG_SIZE + blknum ;
240240
241241 header .block = blknum ;
242+ header .compressed_size = 0 ;
242243
243244 /*
244245 * Read the page and verify its header and checksum.
@@ -256,11 +257,11 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
256257 if (result == 0 )
257258 {
258259 /* This block was truncated.*/
259- // header.compressed_size = PageIsTruncated;
260- // page_is_valid = true;
260+ header .compressed_size = PageIsTruncated ;
261+ page_is_valid = true;
261262 /* Page is not actually valid, but it is absent
262263 * and we're not going to reread it or validate */
263- // elog(WARNING, "backup blkno %u. PageIsTruncated", blknum);
264+ // elog(WARNING, "backup blkno %u. PageIsTruncated", blknum);
264265 }
265266
266267 if (result == 1 )
@@ -283,7 +284,7 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
283284 {
284285 /* This block was truncated.*/
285286 header .compressed_size = PageIsTruncated ;
286- elog (WARNING , "backup blkno %u. reread PageIsTruncated" , blknum );
287+ // elog(WARNING, "backup blkno %u. reread PageIsTruncated", blknum);
287288 }
288289 else if (page_size != BLCKSZ )
289290 {
@@ -311,11 +312,7 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
311312
312313 file -> compress_alg = compress_alg ;
313314
314- /* if compression failed, reset size of the block */
315- if (header .compressed_size == -1 )
316- header .compressed_size = BLCKSZ ;
317-
318-
315+ // elog(WARNING, "backup blkno %u. header.compressed_size %d", blknum, header.compressed_size);
319316 Assert (header .compressed_size <= BLCKSZ );
320317 }
321318
@@ -326,10 +323,12 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
326323 if (header .compressed_size == PageIsTruncated )
327324 {
328325 memcpy (write_buffer , & header , sizeof (header ));
326+ // elog(WARNING, "page was truncated in file %s block %u", file->path, header.block);
329327 }
330328 /* The page compression failed. Write it as is. */
331- else if (header .compressed_size == BLCKSZ || header . compressed_size == 0 )
329+ else if (header .compressed_size == -1 )
332330 {
331+ header .compressed_size = BLCKSZ ;
333332 memcpy (write_buffer , & header , sizeof (header ));
334333 memcpy (write_buffer + sizeof (header ), page , BLCKSZ );
335334 write_buffer_size += header .compressed_size ;
@@ -587,7 +586,7 @@ restore_data_file(const char *from_root,
587586 * Truncate file to this length.
588587 */
589588 ftruncate (fileno (out ), header .block * BLCKSZ );
590- elog (WARNING , "truncate file %s to block %u" , file -> path , header .block );
589+ elog (VERBOSE , "truncate file %s to block %u" , file -> path , header .block );
591590 break ;
592591 }
593592
0 commit comments