*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.40 2001/03/13 01:17:05 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.41 2001/03/18 20:18:59 tgl Exp $
*
* NOTES
* This file contains the high level access-method interface to the
Assert(!IsUnderPostmaster &&
ShmemVariableCache->nextXid <= FirstTransactionId);
ShmemVariableCache->nextXid = FirstTransactionId;
- ShmemVariableCache->xidCount = 0; /* force an XLOG rec right away */
}
else if (RecoveryCheckingEnabled())
{
* Copyright (c) 2000, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.36 2001/03/13 01:17:05 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.37 2001/03/18 20:18:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
SpinAcquire(XidGenLockId);
- /* If we run out of logged for use xids then we must log more */
- if (ShmemVariableCache->xidCount == 0)
- {
- XLogPutNextXid(ShmemVariableCache->nextXid + VAR_XID_PREFETCH);
- ShmemVariableCache->xidCount = VAR_XID_PREFETCH;
- }
-
*xid = ShmemVariableCache->nextXid;
(ShmemVariableCache->nextXid)++;
- (ShmemVariableCache->xidCount)--;
SpinRelease(XidGenLockId);
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.61 2001/03/18 00:30:27 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.62 2001/03/18 20:18:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
checkPoint.time = time(NULL);
ShmemVariableCache->nextXid = checkPoint.nextXid;
- ShmemVariableCache->xidCount = 0;
ShmemVariableCache->nextOid = checkPoint.nextOid;
ShmemVariableCache->oidCount = 0;
elog(STOP, "Invalid NextTransactionId/NextOid");
ShmemVariableCache->nextXid = checkPoint.nextXid;
- ShmemVariableCache->xidCount = 0;
ShmemVariableCache->nextOid = checkPoint.nextOid;
ShmemVariableCache->oidCount = 0;
do
{
if (record->xl_xid >= ShmemVariableCache->nextXid)
- {
- /* This probably shouldn't happen... */
ShmemVariableCache->nextXid = record->xl_xid + 1;
- ShmemVariableCache->xidCount = 0;
- }
if (XLOG_DEBUG)
{
char buf[8192];
SpinAcquire(XidGenLockId);
checkPoint.nextXid = ShmemVariableCache->nextXid;
- if (!shutdown)
- checkPoint.nextXid += ShmemVariableCache->xidCount;
SpinRelease(XidGenLockId);
SpinAcquire(OidGenLockId);
END_CRIT_SECTION();
}
-/*
- * Write a NEXTXID log record
- */
-void
-XLogPutNextXid(TransactionId nextXid)
-{
- XLogRecData rdata;
-
- rdata.buffer = InvalidBuffer;
- rdata.data = (char *)(&nextXid);
- rdata.len = sizeof(TransactionId);
- rdata.next = NULL;
- (void) XLogInsert(RM_XLOG_ID, XLOG_NEXTXID, &rdata);
-}
-
/*
* Write a NEXTOID log record
*/
{
uint8 info = record->xl_info & ~XLR_INFO_MASK;
- if (info == XLOG_NEXTXID)
- {
- TransactionId nextXid;
-
- memcpy(&nextXid, XLogRecGetData(record), sizeof(TransactionId));
- if (ShmemVariableCache->nextXid < nextXid)
- {
- ShmemVariableCache->nextXid = nextXid;
- ShmemVariableCache->xidCount = 0;
- }
- }
- else if (info == XLOG_NEXTOID)
+ if (info == XLOG_NEXTOID)
{
Oid nextOid;
memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint));
/* In a SHUTDOWN checkpoint, believe the counters exactly */
ShmemVariableCache->nextXid = checkPoint.nextXid;
- ShmemVariableCache->xidCount = 0;
ShmemVariableCache->nextOid = checkPoint.nextOid;
ShmemVariableCache->oidCount = 0;
}
CheckPoint checkPoint;
memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint));
- /* In an ONLINE checkpoint, treat the counters like NEXTXID/NEXTOID */
+ /* In an ONLINE checkpoint, treat the counters like NEXTOID */
if (ShmemVariableCache->nextXid < checkPoint.nextXid)
{
ShmemVariableCache->nextXid = checkPoint.nextXid;
- ShmemVariableCache->xidCount = 0;
}
if (ShmemVariableCache->nextOid < checkPoint.nextOid)
{
checkpoint->nextOid,
(info == XLOG_CHECKPOINT_SHUTDOWN) ? "shutdown" : "online");
}
- else if (info == XLOG_NEXTXID)
- {
- TransactionId nextXid;
-
- memcpy(&nextXid, rec, sizeof(TransactionId));
- sprintf(buf + strlen(buf), "nextXid: %u", nextXid);
- }
else if (info == XLOG_NEXTOID)
{
Oid nextOid;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.26 2001/02/26 00:50:07 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.27 2001/03/18 20:18:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/*
* Unfortunately, we have to call ReadNewTransactionId() after
* acquiring SInvalLock above. It's not good because
- * ReadNewTransactionId() does SpinAcquire(OidGenLockId) but
+ * ReadNewTransactionId() does SpinAcquire(XidGenLockId) but
* _necessary_.
*/
ReadNewTransactionId(&(snapshot->xmax));
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: transam.h,v 1.30 2001/03/13 01:17:06 tgl Exp $
+ * $Id: transam.h,v 1.31 2001/03/18 20:18:59 tgl Exp $
*
* NOTES
* Transaction System Version 101 now support proper oid
typedef struct VariableCacheData
{
TransactionId nextXid; /* next XID to assign */
- uint32 xidCount; /* XIDs available before must do XLOG work */
- Oid nextOid; /* and similarly for OIDs */
- uint32 oidCount;
+ Oid nextOid; /* next OID to assign */
+ uint32 oidCount; /* OIDs available before must do XLOG work */
} VariableCacheData;
typedef VariableCacheData *VariableCache;
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: xlog.h,v 1.21 2001/03/16 05:44:33 tgl Exp $
+ * $Id: xlog.h,v 1.22 2001/03/18 20:18:59 tgl Exp $
*/
#ifndef XLOG_H
#define XLOG_H
extern void ShutdownXLOG(void);
extern void CreateCheckPoint(bool shutdown);
extern void SetThisStartUpID(void);
-extern void XLogPutNextXid(TransactionId nextXid);
extern void XLogPutNextOid(Oid nextOid);
extern void SetRedoRecPtr(void);
extern void GetRedoRecPtr(void);
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_control.h,v 1.1 2001/03/13 01:17:06 tgl Exp $
+ * $Id: pg_control.h,v 1.2 2001/03/18 20:18:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/* XLOG info values for XLOG rmgr */
#define XLOG_CHECKPOINT_SHUTDOWN 0x00
#define XLOG_CHECKPOINT_ONLINE 0x10
-#define XLOG_NEXTXID 0x20
#define XLOG_NEXTOID 0x30