From 409c47797b3beba03f88e9386b0f0967ba28bf41 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas 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