From f444dafab0c449bbb3c79683d4488e1ac4978f71 Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Sat, 28 Aug 2004 18:18:03 +0000 Subject: [PATCH] Can't truncate pg_subtrans during a recovery checkpoint --- subtrans module isn't fully initialized yet. --- src/backend/access/transam/xlog.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 5c07795c8a9..32380eeb37b 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.163 2004/08/23 23:22:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.164 2004/08/28 18:18:03 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -4922,9 +4922,11 @@ CreateCheckPoint(bool shutdown, bool force) * Truncate pg_subtrans if possible. We can throw away all data before * the oldest XMIN of any running transaction. No future transaction will * attempt to reference any pg_subtrans entry older than that (see Asserts - * in subtrans.c). + * in subtrans.c). During recovery, though, we mustn't do this because + * StartupSUBTRANS hasn't been called yet. */ - TruncateSUBTRANS(GetOldestXmin(true)); + if (!InRecovery) + TruncateSUBTRANS(GetOldestXmin(true)); LWLockRelease(CheckpointLock); } -- GitLab