From beac8c1c4609eb7dcb24e5352c66f3b70682d331 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 12 Oct 1998 00:53:42 +0000 Subject: [PATCH] Fix for vacuum and cache use. Fix for BSDI 4.0. --- src/backend/access/heap/heapam.c | 26 +------------------------- src/backend/commands/vacuum.c | 11 ++++------- src/backend/utils/cache/catcache.c | 5 ++++- src/backend/utils/cache/inval.c | 19 +++---------------- src/include/utils/inval.h | 4 +--- src/makefiles/Makefile.bsdi | 5 +++++ src/makefiles/Makefile.linux | 2 +- src/makefiles/Makefile.sco | 3 +-- 8 files changed, 20 insertions(+), 55 deletions(-) diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index b0500c9b6a..c2b346e2f5 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.36 1998/10/08 18:29:12 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.37 1998/10/12 00:53:30 momjian Exp $ * * * INTERFACE ROUTINES @@ -98,8 +98,6 @@ static void doinsert(Relation relation, HeapTuple tup); -static bool ImmediateInvalidation; - /* ---------------------------------------------------------------- * heap support routines * ---------------------------------------------------------------- @@ -484,22 +482,6 @@ doinsert(Relation relation, HeapTuple tup) return; } -/* - * HeapScanIsValid is now a macro in relscan.h -cim 4/27/91 - */ - -#ifdef NOT_USED -/* ---------------- - * SetHeapAccessMethodImmediateInvalidation - * ---------------- - */ -void -SetHeapAccessMethodImmediateInvalidation(bool on) -{ - ImmediateInvalidation = on; -} - -#endif /* ---------------------------------------------------------------- * heap access method interface @@ -1149,9 +1131,7 @@ heap_insert(Relation relation, HeapTuple tup) * invalidate caches (only works for system relations) * ---------------- */ - SetRefreshWhenInvalidate(ImmediateInvalidation); RelationInvalidateHeapTuple(relation, tup); - SetRefreshWhenInvalidate((bool) !ImmediateInvalidation); } return tup->t_oid; @@ -1253,9 +1233,7 @@ heap_delete(Relation relation, ItemPointer tid) * invalidate caches * ---------------- */ - SetRefreshWhenInvalidate(ImmediateInvalidation); RelationInvalidateHeapTuple(relation, tp); - SetRefreshWhenInvalidate((bool) !ImmediateInvalidation); WriteBuffer(buf); if (IsSystemRelationName(RelationGetRelationName(relation)->data)) @@ -1407,9 +1385,7 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple replace_tuple) * invalidate caches * ---------------- */ - SetRefreshWhenInvalidate(ImmediateInvalidation); RelationInvalidateHeapTuple(relation, old_tuple); - SetRefreshWhenInvalidate((bool) !ImmediateInvalidation); WriteBuffer(buffer); diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 35f34f30a2..c0a8789aa9 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.87 1998/10/09 21:31:34 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.88 1998/10/12 00:53:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1084,6 +1084,8 @@ vc_rpfheap(VRelStats *vacrelstats, Relation onerel, newtup = (HeapTuple) palloc(tuple_len); memmove((char *) newtup, (char *) tuple, tuple_len); + RelationInvalidateHeapTuple(onerel, tuple); + /* store transaction information */ TransactionIdStore(myXID, &(newtup->t_xmin)); newtup->t_cmin = myCID; @@ -1876,12 +1878,7 @@ vc_updstats(Oid relid, int num_pages, int num_tuples, bool hasindex, VRelStats * /* XXX -- after write, should invalidate relcache in other backends */ WriteNoReleaseBuffer(ItemPointerGetBlockNumber(&rtup->t_ctid)); - /* - * invalidating system relations confuses the function cache of - * pg_operator and pg_opclass, bjm - */ - if (!IsSystemRelationName(pgcform->relname.data)) - RelationInvalidateHeapTuple(rd, rtup); + RelationInvalidateHeapTuple(rd, rtup); ReleaseBuffer(buffer); heap_close(rd); diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c index d54d2584ae..97accc93db 100644 --- a/src/backend/utils/cache/catcache.c +++ b/src/backend/utils/cache/catcache.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.34 1998/09/01 04:32:57 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.35 1998/10/12 00:53:33 momjian Exp $ * * Notes: * XXX This needs to use exception.h to handle recovery when @@ -1108,6 +1108,7 @@ RelationInvalidateCatalogCacheTuple(Relation relation, */ Assert(RelationIsValid(relation)); Assert(HeapTupleIsValid(tuple)); + Assert(PointerIsValid(function)); CACHE1_elog(DEBUG, "RelationInvalidateCatalogCacheTuple: called"); /* ---------------- @@ -1132,9 +1133,11 @@ RelationInvalidateCatalogCacheTuple(Relation relation, if (relationId != ccp->relationId) continue; +#ifdef NOT_USED /* OPT inline simplification of CatalogCacheIdInvalidate */ if (!PointerIsValid(function)) function = CatalogCacheIdInvalidate; +#endif (*function) (ccp->id, CatalogCacheComputeTupleHashIndex(ccp, relation, tuple), diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index d21540776d..0517e1a0cd 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.16 1998/09/01 04:33:00 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.17 1998/10/12 00:53:34 momjian Exp $ * * Note - this code is real crufty... * @@ -74,7 +74,6 @@ typedef InvalidationMessageData *InvalidationMessage; * ---------------- */ static LocalInvalid Invalid = EmptyLocalInvalid; /* XXX global */ -static bool RefreshWhenInvalidate = false; Oid MyRelationRelationId = InvalidOid; Oid MyAttributeRelationId = InvalidOid; @@ -573,20 +572,6 @@ RegisterInvalid(bool send) } /* - * SetRefreshWhenInvalidate -- - * Causes the local caches to be immediately refreshed iff true. - */ -void -SetRefreshWhenInvalidate(bool on) -{ -#ifdef INVALIDDEBUG - elog(DEBUG, "RefreshWhenInvalidate(%d) called", on); -#endif /* defined(INVALIDDEBUG) */ - - RefreshWhenInvalidate = on; -} - -/* * RelationIdInvalidateHeapTuple -- * Causes the given tuple in a relation to be invalidated. * @@ -641,9 +626,11 @@ RelationInvalidateHeapTuple(Relation relation, HeapTuple tuple) tuple, RelationIdRegisterLocalInvalid); +#ifdef NOT_USED if (RefreshWhenInvalidate) /* what does this do? bjm 1998/08/20 */ RelationInvalidateCatalogCacheTuple(relation, tuple, (void (*) ()) NULL); +#endif } diff --git a/src/include/utils/inval.h b/src/include/utils/inval.h index bb2591552b..f035c29303 100644 --- a/src/include/utils/inval.h +++ b/src/include/utils/inval.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: inval.h,v 1.9 1998/09/01 04:39:15 momjian Exp $ + * $Id: inval.h,v 1.10 1998/10/12 00:53:36 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -22,8 +22,6 @@ extern void DiscardInvalid(void); extern void RegisterInvalid(bool send); -extern void SetRefreshWhenInvalidate(bool on); - extern void RelationInvalidateHeapTuple(Relation relation, HeapTuple tuple); /* diff --git a/src/makefiles/Makefile.bsdi b/src/makefiles/Makefile.bsdi index 88fe307e15..b1da0004cb 100644 --- a/src/makefiles/Makefile.bsdi +++ b/src/makefiles/Makefile.bsdi @@ -1,4 +1,9 @@ # for bsdi 4.0 ELF # if we defined .so in template/bsdi_4.0 + +ifeq ($(DLSUFFIX), .so) +LDFLAGS+= -export-dynamic +endif + %.so: %.o $(LD) -shared -o $@ $< diff --git a/src/makefiles/Makefile.linux b/src/makefiles/Makefile.linux index 0166e3d167..91e50d672d 100644 --- a/src/makefiles/Makefile.linux +++ b/src/makefiles/Makefile.linux @@ -1,4 +1,4 @@ -LDFLAGS+= -export-dynamic #-Wl,-rpath -Wl,$(LIBDIR) +LDFLAGS+= -export-dynamic MK_NO_LORDER= true %.so: %.o diff --git a/src/makefiles/Makefile.sco b/src/makefiles/Makefile.sco index 2bc7627eb8..325c9516bd 100644 --- a/src/makefiles/Makefile.sco +++ b/src/makefiles/Makefile.sco @@ -1,6 +1,5 @@ CFLAGS += -dy LDFLAGS += -W l,-Bexport -%.so: %.o - $(LD) -G -Bdynamic -o $@ $< + %.so: %.o $(LD) -G -Bdynamic -o $@ $< -- 2.11.0