From 64740853f07fd1a8314ad68c38298d7e5afe1acc Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Sun, 18 Aug 2024 12:03:59 -0700 Subject: [PATCH] Fix comments on wal_level=minimal, CREATE TABLESPACE and CREATE DATABASE. Commit 97ddda8a82ac470ae581d0eb485b6577707678bc removed the rmtree() behavior from XLOG_TBLSPC_CREATE, obsoleting that part of the comment. The comment's point about XLOG_DBASE_CREATE was wrong when commit fa0f466d5329e10b16f3b38c8eaf5306f7e234e8 introduced the point. (It would have been accurate if that commit had predated commit fbcbc5d06f53aea412130deb52e216aa3883fb8d introducing the second checkpoint of CREATE DATABASE.) Nothing can skip log_smgrcreate() on the basis of wal_level=minimal, so don't comment on that. Commit c6b92041d38512a4176ed76ad06f713d2e6c01a8 expanded WAL skipping from five specific operations to relfilenodes generally, hence the CreateDatabaseUsingFileCopy() comment change. Discussion: https://postgr.es/m/20231008022204.cc@rfd.leadboat.com --- src/backend/access/heap/heapam_handler.c | 4 +--- src/backend/commands/dbcommands.c | 7 ++++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c index e28047c201a..1c6da286d43 100644 --- a/src/backend/access/heap/heapam_handler.c +++ b/src/backend/access/heap/heapam_handler.c @@ -605,9 +605,7 @@ heapam_relation_set_new_filelocator(Relation rel, /* * If required, set up an init fork for an unlogged table so that it can - * be correctly reinitialized on restart. Recovery may remove it while - * replaying, for example, an 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) { diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 7c92c3463b6..eb2301a5cf4 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -644,9 +644,10 @@ CreateDatabaseUsingFileCopy(Oid src_dboid, Oid dst_dboid, Oid src_tsid, * make the XLOG entry for the benefit of PITR operations). This avoids * two nasty scenarios: * - * #1: When PITR is off, we don't XLOG the contents of newly created - * indexes; therefore the drop-and-recreate-whole-directory behavior of - * DBASE_CREATE replay would lose such indexes. + * #1: At wal_level=minimal, we don't XLOG the contents of newly created + * relfilenodes; therefore the drop-and-recreate-whole-directory behavior + * of DBASE_CREATE replay would lose such files created in the new + * database between our commit and the next checkpoint. * * #2: Since we have to recopy the source database during DBASE_CREATE * replay, we run the risk of copying changes in it that were committed