0003-Remove-unnecessary-smgrimmedsync-when-creating-unlog.patch
text/x-patch
Filename: 0003-Remove-unnecessary-smgrimmedsync-when-creating-unlog.patch
Type: text/x-patch
Part: 2
Message:
Unlogged relations and WAL-logging
Patch
Format: format-patch
Series: patch 0003
Subject: Remove unnecessary smgrimmedsync() when creating unlogged table.
| File | + | − |
|---|---|---|
| src/backend/access/heap/heapam_handler.c | 1 | 7 |
| src/backend/catalog/storage.c | 1 | 1 |
From 409c47797b3beba03f88e9386b0f0967ba28bf41 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Thu, 27 Jan 2022 21:24:04 +0200
Subject: [PATCH 3/3] Remove unnecessary smgrimmedsync() when creating unlogged
table.
In the passing, fix a comment in smgrDoPendingSyncs().
TODO: only push this after we have fixed smgrcreate() to register the new
relation for fsyncing at next checkpoint.
---
src/backend/access/heap/heapam_handler.c | 8 +-------
src/backend/catalog/storage.c | 2 +-
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c
index 39ef8a0b77d..a7259936fec 100644
--- a/src/backend/access/heap/heapam_handler.c
+++ b/src/backend/access/heap/heapam_handler.c
@@ -597,12 +597,7 @@ heapam_relation_set_new_filenode(Relation rel,
/*
* If required, set up an init fork for an unlogged table so that it can
- * be correctly reinitialized on restart. An immediate sync is required
- * even if the page has been logged, because the write did not go through
- * shared_buffers and therefore a concurrent checkpoint may have moved the
- * redo pointer past our xlog record. Recovery may as well remove it
- * while replaying, for example, XLOG_DBASE_CREATE or XLOG_TBLSPC_CREATE
- * record. Therefore, logging is necessary even if wal_level=minimal.
+ * be correctly reinitialized on restart.
*/
if (persistence == RELPERSISTENCE_UNLOGGED)
{
@@ -611,7 +606,6 @@ heapam_relation_set_new_filenode(Relation rel,
rel->rd_rel->relkind == RELKIND_TOASTVALUE);
smgrcreate(srel, INIT_FORKNUM, false);
log_smgrcreate(newrnode, INIT_FORKNUM);
- smgrimmedsync(srel, INIT_FORKNUM);
}
smgrclose(srel);
diff --git a/src/backend/catalog/storage.c b/src/backend/catalog/storage.c
index 9b8075536a7..468b6dafcb6 100644
--- a/src/backend/catalog/storage.c
+++ b/src/backend/catalog/storage.c
@@ -726,7 +726,7 @@ smgrDoPendingSyncs(bool isCommit, bool isParallelWorker)
/*
* We emit newpage WAL records for smaller relations.
*
- * Small WAL records have a chance to be emitted along with other
+ * Small WAL records have a chance to be flushed along with other
* backends' WAL records. We emit WAL records instead of syncing for
* files that are smaller than a certain threshold, expecting faster
* commit. The threshold is defined by the GUC wal_skip_threshold.
--
2.30.2