diff options
Diffstat (limited to 'src/bin/pg_rewind/filemap.c')
-rw-r--r-- | src/bin/pg_rewind/filemap.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c index 314b064b223..ba34dbac146 100644 --- a/src/bin/pg_rewind/filemap.c +++ b/src/bin/pg_rewind/filemap.c @@ -324,17 +324,20 @@ process_target_wal_block_change(ForkNumber forknum, RelFileNode rnode, { Assert(entry->isrelfile); - if (entry->target_type != FILE_TYPE_REGULAR) - pg_fatal("unexpected page modification for non-regular file \"%s\"", - entry->path); - - if (entry->target_exists && entry->source_exists) + if (entry->target_exists) { - off_t end_offset; + if (entry->target_type != FILE_TYPE_REGULAR) + pg_fatal("unexpected page modification for non-regular file \"%s\"", + entry->path); - end_offset = (blkno_inseg + 1) * BLCKSZ; - if (end_offset <= entry->source_size && end_offset <= entry->target_size) - datapagemap_add(&entry->target_pages_to_overwrite, blkno_inseg); + if (entry->source_exists) + { + off_t end_offset; + + end_offset = (blkno_inseg + 1) * BLCKSZ; + if (end_offset <= entry->source_size && end_offset <= entry->target_size) + datapagemap_add(&entry->target_pages_to_overwrite, blkno_inseg); + } } } } |