diff options
author | Fujii Masao <fujii@postgresql.org> | 2021-07-21 11:19:00 +0900 |
---|---|---|
committer | Fujii Masao <fujii@postgresql.org> | 2021-07-21 11:19:00 +0900 |
commit | 7fcf2faf9c7dd473208fd6d5565f88d7f733782b (patch) | |
tree | 36a9f917da6e5d6a7199cc0ef40c227e0e7f038a /src/backend/access/transam/xloginsert.c | |
parent | d9809bf8694c17e05537c5dd96cde3e67c02d52a (diff) | |
download | postgresql-7fcf2faf9c7dd473208fd6d5565f88d7f733782b.tar.gz postgresql-7fcf2faf9c7dd473208fd6d5565f88d7f733782b.zip |
Make XLOG_FPI_FOR_HINT records honor full_page_writes setting.
Commit 2c03216d83 changed XLOG_FPI_FOR_HINT records so that they always
included full-page images even when full_page_writes was disabled. However,
in this setting, they don't need to do that because hint bit updates don't
need to be protected from torn writes.
Therefore, this commit makes XLOG_FPI_FOR_HINT records honor full_page_writes
setting. That is, XLOG_FPI_FOR_HINT records may include no full-page images
if full_page_writes is disabled, and WAL replay of them does nothing.
Reported-by: Zhang Wenjie
Author: Kyotaro Horiguchi
Reviewed-by: Fujii Masao
Discussion: https://postgr.es/m/tencent_60F11973A111EED97A8596FFECC4A91ED405@qq.com
Diffstat (limited to 'src/backend/access/transam/xloginsert.c')
-rw-r--r-- | src/backend/access/transam/xloginsert.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c index 3d2c9c3e8cf..e596a0470a9 100644 --- a/src/backend/access/transam/xloginsert.c +++ b/src/backend/access/transam/xloginsert.c @@ -287,8 +287,6 @@ XLogRegisterBlock(uint8 block_id, RelFileNode *rnode, ForkNumber forknum, { registered_buffer *regbuf; - /* This is currently only used to WAL-log a full-page image of a page */ - Assert(flags & REGBUF_FORCE_IMAGE); Assert(begininsert_called); if (block_id >= max_registered_block_id) @@ -995,7 +993,7 @@ XLogSaveBufferForHint(Buffer buffer, bool buffer_std) if (lsn <= RedoRecPtr) { - int flags; + int flags = 0; PGAlignedBlock copied_buffer; char *origdata = (char *) BufferGetBlock(buffer); RelFileNode rnode; @@ -1022,7 +1020,6 @@ XLogSaveBufferForHint(Buffer buffer, bool buffer_std) XLogBeginInsert(); - flags = REGBUF_FORCE_IMAGE; if (buffer_std) flags |= REGBUF_STANDARD; |