aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/storage')
-rw-r--r--src/backend/storage/ipc/sinval.c51
-rw-r--r--src/backend/storage/ipc/sinvaladt.c10
-rw-r--r--src/backend/storage/lmgr/lmgr.c4
3 files changed, 17 insertions, 48 deletions
diff --git a/src/backend/storage/ipc/sinval.c b/src/backend/storage/ipc/sinval.c
index 9177a81604b..6a3129ffd56 100644
--- a/src/backend/storage/ipc/sinval.c
+++ b/src/backend/storage/ipc/sinval.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.33 2001/06/16 22:58:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.34 2001/06/19 19:42:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -55,56 +55,31 @@ InitBackendSharedInvalidationState(void)
}
/*
- * RegisterSharedInvalid
+ * SendSharedInvalidMessage
* Add a shared-cache-invalidation message to the global SI message queue.
- *
- * Note:
- * Assumes hash index is valid.
- * Assumes item pointer is valid.
*/
void
-RegisterSharedInvalid(int cacheId, /* XXX */
- Index hashIndex,
- ItemPointer pointer)
+SendSharedInvalidMessage(SharedInvalidationMessage *msg)
{
- SharedInvalidData newInvalid;
bool insertOK;
- /*
- * This code has been hacked to accept two types of messages. This
- * might be treated more generally in the future.
- *
- * (1) cacheId= system cache id hashIndex= system cache hash index for a
- * (possibly) cached tuple pointer= pointer of (possibly) cached tuple
- *
- * (2) cacheId= special non-syscache id hashIndex= object id contained in
- * (possibly) cached relation descriptor pointer= null
- */
-
- newInvalid.cacheId = cacheId;
- newInvalid.hashIndex = hashIndex;
-
- if (ItemPointerIsValid(pointer))
- ItemPointerCopy(pointer, &newInvalid.pointerData);
- else
- ItemPointerSetInvalid(&newInvalid.pointerData);
-
SpinAcquire(SInvalLock);
- insertOK = SIInsertDataEntry(shmInvalBuffer, &newInvalid);
+ insertOK = SIInsertDataEntry(shmInvalBuffer, msg);
SpinRelease(SInvalLock);
if (!insertOK)
- elog(DEBUG, "RegisterSharedInvalid: SI buffer overflow");
+ elog(DEBUG, "SendSharedInvalidMessage: SI buffer overflow");
}
/*
- * InvalidateSharedInvalid
+ * ReceiveSharedInvalidMessages
* Process shared-cache-invalidation messages waiting for this backend
*/
void
- InvalidateSharedInvalid(void (*invalFunction) (),
- void (*resetFunction) ())
+ReceiveSharedInvalidMessages(
+ void (*invalFunction) (SharedInvalidationMessage *msg),
+ void (*resetFunction) (void))
{
- SharedInvalidData data;
+ SharedInvalidationMessage data;
int getResult;
bool gotMessage = false;
@@ -118,15 +93,13 @@ void
if (getResult < 0)
{
/* got a reset message */
- elog(DEBUG, "InvalidateSharedInvalid: cache state reset");
+ elog(DEBUG, "ReceiveSharedInvalidMessages: cache state reset");
resetFunction();
}
else
{
/* got a normal data message */
- invalFunction(data.cacheId,
- data.hashIndex,
- &data.pointerData);
+ invalFunction(&data);
}
gotMessage = true;
}
diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c
index 63bc037bc9a..38096190091 100644
--- a/src/backend/storage/ipc/sinvaladt.c
+++ b/src/backend/storage/ipc/sinvaladt.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.39 2001/06/16 22:58:15 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.40 2001/06/19 19:42:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -20,7 +20,6 @@
#include "miscadmin.h"
#include "storage/backendid.h"
#include "storage/proc.h"
-#include "storage/sinval.h"
#include "storage/sinvaladt.h"
SISeg *shmInvalBuffer;
@@ -35,7 +34,6 @@ static void SISetProcStateInvalid(SISeg *segP);
int
SInvalShmemSize(int maxBackends)
{
-
/*
* Figure space needed. Note sizeof(SISeg) includes the first
* ProcState entry.
@@ -183,14 +181,13 @@ CleanupInvalidationState(int status, Datum arg)
* Returns true for normal successful insertion, false if had to reset.
*/
bool
-SIInsertDataEntry(SISeg *segP, SharedInvalidData *data)
+SIInsertDataEntry(SISeg *segP, SharedInvalidationMessage *data)
{
int numMsgs = segP->maxMsgNum - segP->minMsgNum;
/* Is the buffer full? */
if (numMsgs >= MAXNUMMESSAGES)
{
-
/*
* Don't panic just yet: slowest backend might have consumed some
* messages but not yet have done SIDelExpiredDataEntries() to
@@ -273,13 +270,12 @@ SISetProcStateInvalid(SISeg *segP)
*/
int
SIGetDataEntry(SISeg *segP, int backendId,
- SharedInvalidData *data)
+ SharedInvalidationMessage *data)
{
ProcState *stateP = &segP->procState[backendId - 1];
if (stateP->resetState)
{
-
/*
* Force reset. We can say we have dealt with any messages added
* since the reset, as well...
diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c
index 515b92c5702..e645e92b221 100644
--- a/src/backend/storage/lmgr/lmgr.c
+++ b/src/backend/storage/lmgr/lmgr.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.46 2001/06/12 05:55:49 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lmgr.c,v 1.47 2001/06/19 19:42:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -144,7 +144,7 @@ LockRelation(Relation relation, LOCKMODE lockmode)
* rebuild it and not just delete it.
*/
RelationIncrementReferenceCount(relation);
- DiscardInvalid();
+ AcceptInvalidationMessages();
RelationDecrementReferenceCount(relation);
}