diff options
Diffstat (limited to 'src/backend/access/transam/xlog_varsup.c')
-rw-r--r-- | src/backend/access/transam/xlog_varsup.c | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/src/backend/access/transam/xlog_varsup.c b/src/backend/access/transam/xlog_varsup.c deleted file mode 100644 index fd64085e788..00000000000 --- a/src/backend/access/transam/xlog_varsup.c +++ /dev/null @@ -1,142 +0,0 @@ -/*------------------------------------------------------------------------- - * - * varsup.c - * postgres OID & XID variables support routines - * - * Copyright (c) 2000, PostgreSQL, Inc - * - * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/transam/Attic/xlog_varsup.c,v 1.1 2000/11/03 11:39:35 vadim Exp $ - * - *------------------------------------------------------------------------- - */ - -#include "postgres.h" - -#include "access/transam.h" -#include "storage/proc.h" - -SPINLOCK OidGenLockId; - -extern SPINLOCK XidGenLockId; -extern void XLogPutNextOid(Oid nextOid); - -/* pointer to "variable cache" in shared memory (set up by shmem.c) */ -VariableCache ShmemVariableCache = NULL; - -void -GetNewTransactionId(TransactionId *xid) -{ - /* - * During bootstrap initialization, we return the special - * bootstrap transaction id. - */ - if (AMI_OVERRIDE) - { - *xid = AmiTransactionId; - return; - } - - SpinAcquire(XidGenLockId); - *xid = ShmemVariableCache->nextXid; - (ShmemVariableCache->nextXid)++; - - if (MyProc != (PROC *) NULL) - MyProc->xid = *xid; - - SpinRelease(XidGenLockId); - -} - -/* - * Like GetNewTransactionId reads nextXid but don't fetch it. - */ -void -ReadNewTransactionId(TransactionId *xid) -{ - - /* - * During bootstrap initialization, we return the special - * bootstrap transaction id. - */ - if (AMI_OVERRIDE) - { - *xid = AmiTransactionId; - return; - } - - SpinAcquire(XidGenLockId); - *xid = ShmemVariableCache->nextXid; - SpinRelease(XidGenLockId); - -} - -/* ---------------------------------------------------------------- - * object id generation support - * ---------------------------------------------------------------- - */ - -#define VAR_OID_PREFETCH 8192 -static Oid lastSeenOid = InvalidOid; - -void -GetNewObjectId(Oid *oid_return) -{ - SpinAcquire(OidGenLockId); - - /* If we run out of logged for use oids then we log more */ - if (ShmemVariableCache->oidCount == 0) - { - XLogPutNextOid(ShmemVariableCache->nextOid + VAR_OID_PREFETCH); - ShmemVariableCache->oidCount = VAR_OID_PREFETCH; - } - - if (PointerIsValid(oid_return)) - lastSeenOid = (*oid_return) = ShmemVariableCache->nextOid; - - (ShmemVariableCache->nextOid)++; - (ShmemVariableCache->oidCount)--; - - SpinRelease(OidGenLockId); -} - -void -CheckMaxObjectId(Oid assigned_oid) -{ - - if (lastSeenOid != InvalidOid && assigned_oid < lastSeenOid) - return; - - SpinAcquire(OidGenLockId); - if (assigned_oid < ShmemVariableCache->nextOid) - { - lastSeenOid = ShmemVariableCache->nextOid - 1; - SpinRelease(OidGenLockId); - return; - } - - /* If we are in the logged oid range, just bump nextOid up */ - if (assigned_oid <= ShmemVariableCache->nextOid + - ShmemVariableCache->oidCount - 1) - { - ShmemVariableCache->oidCount -= - assigned_oid - ShmemVariableCache->nextOid + 1; - ShmemVariableCache->nextOid = assigned_oid + 1; - SpinRelease(OidGenLockId); - return; - } - - /* - * We have exceeded the logged oid range. - * We should lock the database and kill all other backends - * but we are loading oid's that we can not guarantee are unique - * anyway, so we must rely on the user. - */ - - XLogPutNextOid(assigned_oid + VAR_OID_PREFETCH); - ShmemVariableCache->oidCount = VAR_OID_PREFETCH - 1; - ShmemVariableCache->nextOid = assigned_oid + 1; - - SpinRelease(OidGenLockId); - -} |