diff options
Diffstat (limited to 'src/backend/utils/cache/inval.c')
-rw-r--r-- | src/backend/utils/cache/inval.c | 148 |
1 files changed, 10 insertions, 138 deletions
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index e218daa7483..8f4fd626f8b 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.37 2000/06/08 19:51:03 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.38 2000/11/08 22:10:01 tgl Exp $ * * Note - this code is real crufty... * @@ -80,10 +80,10 @@ typedef InvalidationMessageData *InvalidationMessage; /* * ---------------- - * Invalidation info was devided into three parts. - * 1) shared invalidation to be registerd for all backends + * Invalidation info is divided into three parts. + * 1) shared invalidation to be registered for all backends * 2) local invalidation for the transaction itself - * 3) rollback information for the transaction itself + * 3) rollback information for the transaction itself (in case we abort) * ---------------- */ @@ -160,7 +160,9 @@ LocalInvalidRegister(LocalInvalid invalid, * -------------------------------- */ static void - LocalInvalidInvalidate(LocalInvalid invalid, void (*function) (), bool freemember) +LocalInvalidInvalidate(LocalInvalid invalid, + void (*function) (), + bool freemember) { InvalidationEntryData *entryDataP; @@ -216,15 +218,10 @@ elog(DEBUG, "CacheIdRegisterLocalInvalid(%d, %d, [%d, %d])", \ elog(DEBUG, "CacheIdRegisterLocalRollback(%d, %d, [%d, %d])", \ cacheId, hashIndex, ItemPointerGetBlockNumber(pointer), \ ItemPointerGetOffsetNumber(pointer)) -#define CacheIdImmediateRegisterSharedInvalid_DEBUG1 \ -elog(DEBUG, "CacheIdImmediateRegisterSharedInvalid(%d, %d, [%d, %d])", \ - cacheId, hashIndex, ItemPointerGetBlockNumber(pointer), \ - ItemPointerGetOffsetNumber(pointer)) #else #define CacheIdRegisterSpecifiedLocalInvalid_DEBUG1 #define CacheIdRegisterLocalInvalid_DEBUG1 #define CacheIdRegisterLocalRollback_DEBUG1 -#define CacheIdImmediateRegisterSharedInvalid_DEBUG1 #endif /* INVALIDDEBUG */ /* -------------------------------- @@ -233,7 +230,9 @@ elog(DEBUG, "CacheIdImmediateRegisterSharedInvalid(%d, %d, [%d, %d])", \ */ static LocalInvalid CacheIdRegisterSpecifiedLocalInvalid(LocalInvalid invalid, - Index cacheId, Index hashIndex, ItemPointer pointer) + Index cacheId, + Index hashIndex, + ItemPointer pointer) { InvalidationMessage message; @@ -318,43 +317,6 @@ CacheIdRegisterLocalRollback(Index cacheId, Index hashIndex, } /* -------------------------------- - * CacheIdImmediateRegisterSharedInvalid - * -------------------------------- - */ -static void -CacheIdImmediateRegisterSharedInvalid(Index cacheId, Index hashIndex, - ItemPointer pointer) -{ - InvalidationMessage message; - - /* ---------------- - * debugging stuff - * ---------------- - */ - CacheIdImmediateRegisterSharedInvalid_DEBUG1; - - /* ---------------- - * create a message describing the system catalog tuple - * we wish to invalidate. - * ---------------- - */ - message = (InvalidationMessage) - InvalidationEntryAllocate(sizeof(InvalidationMessageData)); - - message->kind = 'c'; - message->any.catalog.cacheId = cacheId; - message->any.catalog.hashIndex = hashIndex; - - ItemPointerCopy(pointer, &message->any.catalog.pointerData); - /* ---------------- - * Register a shared catalog cache invalidation. - * ---------------- - */ - InvalidationMessageRegisterSharedInvalid(message); - free((Pointer) &((InvalidationUserData *) message)->dataP[-1]); -} - -/* -------------------------------- * RelationIdRegisterSpecifiedLocalInvalid * -------------------------------- */ @@ -449,44 +411,6 @@ RelationIdRegisterLocalRollback(Oid relationId, Oid objectId) } /* -------------------------------- - * RelationIdImmediateRegisterSharedInvalid - * -------------------------------- - */ -static void -RelationIdImmediateRegisterSharedInvalid(Oid relationId, Oid objectId) -{ - InvalidationMessage message; - - /* ---------------- - * debugging stuff - * ---------------- - */ -#ifdef INVALIDDEBUG - elog(DEBUG, "RelationImmediateRegisterSharedInvalid(%u, %u)", relationId, - objectId); -#endif /* defined(INVALIDDEBUG) */ - - /* ---------------- - * create a message describing the relation descriptor - * we wish to invalidate. - * ---------------- - */ - message = (InvalidationMessage) - InvalidationEntryAllocate(sizeof(InvalidationMessageData)); - - message->kind = 'r'; - message->any.relation.relationId = relationId; - message->any.relation.objectId = objectId; - - /* ---------------- - * Register a shared catalog cache invalidation. - * ---------------- - */ - InvalidationMessageRegisterSharedInvalid(message); - free((Pointer) &((InvalidationUserData *) message)->dataP[-1]); -} - -/* -------------------------------- * CacheIdInvalidate * * This routine can invalidate a tuple in a system catalog cache @@ -890,55 +814,3 @@ RelationMark4RollbackHeapTuple(Relation relation, HeapTuple tuple) RelationIdRegisterLocalRollback, "RelationMark4RollbackHeapTuple"); } - -/* - * ImmediateInvalidateSharedHeapTuple - * Different from RelationInvalidateHeapTuple() - * this function queues shared invalidation info immediately. - */ -void -ImmediateInvalidateSharedHeapTuple(Relation relation, HeapTuple tuple) -{ - InvokeHeapTupleInvalidation(relation, tuple, - CacheIdImmediateRegisterSharedInvalid, - RelationIdImmediateRegisterSharedInvalid, - "ImmediateInvalidateSharedHeapTuple"); -} - -#ifdef NOT_USED -/* - * ImmediateSharedRelationCacheInvalidate - * Register shared relation cache invalidation immediately - * - * This is needed for smgrunlink()/smgrtruncate(). - * Those functions unlink/truncate the base file immediately - * and couldn't be rollbacked in case of abort/crash. - * So relation cache invalidation must be registerd immediately. - * Note: - * Assumes Relation is valid. - */ -void -ImmediateSharedRelationCacheInvalidate(Relation relation) -{ - /* ---------------- - * sanity checks - * ---------------- - */ - Assert(RelationIsValid(relation)); - - if (IsBootstrapProcessingMode()) - return; - - /* ---------------- - * debugging stuff - * ---------------- - */ -#ifdef INVALIDDEBUG - elog(DEBUG, "ImmediateSharedRelationCacheInvalidate(%s)", \ - RelationGetPhysicalRelationName(relation)); -#endif /* defined(INVALIDDEBUG) */ - - RelationIdImmediateRegisterSharedInvalid( - RelOid_pg_class, RelationGetRelid(relation)); -} -#endif |