mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Two-phase commit. Original patch by Heikki Linnakangas, with additional
hacking by Alvaro Herrera and Tom Lane.
This commit is contained in:
@ -22,7 +22,7 @@
|
||||
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/subtrans.c,v 1.8 2005/05/19 21:35:45 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/subtrans.c,v 1.9 2005/06/17 22:32:42 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -222,22 +222,33 @@ ZeroSUBTRANSPage(int pageno)
|
||||
/*
|
||||
* This must be called ONCE during postmaster or standalone-backend startup,
|
||||
* after StartupXLOG has initialized ShmemVariableCache->nextXid.
|
||||
*
|
||||
* oldestActiveXID is the oldest XID of any prepared transaction, or nextXid
|
||||
* if there are none.
|
||||
*/
|
||||
void
|
||||
StartupSUBTRANS(void)
|
||||
StartupSUBTRANS(TransactionId oldestActiveXID)
|
||||
{
|
||||
int startPage;
|
||||
int endPage;
|
||||
|
||||
/*
|
||||
* Since we don't expect pg_subtrans to be valid across crashes, we
|
||||
* initialize the currently-active page to zeroes during startup.
|
||||
* initialize the currently-active page(s) to zeroes during startup.
|
||||
* Whenever we advance into a new page, ExtendSUBTRANS will likewise
|
||||
* zero the new page without regard to whatever was previously on
|
||||
* disk.
|
||||
*/
|
||||
LWLockAcquire(SubtransControlLock, LW_EXCLUSIVE);
|
||||
|
||||
startPage = TransactionIdToPage(ShmemVariableCache->nextXid);
|
||||
startPage = TransactionIdToPage(oldestActiveXID);
|
||||
endPage = TransactionIdToPage(ShmemVariableCache->nextXid);
|
||||
|
||||
while (startPage != endPage)
|
||||
{
|
||||
(void) ZeroSUBTRANSPage(startPage);
|
||||
startPage++;
|
||||
}
|
||||
(void) ZeroSUBTRANSPage(startPage);
|
||||
|
||||
LWLockRelease(SubtransControlLock);
|
||||
|
Reference in New Issue
Block a user