Can't truncate pg_subtrans during a recovery checkpoint --- subtrans

module isn't fully initialized yet.
This commit is contained in:
Tom Lane 2004-08-28 18:18:03 +00:00
parent 7ff1c9d974
commit f444dafab0

View file

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * 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,8 +4922,10 @@ CreateCheckPoint(bool shutdown, bool force)
* Truncate pg_subtrans if possible. We can throw away all data before * Truncate pg_subtrans if possible. We can throw away all data before
* the oldest XMIN of any running transaction. No future transaction will * the oldest XMIN of any running transaction. No future transaction will
* attempt to reference any pg_subtrans entry older than that (see Asserts * 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.
*/ */
if (!InRecovery)
TruncateSUBTRANS(GetOldestXmin(true)); TruncateSUBTRANS(GetOldestXmin(true));
LWLockRelease(CheckpointLock); LWLockRelease(CheckpointLock);