|
7 | 7 | * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
|
8 | 8 | * Portions Copyright (c) 1994, Regents of the University of California
|
9 | 9 | *
|
10 |
| - * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.415 2010/06/02 09:28:44 heikki Exp $ |
| 10 | + * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.416 2010/06/03 03:19:59 rhaas Exp $ |
11 | 11 | *
|
12 | 12 | *-------------------------------------------------------------------------
|
13 | 13 | */
|
@@ -5661,6 +5661,10 @@ StartupXLOG(void)
|
5661 | 5661 | ereport(LOG,
|
5662 | 5662 | (errmsg("database system was shut down at %s",
|
5663 | 5663 | str_time(ControlFile->time))));
|
| 5664 | + else if (ControlFile->state == DB_SHUTDOWNED_IN_RECOVERY) |
| 5665 | + ereport(LOG, |
| 5666 | + (errmsg("database system was shut down in recovery at %s", |
| 5667 | + str_time(ControlFile->time)))); |
5664 | 5668 | else if (ControlFile->state == DB_SHUTDOWNING)
|
5665 | 5669 | ereport(LOG,
|
5666 | 5670 | (errmsg("database system shutdown was interrupted; last known up at %s",
|
@@ -7548,6 +7552,14 @@ CreateRestartPoint(int flags)
|
7548 | 7552 | lastCheckPoint.redo.xlogid, lastCheckPoint.redo.xrecoff)));
|
7549 | 7553 |
|
7550 | 7554 | UpdateMinRecoveryPoint(InvalidXLogRecPtr, true);
|
| 7555 | + if (flags & CHECKPOINT_IS_SHUTDOWN) |
| 7556 | + { |
| 7557 | + LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); |
| 7558 | + ControlFile->state = DB_SHUTDOWNED_IN_RECOVERY; |
| 7559 | + ControlFile->time = (pg_time_t) time(NULL); |
| 7560 | + UpdateControlFile(); |
| 7561 | + LWLockRelease(ControlFileLock); |
| 7562 | + } |
7551 | 7563 | LWLockRelease(CheckpointLock);
|
7552 | 7564 | return false;
|
7553 | 7565 | }
|
@@ -7585,6 +7597,8 @@ CreateRestartPoint(int flags)
|
7585 | 7597 | ControlFile->checkPoint = lastCheckPointRecPtr;
|
7586 | 7598 | ControlFile->checkPointCopy = lastCheckPoint;
|
7587 | 7599 | ControlFile->time = (pg_time_t) time(NULL);
|
| 7600 | + if (flags & CHECKPOINT_IS_SHUTDOWN) |
| 7601 | + ControlFile->state = DB_SHUTDOWNED_IN_RECOVERY; |
7588 | 7602 | UpdateControlFile();
|
7589 | 7603 | }
|
7590 | 7604 | LWLockRelease(ControlFileLock);
|
|
0 commit comments