From: Tom Lane Date: Sat, 19 Feb 2005 23:16:15 +0000 (+0000) Subject: New arrangement to always let the bgwriter do checkpoints broke X-Git-Tag: REL8_1_0BETA1~1362 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=617d16f4ff4959b1615cc9f57e271629c000ccff;p=thirdparty%2Fpostgresql.git 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. --- 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.