]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Rename CHECKPOINT_IMMEDIATE to CHECKPOINT_FAST.
authorNathan Bossart <nathan@postgresql.org>
Fri, 11 Jul 2025 16:51:25 +0000 (11:51 -0500)
committerNathan Bossart <nathan@postgresql.org>
Fri, 11 Jul 2025 16:51:25 +0000 (11:51 -0500)
The new name more accurately reflects the effects of this flag on a
requested checkpoint.  Checkpoint-related log messages (i.e., those
controlled by the log_checkpoints configuration parameter) will now
say "fast" instead of "immediate", too.  Likewise, references to
"immediate" checkpoints in the documentation have been updated to
say "fast".  This is preparatory work for a follow-up commit that
will add a MODE option to the CHECKPOINT command.

Author: Christoph Berg <myon@debian.org>
Discussion: https://postgr.es/m/aDnaKTEf-0dLiEfz%40msg.df7cb.de

12 files changed:
doc/src/sgml/backup.sgml
doc/src/sgml/func.sgml
doc/src/sgml/ref/checkpoint.sgml
doc/src/sgml/ref/pg_basebackup.sgml
src/backend/access/transam/xlog.c
src/backend/commands/dbcommands.c
src/backend/commands/tablespace.c
src/backend/postmaster/checkpointer.c
src/backend/storage/buffer/bufmgr.c
src/backend/tcop/utility.c
src/include/access/xlog.h
src/test/recovery/t/041_checkpoint_at_promote.pl

index 25b8904baf7cdaa7529ee0e67d8cab93aad2e032..5f7489afbd16559e766bd772b282545d3cc29566 100644 (file)
@@ -991,7 +991,7 @@ SELECT pg_backup_start(label => 'label', fast => false);
      usually preferable as it minimizes the impact on the running system.  If you
      want to start the backup as soon as possible, pass <literal>true</literal> as
      the second parameter to <function>pg_backup_start</function> and it will
-     request an immediate checkpoint, which will finish as fast as possible using
+     request a fast checkpoint, which will finish as fast as possible using
      as much I/O as possible.
     </para>
 
index c28aa71f570d4e3911acdf84b5a016dc8c54d7a4..6b327d4fd81ce0570724c898030bc44b41633f91 100644 (file)
@@ -28973,7 +28973,7 @@ LOG:  Grand total: 1651920 bytes in 201 blocks; 622360 free (88 chunks); 1029560
         will be stored.)
         If the optional second parameter is given as <literal>true</literal>,
         it specifies executing <function>pg_backup_start</function> as quickly
-        as possible.  This forces an immediate checkpoint which will cause a
+        as possible.  This forces a fast checkpoint which will cause a
         spike in I/O operations, slowing any concurrently executing queries.
        </para>
        <para>
index db011a47d0458a2ebf6c3c28d6d8cbe77786f76c..10a433e47570b127209734b18ab352850e6232b1 100644 (file)
@@ -37,7 +37,7 @@ CHECKPOINT
   </para>
 
   <para>
-   The <command>CHECKPOINT</command> command forces an immediate
+   The <command>CHECKPOINT</command> command forces a fast
    checkpoint when the command is issued, without waiting for a
    regular checkpoint scheduled by the system (controlled by the settings in
    <xref linkend="runtime-config-wal-checkpoints"/>).
index 9659f76042c5b5a9bbcf20b390ea15d684f1f205..fecee08b0a536422bd795b78482e783333999dfa 100644 (file)
@@ -500,8 +500,9 @@ PostgreSQL documentation
       <term><option>--checkpoint={fast|spread}</option></term>
       <listitem>
        <para>
-        Sets checkpoint mode to fast (immediate) or spread (the default)
+        Sets checkpoint mode to fast or spread
         (see <xref linkend="backup-lowlevel-base-backup"/>).
+        The default is spread.
        </para>
       </listitem>
      </varlistentry>
index d5a731dbe63432d295a939ab87dc8133a88cdeb8..88fb9b45b2a2200e7b250b0d7fd70527e5beb4ba 100644 (file)
@@ -6486,7 +6486,7 @@ PerformRecoveryXLogAction(void)
        else
        {
                RequestCheckpoint(CHECKPOINT_END_OF_RECOVERY |
-                                                 CHECKPOINT_IMMEDIATE |
+                                                 CHECKPOINT_FAST |
                                                  CHECKPOINT_WAIT);
        }
 
@@ -6795,7 +6795,7 @@ ShutdownXLOG(int code, Datum arg)
        WalSndWaitStopping();
 
        if (RecoveryInProgress())
