From 617d16f4ff4959b1615cc9f57e271629c000ccff Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 19 Feb 2005 23:16:15 +0000
Subject: [PATCH] New arrangement to always let the bgwriter do checkpoints
 broke 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 | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c
index 12202e00811..128122355bb 100644
--- a/src/backend/postmaster/bgwriter.c
+++ b/src/backend/postmaster/bgwriter.c
@@ -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.
-- 
GitLab