Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5b5fe6e

Browse files
committed
fix restore of the truncated files. code cleanup
1 parent 0c2ce64 commit 5b5fe6e

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

src/data.c

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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 */
106106
static 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

Comments
 (0)