New arrangement to always let the bgwriter do checkpoints broke
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 19 Feb 2005 23:16:15 +0000 (23:16 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 19 Feb 2005 23:16:15 +0000 (23:16 +0000)
CHECKPOINT and some other commands in the context of a standalone
backend.  Allow a standalone backend to do its own checkpoints.

src/backend/postmaster/bgwriter.c

index 12202e008111b51ec4f0c2acdaaddeecd4f2a564..128122355bb02a530cebb6d7d3a3405f13ff0702 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.13 2005/01/10 20:02:20 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.14 2005/02/19 23:16:15 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -509,6 +509,23 @@ RequestCheckpoint(bool waitforit)
    sig_atomic_t old_failed = bgs->ckpt_failed;
    sig_atomic_t old_started = bgs->ckpt_started;
 
+   /*
+    * If in a standalone backend, just do it ourselves.
+    */
+   if (!IsPostmasterEnvironment)
+   {
+       CreateCheckPoint(false, true);
+
+       /*
+        * After any checkpoint, close all smgr files.  This is so we
+        * won't hang onto smgr references to deleted files
+        * indefinitely.
+        */
+       smgrcloseall();
+
+       return;
+   }
+
    /*
     * Send signal to request checkpoint.  When waitforit is false, we
     * consider failure to send the signal to be nonfatal.