Fix for vacuum and cache use. Fix for BSDI 4.0.
authorBruce Momjian <bruce@momjian.us>
Mon, 12 Oct 1998 00:53:42 +0000 (00:53 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 12 Oct 1998 00:53:42 +0000 (00:53 +0000)
src/backend/access/heap/heapam.c
src/backend/commands/vacuum.c
src/backend/utils/cache/catcache.c
src/backend/utils/cache/inval.c
src/include/utils/inval.h
src/makefiles/Makefile.bsdi
src/makefiles/Makefile.linux
src/makefiles/Makefile.sco

index 614cfe1265a002bacaea82db91090935c3c68843..154da913e0fa94eda49caee3145f1dde4c7c2430 100644 (file)
@@ -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);
 
index 980dc61f321af1d8e502ba288db5f13f650902a6..d0dec33827aef7a3e51ae8de89ac7d32ff682a55 100644 (file)
@@ -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);
index 867ad3169790ad7607583569b3bb8f269a62f405..92f38ecdde867256b591ea387f3a13ca5a57514f 100644 (file)
@@ -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),
index 664ddb070b43a116e8c928bea839c824d5e6aa4e..129a3e2f725f56c35e1b7b05acae22be64d3a986 100644 (file)
@@ -74,7 +74,6 @@ typedef InvalidationMessageData *InvalidationMessage;
  * ----------------
  */
 static LocalInvalid Invalid = EmptyLocalInvalid;               /* XXX global */
-static bool RefreshWhenInvalidate = false;
 
 Oid                    MyRelationRelationId = InvalidOid;
 Oid                    MyAttributeRelationId = InvalidOid;
@@ -572,20 +571,6 @@ RegisterInvalid(bool send)
        Invalid = EmptyLocalInvalid;
 }
 
-/*
- * 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
 }
index 0604f165b0f32ea354975c7b9f9dbf2fb3f4ee22..9593caa6f77f4578aba357dee4f2473b9fc6a363 100644 (file)
@@ -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);
 
 /*
index 88fe307e1569a257de2bedafa1b3dc1abfc14054..b1da0004cb755c134e4029e0e7dd01290a8d1ec9 100644 (file)
@@ -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 $@ $<
index 0166e3d16774b12a9192b926c5d2f7184e3cff36..91e50d672dbfbf1036411fdbf27d4fcf3630bab3 100644 (file)
@@ -1,4 +1,4 @@
-LDFLAGS+= -export-dynamic #-Wl,-rpath -Wl,$(LIBDIR)
+LDFLAGS+= -export-dynamic
 MK_NO_LORDER= true
 
 %.so: %.o
index 2bc7627eb80e9b39ef899a40fe9b4f077ba68272..325c9516bdfb126fc4c844fd6bb715c2876031b5 100644 (file)
@@ -1,6 +1,5 @@
 CFLAGS += -dy
 LDFLAGS += -W l,-Bexport
-%.so: %.o
-       $(LD) -G -Bdynamic -o $@ $<
+
 %.so: %.o
        $(LD) -G -Bdynamic -o $@ $<