-               CreateRestartPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_IMMEDIATE);
+               CreateRestartPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_FAST);
        else
        {
                /*
@@ -6807,7 +6807,7 @@ ShutdownXLOG(int code, Datum arg)
                if (XLogArchivingActive())
                        RequestXLogSwitch(false);
 
-               CreateCheckPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_IMMEDIATE);
+               CreateCheckPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_FAST);
        }
 }
 
@@ -6823,7 +6823,7 @@ LogCheckpointStart(int flags, bool restartpoint)
                                (errmsg("restartpoint starting:%s%s%s%s%s%s%s%s",
                                                (flags & CHECKPOINT_IS_SHUTDOWN) ? " shutdown" : "",
                                                (flags & CHECKPOINT_END_OF_RECOVERY) ? " end-of-recovery" : "",
-                                               (flags & CHECKPOINT_IMMEDIATE) ? " immediate" : "",
+                                               (flags & CHECKPOINT_FAST) ? " fast" : "",
                                                (flags & CHECKPOINT_FORCE) ? " force" : "",
                                                (flags & CHECKPOINT_WAIT) ? " wait" : "",
                                                (flags & CHECKPOINT_CAUSE_XLOG) ? " wal" : "",
@@ -6835,7 +6835,7 @@ LogCheckpointStart(int flags, bool restartpoint)
                                (errmsg("checkpoint starting:%s%s%s%s%s%s%s%s",
                                                (flags & CHECKPOINT_IS_SHUTDOWN) ? " shutdown" : "",
                                                (flags & CHECKPOINT_END_OF_RECOVERY) ? " end-of-recovery" : "",
-                                               (flags & CHECKPOINT_IMMEDIATE) ? " immediate" : "",
+                                               (flags & CHECKPOINT_FAST) ? " fast" : "",
                                                (flags & CHECKPOINT_FORCE) ? " force" : "",
                                                (flags & CHECKPOINT_WAIT) ? " wait" : "",
                                                (flags & CHECKPOINT_CAUSE_XLOG) ? " wal" : "",
@@ -7023,8 +7023,8 @@ update_checkpoint_display(int flags, bool restartpoint, bool reset)
  * flags is a bitwise OR of the following:
  *     CHECKPOINT_IS_SHUTDOWN: checkpoint is for database shutdown.
  *     CHECKPOINT_END_OF_RECOVERY: checkpoint is for end of WAL recovery.
- *     CHECKPOINT_IMMEDIATE: finish the checkpoint ASAP,
- *             ignoring checkpoint_completion_target parameter.
+ *     CHECKPOINT_FAST: finish the checkpoint ASAP, ignoring
+ *             checkpoint_completion_target parameter.
  *     CHECKPOINT_FORCE: force a checkpoint even if no XLOG activity has occurred
  *             since the last one (implied by CHECKPOINT_IS_SHUTDOWN or
  *             CHECKPOINT_END_OF_RECOVERY).
@@ -8929,9 +8929,8 @@ issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli)
  * backup state and tablespace map.
  *
  * Input parameters are "state" (the backup state), "fast" (if true, we do
- * the checkpoint in immediate mode to make it faster), and "tablespaces"
- * (if non-NULL, indicates a list of tablespaceinfo structs describing the
- * cluster's tablespaces.).
+ * the checkpoint in fast mode), and "tablespaces" (if non-NULL, indicates a
+ * list of tablespaceinfo structs describing the cluster's tablespaces.).
  *
  * The tablespace map contents are appended to passed-in parameter
  * tablespace_map and the caller is responsible for including it in the backup
@@ -9059,11 +9058,11 @@ do_pg_backup_start(const char *backupidstr, bool fast, List **tablespaces,
                         * during recovery means that checkpointer is running, we can use
                         * RequestCheckpoint() to establish a restartpoint.
                         *
-                        * We use CHECKPOINT_IMMEDIATE only if requested by user (via
-                        * passing fast = true).  Otherwise this can take awhile.
+                        * We use CHECKPOINT_FAST only if requested by user (via passing
+                        * fast = true).  Otherwise this can take awhile.
                         */
                        RequestCheckpoint(CHECKPOINT_FORCE | CHECKPOINT_WAIT |
-                                                         (fast ? CHECKPOINT_IMMEDIATE : 0));
+                                                         (fast ? CHECKPOINT_FAST : 0));
 
                        /*
                         * Now we need to fetch the checkpoint record location, and also
index 2d32ffd02c73d327bc84521b59d36c26ba045400..502a45163c8aeea1b15635f8ea6f3999dfb94184 100644 (file)
@@ -570,7 +570,7 @@ CreateDatabaseUsingFileCopy(Oid src_dboid, Oid dst_dboid, Oid src_tsid,
         * any CREATE DATABASE commands.
         */
        if (!IsBinaryUpgrade)
