1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-02 04:21:28 +03:00

Inline function, rename libpq variablees, change lrel to lockrel.

This commit is contained in:
Bruce Momjian
1998-07-13 16:35:04 +00:00
parent 8bac4ca87b
commit 5aea4062d6
14 changed files with 164 additions and 190 deletions

View File

@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.12 1998/06/15 19:29:19 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.13 1998/07/13 16:34:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -47,7 +47,7 @@
#include "storage/bufmgr.h"
#include "access/transam.h" /* for AmiTransactionId */
static void LRelIdAssign(LRelId *lRelId, Oid dbId, Oid relId);
static void LockRelIdAssign(LockRelId *lockRelId, Oid dbId, Oid relId);
/* ----------------
*
@@ -68,68 +68,17 @@ static void LRelIdAssign(LRelId *lRelId, Oid dbId, Oid relId);
extern Oid MyDatabaseId;
static LRelId VariableRelationLRelId = {
LockRelId VariableRelationLockRelId = {
RelOid_pg_variable,
InvalidOid
};
/* ----------------
* RelationGetLRelId
* ----------------
*/
#ifdef LOCKDEBUG
#define LOCKDEBUG_10 \
elog(NOTICE, "RelationGetLRelId(%s) invalid lockInfo", \
RelationGetRelationName(relation));
#else
#define LOCKDEBUG_10
#endif /* LOCKDEBUG */
/*
* RelationGetLRelId --
* Returns "lock" relation identifier for a relation.
*/
LRelId
RelationGetLRelId(Relation relation)
{
LockInfo linfo;
/* ----------------
* sanity checks
* ----------------
*/
Assert(RelationIsValid(relation));
linfo = (LockInfo) relation->lockInfo;
/* ----------------
* initialize lock info if necessary
* ----------------
*/
if (!LockInfoIsValid(linfo))
{
LOCKDEBUG_10;
RelationInitLockInfo(relation);
linfo = (LockInfo) relation->lockInfo;
}
/* ----------------
* XXX hack to prevent problems during
* VARIABLE relation initialization
* ----------------
*/
if (strcmp(RelationGetRelationName(relation)->data,
VariableRelationName) == 0)
return (VariableRelationLRelId);
return (linfo->lRelId);
}
/*
* LRelIdGetDatabaseId --
* LockRelIdGetDatabaseId --
* Returns database identifier for a "lock" relation identifier.
*/
/* ----------------
* LRelIdGetDatabaseId
* LockRelIdGetDatabaseId
*
* Note: The argument may not be correct, if it is not used soon
* after it is created.
@@ -137,21 +86,21 @@ RelationGetLRelId(Relation relation)
*/
#ifdef NOT_USED
Oid
LRelIdGetDatabaseId(LRelId lRelId)
LockRelIdGetDatabaseId(LockRelId lockRelId)
{
return (lRelId.dbId);
return (lockRelId.dbId);
}
#endif
/*
* LRelIdGetRelationId --
* LockRelIdGetRelationId --
* Returns relation identifier for a "lock" relation identifier.
*/
Oid
LRelIdGetRelationId(LRelId lRelId)
LockRelIdGetRelationId(LockRelId lockRelId)
{
return (lRelId.relId);
return (lockRelId.relId);
}
/*
@@ -169,15 +118,15 @@ DatabaseIdIsMyDatabaseId(Oid databaseId)
#endif
/*
* LRelIdContainsMyDatabaseId --
* LockRelIdContainsMyDatabaseId --
* True iff "lock" relation identifier is valid in my present database.
*/
#ifdef NOT_USED
bool
LRelIdContainsMyDatabaseId(LRelId lRelId)
LockRelIdContainsMyDatabaseId(LockRelId lockRelId)
{
return (bool)
(!OidIsValid(lRelId.dbId) || lRelId.dbId == MyDatabaseId);
(!OidIsValid(lockRelId.dbId) || lockRelId.dbId == MyDatabaseId);
}
#endif
@@ -255,9 +204,9 @@ RelationInitLockInfo(Relation relation)
* ----------------
*/
if (IsSharedSystemRelationName(relname))
LRelIdAssign(&info->lRelId, InvalidOid, relationid);
LockRelIdAssign(&info->lockRelId, InvalidOid, relationid);
else
LRelIdAssign(&info->lRelId, MyDatabaseId, relationid);
LockRelIdAssign(&info->lockRelId, MyDatabaseId, relationid);
/* ----------------
* store the transaction id in the lockInfo field
@@ -319,7 +268,7 @@ RelationDiscardLockInfo(Relation relation)
#ifdef LOCKDEBUGALL
#define LOCKDEBUGALL_30 \
elog(DEBUG, "RelationSetLockForDescriptorOpen(%s[%d,%d]) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId)
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId)
#else
#define LOCKDEBUGALL_30
#endif /* LOCKDEBUGALL */
@@ -351,7 +300,7 @@ RelationSetLockForDescriptorOpen(Relation relation)
#ifdef LOCKDEBUG
#define LOCKDEBUG_40 \
elog(DEBUG, "RelationSetLockForRead(%s[%d,%d]) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId)
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId)
#else
#define LOCKDEBUG_40
#endif /* LOCKDEBUG */
@@ -363,7 +312,7 @@ elog(DEBUG, "RelationSetLockForRead(%s[%d,%d]) called", \
void
RelationSetLockForRead(Relation relation)
{
LockInfo linfo;
LockInfo lockinfo;
/* ----------------
* sanity checks
@@ -383,15 +332,15 @@ RelationSetLockForRead(Relation relation)
if (!LockInfoIsValid(relation->lockInfo))
{
RelationInitLockInfo(relation);
linfo = (LockInfo) relation->lockInfo;
linfo->flags |= ReadRelationLock;
MultiLockReln(linfo, READ_LOCK);
lockinfo = (LockInfo) relation->lockInfo;
lockinfo->flags |= ReadRelationLock;
MultiLockReln(lockinfo, READ_LOCK);
return;
}
else
linfo = (LockInfo) relation->lockInfo;
lockinfo = (LockInfo) relation->lockInfo;
MultiLockReln(linfo, READ_LOCK);
MultiLockReln(lockinfo, READ_LOCK);
}
/* ----------------
@@ -401,7 +350,7 @@ RelationSetLockForRead(Relation relation)
#ifdef LOCKDEBUG
#define LOCKDEBUG_50 \
elog(DEBUG, "RelationUnsetLockForRead(%s[%d,%d]) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId)
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId)
#else
#define LOCKDEBUG_50
#endif /* LOCKDEBUG */
@@ -413,7 +362,7 @@ elog(DEBUG, "RelationUnsetLockForRead(%s[%d,%d]) called", \
void
RelationUnsetLockForRead(Relation relation)
{
LockInfo linfo;
LockInfo lockinfo;
/* ----------------
* sanity check
@@ -423,21 +372,21 @@ RelationUnsetLockForRead(Relation relation)
if (LockingDisabled())
return;
linfo = (LockInfo) relation->lockInfo;
lockinfo = (LockInfo) relation->lockInfo;
/* ----------------
* If we don't have lock info on the reln just go ahead and
* release it.
* ----------------
*/
if (!LockInfoIsValid(linfo))
if (!LockInfoIsValid(lockinfo))
{
elog(ERROR,
"Releasing a lock on %s with invalid lock information",
RelationGetRelationName(relation));
}
MultiReleaseReln(linfo, READ_LOCK);
MultiReleaseReln(lockinfo, READ_LOCK);
}
/* ----------------
@@ -447,7 +396,7 @@ RelationUnsetLockForRead(Relation relation)
#ifdef LOCKDEBUG
#define LOCKDEBUG_60 \
elog(DEBUG, "RelationSetLockForWrite(%s[%d,%d]) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId)
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId)
#else
#define LOCKDEBUG_60
#endif /* LOCKDEBUG */
@@ -459,7 +408,7 @@ elog(DEBUG, "RelationSetLockForWrite(%s[%d,%d]) called", \
void
RelationSetLockForWrite(Relation relation)
{
LockInfo linfo;
LockInfo lockinfo;
/* ----------------
* sanity checks
@@ -479,15 +428,15 @@ RelationSetLockForWrite(Relation relation)
if (!LockInfoIsValid(relation->lockInfo))
{
RelationInitLockInfo(relation);
linfo = (LockInfo) relation->lockInfo;
linfo->flags |= WriteRelationLock;
MultiLockReln(linfo, WRITE_LOCK);
lockinfo = (LockInfo) relation->lockInfo;
lockinfo->flags |= WriteRelationLock;
MultiLockReln(lockinfo, WRITE_LOCK);
return;
}
else
linfo = (LockInfo) relation->lockInfo;
lockinfo = (LockInfo) relation->lockInfo;
MultiLockReln(linfo, WRITE_LOCK);
MultiLockReln(lockinfo, WRITE_LOCK);
}
/* ----------------
@@ -497,7 +446,7 @@ RelationSetLockForWrite(Relation relation)
#ifdef LOCKDEBUG
#define LOCKDEBUG_70 \
elog(DEBUG, "RelationUnsetLockForWrite(%s[%d,%d]) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId);
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId)
#else
#define LOCKDEBUG_70
#endif /* LOCKDEBUG */
@@ -509,7 +458,7 @@ elog(DEBUG, "RelationUnsetLockForWrite(%s[%d,%d]) called", \
void
RelationUnsetLockForWrite(Relation relation)
{
LockInfo linfo;
LockInfo lockinfo;
/* ----------------
* sanity checks
@@ -519,16 +468,16 @@ RelationUnsetLockForWrite(Relation relation)
if (LockingDisabled())
return;
linfo = (LockInfo) relation->lockInfo;
lockinfo = (LockInfo) relation->lockInfo;
if (!LockInfoIsValid(linfo))
if (!LockInfoIsValid(lockinfo))
{
elog(ERROR,
"Releasing a lock on %s with invalid lock information",
RelationGetRelationName(relation));
}
MultiReleaseReln(linfo, WRITE_LOCK);
MultiReleaseReln(lockinfo, WRITE_LOCK);
}
/* ----------------
@@ -538,10 +487,10 @@ RelationUnsetLockForWrite(Relation relation)
#ifdef LOCKDEBUG
#define LOCKDEBUG_80 \
elog(DEBUG, "RelationSetLockForTupleRead(%s[%d,%d], 0x%x) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId, \
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId, \
itemPointer)
#define LOCKDEBUG_81 \
elog(DEBUG, "RelationSetLockForTupleRead() escalating");
elog(DEBUG, "RelationSetLockForTupleRead() escalating")
#else
#define LOCKDEBUG_80
#define LOCKDEBUG_81
@@ -555,7 +504,7 @@ elog(DEBUG, "RelationSetLockForTupleRead(%s[%d,%d], 0x%x) called", \
void
RelationSetLockForTupleRead(Relation relation, ItemPointer itemPointer)
{
LockInfo linfo;
LockInfo lockinfo;
TransactionId curXact;
/* ----------------
@@ -576,71 +525,71 @@ RelationSetLockForTupleRead(Relation relation, ItemPointer itemPointer)
if (!LockInfoIsValid(relation->lockInfo))
{
RelationInitLockInfo(relation);
linfo = (LockInfo) relation->lockInfo;
linfo->flags |=
lockinfo = (LockInfo) relation->lockInfo;
lockinfo->flags |=
IntentReadRelationLock |
IntentReadPageLock |
ReadTupleLock;
MultiLockTuple(linfo, itemPointer, READ_LOCK);
MultiLockTuple(lockinfo, itemPointer, READ_LOCK);
return;
}
else
linfo = (LockInfo) relation->lockInfo;
lockinfo = (LockInfo) relation->lockInfo;
/* ----------------
* no need to set a lower granularity lock
* ----------------
*/
curXact = GetCurrentTransactionId();
if ((linfo->flags & ReadRelationLock) &&
TransactionIdEquals(curXact, linfo->transactionIdData))
if ((lockinfo->flags & ReadRelationLock) &&
TransactionIdEquals(curXact, lockinfo->transactionIdData))
return;
/* ----------------
* If we don't already have a tuple lock this transaction
* ----------------
*/
if (!((linfo->flags & ReadTupleLock) &&
TransactionIdEquals(curXact, linfo->transactionIdData)))
if (!((lockinfo->flags & ReadTupleLock) &&
TransactionIdEquals(curXact, lockinfo->transactionIdData)))
{
linfo->flags |=
lockinfo->flags |=
IntentReadRelationLock |
IntentReadPageLock |
ReadTupleLock;
/* clear count */
linfo->flags &= ~TupleLevelLockCountMask;
lockinfo->flags &= ~TupleLevelLockCountMask;
}
else
{
if (TupleLevelLockLimit == (TupleLevelLockCountMask &
linfo->flags))
lockinfo->flags))
{
LOCKDEBUG_81;
/* escalate */
MultiLockReln(linfo, READ_LOCK);
MultiLockReln(lockinfo, READ_LOCK);
/* clear count */
linfo->flags &= ~TupleLevelLockCountMask;
lockinfo->flags &= ~TupleLevelLockCountMask;
return;
}
/* increment count */
linfo->flags =
(linfo->flags & ~TupleLevelLockCountMask) |
(1 + (TupleLevelLockCountMask & linfo->flags));
lockinfo->flags =
(lockinfo->flags & ~TupleLevelLockCountMask) |
(1 + (TupleLevelLockCountMask & lockinfo->flags));
}
TransactionIdStore(curXact, &linfo->transactionIdData);
TransactionIdStore(curXact, &lockinfo->transactionIdData);
/* ----------------
* Lock the tuple.
* ----------------
*/
MultiLockTuple(linfo, itemPointer, READ_LOCK);
MultiLockTuple(lockinfo, itemPointer, READ_LOCK);
}
#endif
@@ -652,7 +601,7 @@ RelationSetLockForTupleRead(Relation relation, ItemPointer itemPointer)
#ifdef LOCKDEBUG
#define LOCKDEBUG_90 \
elog(DEBUG, "RelationSetLockForReadPage(%s[%d,%d], @%d) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId, page);
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId, page)
#else
#define LOCKDEBUG_90
#endif /* LOCKDEBUG */
@@ -664,7 +613,7 @@ elog(DEBUG, "RelationSetLockForReadPage(%s[%d,%d], @%d) called", \
#ifdef LOCKDEBUG
#define LOCKDEBUG_100 \
elog(DEBUG, "RelationSetLockForWritePage(%s[%d,%d], @%d) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId, page);
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId, page)
#else
#define LOCKDEBUG_100
#endif /* LOCKDEBUG */
@@ -686,7 +635,7 @@ RelationSetLockForWritePage(Relation relation,
return;
/* ---------------
* Make sure linfo is initialized
* Make sure lockinfo is initialized
* ---------------
*/
if (!LockInfoIsValid(relation->lockInfo))
@@ -706,7 +655,7 @@ RelationSetLockForWritePage(Relation relation,
#ifdef LOCKDEBUG
#define LOCKDEBUG_110 \
elog(DEBUG, "RelationUnsetLockForReadPage(%s[%d,%d], @%d) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId, page)
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId, page)
#else
#define LOCKDEBUG_110
#endif /* LOCKDEBUG */
@@ -718,7 +667,7 @@ elog(DEBUG, "RelationUnsetLockForReadPage(%s[%d,%d], @%d) called", \
#ifdef LOCKDEBUG
#define LOCKDEBUG_120 \
elog(DEBUG, "RelationUnsetLockForWritePage(%s[%d,%d], @%d) called", \
RelationGetRelationName(relation), lRelId.dbId, lRelId.relId, page)
RelationGetRelationName(relation), lockRelId.dbId, lockRelId.relId, page)
#else
#define LOCKDEBUG_120
#endif /* LOCKDEBUG */
@@ -950,11 +899,11 @@ RelationUnsetLockForExtend(Relation relation)
#endif
/*
* Create an LRelid --- Why not just pass in a pointer to the storage?
* Create an LockRelid --- Why not just pass in a pointer to the storage?
*/
static void
LRelIdAssign(LRelId *lRelId, Oid dbId, Oid relId)
LockRelIdAssign(LockRelId *lockRelId, Oid dbId, Oid relId)
{
lRelId->dbId = dbId;
lRelId->relId = relId;
lockRelId->dbId = dbId;
lockRelId->relId = relId;
}