@@ -100,7 +100,7 @@ typedef struct BackupPageHeader
100
100
} BackupPageHeader ;
101
101
102
102
/* Special value for compressed_size field */
103
- #define PageIsTruncated -1
103
+ #define PageIsTruncated -2
104
104
105
105
/* Verify page's header */
106
106
static bool
@@ -239,6 +239,7 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
239
239
BlockNumber absolute_blknum = file -> segno * RELSEG_SIZE + blknum ;
240
240
241
241
header .block = blknum ;
242
+ header .compressed_size = 0 ;
242
243
243
244
/*
244
245
* Read the page and verify its header and checksum.
@@ -256,11 +257,11 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
256
257
if (result == 0 )
257
258
{
258
259
/* This block was truncated.*/
259
- // header.compressed_size = PageIsTruncated;
260
- // page_is_valid = true;
260
+ header .compressed_size = PageIsTruncated ;
261
+ page_is_valid = true;
261
262
/* Page is not actually valid, but it is absent
262
263
* 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);
264
265
}
265
266
266
267
if (result == 1 )
@@ -283,7 +284,7 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
283
284
{
284
285
/* This block was truncated.*/
285
286
header .compressed_size = PageIsTruncated ;
286
- elog (WARNING , "backup blkno %u. reread PageIsTruncated" , blknum );
287
+ // elog(WARNING, "backup blkno %u. reread PageIsTruncated", blknum);
287
288
}
288
289
else if (page_size != BLCKSZ )
289
290
{
@@ -311,11 +312,7 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
311
312
312
313
file -> compress_alg = compress_alg ;
313
314
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);
319
316
Assert (header .compressed_size <= BLCKSZ );
320
317
}
321
318
@@ -326,10 +323,12 @@ backup_data_page(pgFile *file, XLogRecPtr prev_backup_start_lsn,
326
323
if (header .compressed_size == PageIsTruncated )
327
324
{
328
325
memcpy (write_buffer , & header , sizeof (header ));
326
+ // elog(WARNING, "page was truncated in file %s block %u", file->path, header.block);
329
327
}
330
328
/* 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 )
332
330
{
331
+ header .compressed_size = BLCKSZ ;
333
332
memcpy (write_buffer , & header , sizeof (header ));
334
333
memcpy (write_buffer + sizeof (header ), page , BLCKSZ );
335
334
write_buffer_size += header .compressed_size ;
@@ -587,7 +586,7 @@ restore_data_file(const char *from_root,
587
586
* Truncate file to this length.
588
587
*/
589
588
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 );
591
590
break ;
592
591
}
593
592
0 commit comments