-               RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE |
+               RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE |
                                                  CHECKPOINT_WAIT | CHECKPOINT_FLUSH_UNLOGGED);
 
        /*
@@ -673,7 +673,7 @@ CreateDatabaseUsingFileCopy(Oid src_dboid, Oid dst_dboid, Oid src_tsid,
         * strategy that avoids these problems.
         */
        if (!IsBinaryUpgrade)
-               RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE |
+               RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE |
                                                  CHECKPOINT_WAIT);
 }
 
@@ -1870,7 +1870,7 @@ dropdb(const char *dbname, bool missing_ok, bool force)
         * Force a checkpoint to make sure the checkpointer has received the
         * message sent by ForgetDatabaseSyncRequests.
         */
-       RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
+       RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
 
        /* Close all smgr fds in all backends. */
        WaitForProcSignalBarrier(EmitProcSignalBarrier(PROCSIGNAL_BARRIER_SMGRRELEASE));
@@ -2120,7 +2120,7 @@ movedb(const char *dbname, const char *tblspcname)
         * On Windows, this also ensures that background procs don't hold any open
         * files, which would cause rmdir() to fail.
         */
-       RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT
+       RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT
                                          | CHECKPOINT_FLUSH_UNLOGGED);
 
        /* Close all smgr fds in all backends. */
@@ -2252,7 +2252,7 @@ movedb(const char *dbname, const char *tblspcname)
                 * any unlogged operations done in the new DB tablespace before the
                 * next checkpoint.
                 */
-               RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
+               RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
 
                /*
                 * Force synchronous commit, thus minimizing the window between
index a9005cc7212b6c9ac6cc2c216c60ad605c639647..df31eace47ac9c00dc7e9b3c99eb8c9a4d1e10ab 100644 (file)
@@ -500,7 +500,7 @@ DropTableSpace(DropTableSpaceStmt *stmt)
                 * mustn't delete.  So instead, we force a checkpoint which will clean
                 * out any lingering files, and try again.
                 */
-               RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
+               RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_FORCE | CHECKPOINT_WAIT);
 
                /*
                 * On Windows, an unlinked file persists in the directory listing
index fda91ffd1ce2dedb6942af3c74cb8a893c1e4545..0d8696bfb5e3a2cdad3cb5cf6fbaef72b082e6e7 100644 (file)
@@ -161,7 +161,7 @@ static pg_time_t last_xlog_switch_time;
 static void ProcessCheckpointerInterrupts(void);
 static void CheckArchiveTimeout(void);
 static bool IsCheckpointOnSchedule(double progress);
-static bool ImmediateCheckpointRequested(void);
+static bool FastCheckpointRequested(void);
 static bool CompactCheckpointerRequestQueue(void);
 static void UpdateSharedMemoryConfig(void);
 
@@ -734,12 +734,12 @@ CheckArchiveTimeout(void)
 }
 
 /*
- * Returns true if an immediate checkpoint request is pending.  (Note that
- * this does not check the *current* checkpoint's IMMEDIATE flag, but whether
- * there is one pending behind it.)
+ * Returns true if a fast checkpoint request is pending.  (Note that this does
+ * not check the *current* checkpoint's FAST flag, but whether there is one
+ * pending behind it.)
  */
 static bool
-ImmediateCheckpointRequested(void)
+FastCheckpointRequested(void)
 {
        volatile CheckpointerShmemStruct *cps = CheckpointerShmem;
 
@@ -747,7 +747,7 @@ ImmediateCheckpointRequested(void)
         * We don't need to acquire the ckpt_lck in this case because we're only
         * looking at a single flag bit.
         */
-       if (cps->ckpt_flags & CHECKPOINT_IMMEDIATE)
+       if (cps->ckpt_flags & CHECKPOINT_FAST)
                return true;
        return false;
 }
@@ -760,7 +760,7 @@ ImmediateCheckpointRequested(void)
  * checkpoint_completion_target.
  *
  * The checkpoint request flags should be passed in; currently the only one
- * examined is CHECKPOINT_IMMEDIATE, which disables delays between writes.
+ * examined is CHECKPOINT_FAST, which disables delays between writes.
  *
  * 'progress' is an estimate of how much of the work has been done, as a
  * fraction between 0.0 meaning none, and 1.0 meaning all done.
@@ -778,10 +778,10 @@ CheckpointWriteDelay(int flags, double progress)
         * Perform the usual duties and take a nap, unless we're behind schedule,
         * in which case we just try to catch up as quickly as possible.
         */
-       if (!(flags & CHECKPOINT_IMMEDIATE) &&
+       if (!(flags & CHECKPOINT_FAST) &&
                !ShutdownXLOGPending &&
                !ShutdownRequestPending &&
-               !ImmediateCheckpointRequested() &&
+               !FastCheckpointRequested() &&
                IsCheckpointOnSchedule(progress))
        {
                if (ConfigReloadPending)
@@ -983,11 +983,11 @@ CheckpointerShmemInit(void)
  * flags is a bitwise OR of the following:
  *     CHECKPOINT_IS_SHUTDOWN: checkpoint is for database shutdown.
  *     CHECKPOINT_END_OF_RECOVERY: checkpoint is for end of WAL recovery.
- *     CHECKPOINT_IMMEDIATE: finish the checkpoint ASAP,
+ *     CHECKPOINT_FAST: finish the checkpoint ASAP,
  *             ignoring checkpoint_completion_target parameter.
  *     CHECKPOINT_FORCE: force a checkpoint even if no XLOG activity has occurred
  *             since the last one (implied by CHECKPOINT_IS_SHUTDOWN or
- *             CHECKPOINT_END_OF_RECOVERY).
+ *             CHECKPOINT_END_OF_RECOVERY, and the CHECKPOINT command).
  *     CHECKPOINT_WAIT: wait for completion before returning (otherwise,
  *             just signal checkpointer to do it, and return).
  *     CHECKPOINT_CAUSE_XLOG: checkpoint is requested due to xlog filling.
@@ -1009,7 +1009,7 @@ RequestCheckpoint(int flags)
                 * There's no point in doing slow checkpoints in a standalone backend,
                 * because there's no other backends the checkpoint could disrupt.
                 */
-               CreateCheckPoint(flags | CHECKPOINT_IMMEDIATE);
+               CreateCheckPoint(flags | CHECKPOINT_FAST);
 
                /* Free all smgr objects, as CheckpointerMain() normally would. */
                smgrdestroyall();
index 0b4b23e02a25f34cbb45ceb1c1275685b107709e..6afdd28dba6f2dc137a1a2a56d4183e63feb740d 100644 (file)
@@ -3339,8 +3339,8 @@ UnpinBufferNoOwner(BufferDesc *buf)
  * BufferSync -- Write out all dirty buffers in the pool.
  *
  * This is called at checkpoint time to write out all dirty shared buffers.
- * The checkpoint request flags should be passed in.  If CHECKPOINT_IMMEDIATE
- * is set, we disable delays between writes; if CHECKPOINT_IS_SHUTDOWN,
+ * The checkpoint request flags should be passed in.  If CHECKPOINT_FAST is
+ * set, we disable delays between writes; if CHECKPOINT_IS_SHUTDOWN,
  * CHECKPOINT_END_OF_RECOVERY or CHECKPOINT_FLUSH_UNLOGGED is set, we write
  * even unlogged buffers, which are otherwise skipped.  The remaining flags
  * currently have no effect here.
index aff8510755f34e732fb0cc6645fddfa1e665d31d..a628da4b145ea0565fd0bc061768449e3cf2e43d 100644 (file)
@@ -952,7 +952,7 @@ standard_ProcessUtility(PlannedStmt *pstmt,
                                                 errdetail("Only roles with privileges of the \"%s\" role may execute this command.",
                                                                   "pg_checkpoint")));
 
-                       RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_WAIT |
+                       RequestCheckpoint(CHECKPOINT_FAST | CHECKPOINT_WAIT |
                                                          (RecoveryInProgress() ? 0 : CHECKPOINT_FORCE));
                        break;
 
index 80c42b5f80f023b73f8c28f4e57d4e111c172697..d12798be3d8078ce772512fc9f62bb85ca4b5458 100644 (file)
@@ -139,7 +139,7 @@ extern PGDLLIMPORT bool XLOG_DEBUG;
 #define CHECKPOINT_IS_SHUTDOWN 0x0001  /* Checkpoint is for shutdown */
 #define CHECKPOINT_END_OF_RECOVERY     0x0002  /* Like shutdown checkpoint, but
                                                                                         * issued at end of WAL recovery */
-#define CHECKPOINT_IMMEDIATE   0x0004  /* Do it without delays */
+#define CHECKPOINT_FAST                        0x0004  /* Do it without delays */
 #define CHECKPOINT_FORCE               0x0008  /* Force even if no activity */
 #define CHECKPOINT_FLUSH_UNLOGGED      0x0010  /* Flush unlogged tables */
 /* These are important to RequestCheckpoint */
index cb63ac8d5c9b01c4c016bd94cd00ce869e529103..12750ff7d4f339c5cdeb4237f02a5bfedb09196d 100644 (file)
@@ -91,7 +91,7 @@ $node_standby->wait_for_event('checkpointer', 'create-restart-point');
 # Check the logs that the restart point has started on standby.  This is
 # optional, but let's be sure.
 ok( $node_standby->log_contains(
-               "restartpoint starting: immediate wait", $logstart),
+               "restartpoint starting: fast wait", $logstart),
        "restartpoint has started");
 
 # Trigger promotion during the restart point.