Use Snapshot in heap access methods.
authorVadim B. Mikheev <vadim4o@yahoo.com>
Mon, 27 Jul 1998 19:38:40 +0000 (19:38 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Mon, 27 Jul 1998 19:38:40 +0000 (19:38 +0000)
54 files changed:
src/backend/access/gist/gist.c
src/backend/access/hash/hash.c
src/backend/access/heap/heapam.c
src/backend/access/index/istrat.c
src/backend/access/nbtree/nbtinsert.c
src/backend/access/nbtree/nbtree.c
src/backend/access/rtree/rtree.c
src/backend/bootstrap/bootstrap.c
src/backend/catalog/aclchk.c
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/indexing.c
src/backend/catalog/pg_operator.c
src/backend/catalog/pg_type.c
src/backend/commands/async.c
src/backend/commands/cluster.c
src/backend/commands/command.c
src/backend/commands/copy.c
src/backend/commands/dbcommands.c
src/backend/commands/proclang.c
src/backend/commands/remove.c
src/backend/commands/trigger.c
src/backend/commands/user.c
src/backend/commands/vacuum.c
src/backend/executor/execAmi.c
src/backend/executor/execMain.c
src/backend/executor/execUtils.c
src/backend/executor/nodeIndexscan.c
src/backend/executor/nodeMaterial.c
src/backend/executor/nodeSeqscan.c
src/backend/executor/nodeTee.c
src/backend/optimizer/path/indxpath.c
src/backend/optimizer/util/plancat.c
src/backend/parser/parse_func.c
src/backend/parser/parse_oper.c
src/backend/rewrite/rewriteRemove.c
src/backend/rewrite/rewriteSupport.c
src/backend/storage/ipc/shmem.c
src/backend/storage/large_object/inv_api.c
src/backend/storage/lmgr/proc.c
src/backend/utils/adt/not_in.c
src/backend/utils/adt/regproc.c
src/backend/utils/adt/selfuncs.c
src/backend/utils/adt/sets.c
src/backend/utils/cache/catcache.c
src/backend/utils/cache/relcache.c
src/backend/utils/misc/database.c
src/include/access/heapam.h
src/include/access/relscan.h
src/include/access/xact.h
src/include/executor/executor.h
src/include/nodes/execnodes.h
src/include/storage/proc.h
src/include/utils/tqual.h

index 5003204df4af00957c71aa5408c70691f45402b1..1445ff7f2eb5209c6b236649f947ef3d2df0410a 100644 (file)
@@ -170,7 +170,7 @@ gistbuild(Relation heap,
        econtext = NULL;
    }
 #endif                         /* OMIT_PARTIAL_INDEX */
-   scan = heap_beginscan(heap, 0, false, 0, (ScanKey) NULL);
+   scan = heap_beginscan(heap, 0, SnapshotNow, 0, (ScanKey) NULL);
    htup = heap_getnext(scan, 0, &buffer);
 
    /* int the tuples as we insert them */
index e443f393ba0a122f861cb64ca0aeddcb112f6715..6e913e7da49b74148714bef7fa927c03687b1196 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/hash/hash.c,v 1.18 1998/02/26 04:29:28 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/hash/hash.c,v 1.19 1998/07/27 19:37:35 vadim Exp $
  *
  * NOTES
  *   This file contains only the public interface routines.
@@ -121,7 +121,7 @@ hashbuild(Relation heap,
 #endif                         /* OMIT_PARTIAL_INDEX */
 
    /* start a heap scan */
-   hscan = heap_beginscan(heap, 0, false, 0, (ScanKey) NULL);
+   hscan = heap_beginscan(heap, 0, SnapshotNow, 0, (ScanKey) NULL);
    htup = heap_getnext(hscan, 0, &buffer);
 
    /* build the index */
index 10c0abd2cd0cfad23194f9a71ed9507cad93f6b4..75127b027d1cd3c9f48c4c17d247a7d73f100b0a 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.30 1998/07/20 16:56:53 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.31 1998/07/27 19:37:36 vadim Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -209,7 +209,7 @@ heapgettup(Relation relation,
           ItemPointer tid,
           int dir,
           Buffer *b,
-          bool seeself,
+          Snapshot snapshot,
           int nkeys,
           ScanKey key)
 {
@@ -250,9 +250,9 @@ heapgettup(Relation relation,
    }
    elog(DEBUG, "heapgettup(..., b=0x%x, nkeys=%d, key=0x%x", b, nkeys, key);
 
-   elog(DEBUG, "heapgettup: relation(%c)=`%s', %s",
+   elog(DEBUG, "heapgettup: relation(%c)=`%s', %p",
         relation->rd_rel->relkind, &relation->rd_rel->relname,
-        (seeself == true) ? "SeeSelf" : "NoSeeSelf");
+        snapshot);
 #endif                         /* !defined(HEAPDEBUGALL) */
 
    if (!ItemPointerIsValid(tid))
@@ -402,7 +402,7 @@ heapgettup(Relation relation,
             * ----------------
             */
            HeapTupleSatisfies(lpp, relation, *b, (PageHeader) dp,
-                              seeself, nkeys, key, rtup);
+                              snapshot, nkeys, key, rtup);
            if (rtup != NULL)
            {
                ItemPointer iptr = &(rtup->t_ctid);
@@ -580,7 +580,7 @@ heap_close(Relation relation)
 HeapScanDesc
 heap_beginscan(Relation relation,
               int atend,
-              bool seeself,
+              Snapshot snapshot,
               unsigned nkeys,
               ScanKey key)
 {
@@ -608,7 +608,7 @@ heap_beginscan(Relation relation,
 
    /* XXX someday assert SelfTimeQual if relkind == RELKIND_UNCATALOGED */
    if (relation->rd_rel->relkind == RELKIND_UNCATALOGED)
-       seeself = true;
+       snapshot = SnapshotSelf;
 
    /* ----------------
     *  increment relation ref count while scanning relation
@@ -639,7 +639,7 @@ heap_beginscan(Relation relation,
    initsdesc(sdesc, relation, atend, nkeys, key);
 
    sdesc->rs_atend = atend;
-   sdesc->rs_seeself = seeself;
+   sdesc->rs_snapshot = snapshot;
    sdesc->rs_nkeys = (short) nkeys;
 
    return (sdesc);
@@ -856,7 +856,7 @@ heap_getnext(HeapScanDesc scandesc,
                           iptr,
                           -1,
                           &(sdesc->rs_cbuf),
-                          sdesc->rs_seeself,
+                          sdesc->rs_snapshot,
                           sdesc->rs_nkeys,
                           sdesc->rs_key);
        }
@@ -943,7 +943,7 @@ heap_getnext(HeapScanDesc scandesc,
                           iptr,
                           1,
                           &sdesc->rs_cbuf,
-                          sdesc->rs_seeself,
+                          sdesc->rs_snapshot,
                           sdesc->rs_nkeys,
                           sdesc->rs_key);
        }
@@ -988,7 +988,7 @@ heap_getnext(HeapScanDesc scandesc,
  */
 HeapTuple
 heap_fetch(Relation relation,
-          bool seeself,
+          Snapshot snapshot,
           ItemPointer tid,
           Buffer *b)
 {
@@ -1050,7 +1050,7 @@ heap_fetch(Relation relation,
     */
 
    HeapTupleSatisfies(lp, relation, buffer, dp,
-                      seeself, 0, (ScanKey) NULL, tuple);
+                      snapshot, 0, (ScanKey) NULL, tuple);
 
    if (tuple == NULL)
    {
@@ -1447,7 +1447,7 @@ heap_markpos(HeapScanDesc sdesc)
                       (ItemPointer) NULL : &sdesc->rs_ctup->t_ctid,
                       -1,
                       &sdesc->rs_pbuf,
-                      sdesc->rs_seeself,
+                      sdesc->rs_snapshot,
                       sdesc->rs_nkeys,
                       sdesc->rs_key);
 
@@ -1461,7 +1461,7 @@ heap_markpos(HeapScanDesc sdesc)
                       (ItemPointer) NULL : &sdesc->rs_ctup->t_ctid,
                       1,
                       &sdesc->rs_nbuf,
-                      sdesc->rs_seeself,
+                      sdesc->rs_snapshot,
                       sdesc->rs_nkeys,
                       sdesc->rs_key);
    }
index b0b0cdc452dbe2cfd9a76649c239a64d050ccd30..5b940ba115569351756f4daef0c014416bf2f85b 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.20 1998/06/15 19:27:54 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.21 1998/07/27 19:37:37 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -501,7 +501,7 @@ OperatorRelationFillScanKeyEntry(Relation operatorRelation,
                           F_OIDEQ,
                           ObjectIdGetDatum(operatorObjectId));
 
-   scan = heap_beginscan(operatorRelation, false, false,
+   scan = heap_beginscan(operatorRelation, false, SnapshotNow,
                          1, &scanKeyData);
 
    tuple = heap_getnext(scan, false, (Buffer *) NULL);
@@ -558,7 +558,7 @@ IndexSupportInitialize(IndexStrategy indexStrategy,
                           ObjectIdGetDatum(indexObjectId));
 
    relation = heap_openr(IndexRelationName);
-   scan = heap_beginscan(relation, false, false, 1, entry);
+   scan = heap_beginscan(relation, false, SnapshotNow, 1, entry);
    tuple = heap_getnext(scan, 0, (Buffer *) NULL);
    if (!HeapTupleIsValid(tuple))
        elog(ERROR, "IndexSupportInitialize: corrupted catalogs");
@@ -618,7 +618,7 @@ IndexSupportInitialize(IndexStrategy indexStrategy,
            entry[1].sk_argument =
                ObjectIdGetDatum(operatorClassObjectId[attributeNumber - 1]);
 
-           scan = heap_beginscan(relation, false, false, 2, entry);
+           scan = heap_beginscan(relation, false, SnapshotNow, 2, entry);
 
            while (tuple = heap_getnext(scan, 0, (Buffer *) NULL),
                   HeapTupleIsValid(tuple))
@@ -661,7 +661,7 @@ IndexSupportInitialize(IndexStrategy indexStrategy,
        for (strategy = 1; strategy <= maxStrategyNumber; strategy++)
            ScanKeyEntrySetIllegal(StrategyMapGetScanKeyEntry(map, strategy));
 
-       scan = heap_beginscan(relation, false, false, 2, entry);
+       scan = heap_beginscan(relation, false, SnapshotNow, 2, entry);
 
        while (tuple = heap_getnext(scan, 0, (Buffer *) NULL),
               HeapTupleIsValid(tuple))
index 350e198514b0ccca3457dfb2cab4d94e16b30227..046cce37a0cec6cc69728c799c63b289e656a0e1 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.26 1998/06/15 19:27:55 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.27 1998/07/27 19:37:39 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -120,7 +120,7 @@ _bt_doinsert(Relation rel, BTItem btitem, bool index_is_unique, Relation heapRel
            {                   /* they're equal */
                btitem = (BTItem) PageGetItem(page, PageGetItemId(page, offset));
                itup = &(btitem->bti_itup);
-               htup = heap_fetch(heapRel, true, &(itup->t_tid), NULL);
+               htup = heap_fetch(heapRel, SnapshotSelf, &(itup->t_tid), NULL);
                if (htup != (HeapTuple) NULL)
                {               /* it is a duplicate */
                    elog(ERROR, "Cannot insert a duplicate key into a unique index");
index b4d1185a6018bb2069ac8301295e724d88e784fc..c4ea6aa61275d82579e7facb9b06fb5aa559bcea 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.26 1998/06/15 19:27:56 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.27 1998/07/27 19:37:40 vadim Exp $
  *
  * NOTES
  *   This file contains only the public interface routines.
@@ -153,7 +153,7 @@ btbuild(Relation heap,
 #endif                         /* OMIT_PARTIAL_INDEX */
 
    /* start a heap scan */
-   hscan = heap_beginscan(heap, 0, false, 0, (ScanKey) NULL);
+   hscan = heap_beginscan(heap, 0, SnapshotNow, 0, (ScanKey) NULL);
    htup = heap_getnext(hscan, 0, &buffer);
 
    /* build the index */
index 57217b050b3db1f2f7db76ce2adfa95fcf6e1867..f8ea84a6d0cd585226041927bf6b5917d0515787 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.24 1998/06/15 19:28:01 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.25 1998/07/27 19:37:41 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -164,7 +164,7 @@ rtbuild(Relation heap,
        slot = NULL;
    }
 #endif                         /* OMIT_PARTIAL_INDEX */
-   scan = heap_beginscan(heap, 0, false, 0, (ScanKey) NULL);
+   scan = heap_beginscan(heap, 0, SnapshotNow, 0, (ScanKey) NULL);
    htup = heap_getnext(scan, 0, &buffer);
 
    /* count the tuples as we insert them */
index 4be46d37daf7275fed04fa712376511ab502596f..aab6a82f78c96219531f701d9cccab23429cb78b 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.46 1998/07/26 04:30:19 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.47 1998/07/27 19:37:43 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "catalog/catname.h"
 #include "catalog/index.h"
 #include "catalog/pg_am.h"
-#ifdef MULTIBYTE
-#include "catalog/pg_attribute_mb.h"
-#include "catalog/pg_class_mb.h"
-#else
 #include "catalog/pg_attribute.h"
 #include "catalog/pg_class.h"
-#endif
 #include "catalog/pg_type.h"
 #include "executor/execdesc.h"
 #include "executor/hashjoin.h"
@@ -464,14 +459,14 @@ boot_openrel(char *relname)
    {
        StartPortalAllocMode(DefaultAllocMode, 0);
        rdesc = heap_openr(TypeRelationName);
-       sdesc = heap_beginscan(rdesc, 0, false, 0, (ScanKey) NULL);
+       sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL);
        for (i = 0; PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL)); ++i);
        heap_endscan(sdesc);
        app = Typ = ALLOC(struct typmap *, i + 1);
        while (i-- > 0)
            *app++ = ALLOC(struct typmap, 1);
        *app = (struct typmap *) NULL;
-       sdesc = heap_beginscan(rdesc, 0, false, 0, (ScanKey) NULL);
+       sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL);
        app = Typ;
        while (PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL)))
        {
@@ -817,7 +812,7 @@ gettype(char *type)
        if (DebugMode)
            printf("bootstrap.c: External Type: %s\n", type);
        rdesc = heap_openr(TypeRelationName);
-       sdesc = heap_beginscan(rdesc, 0, false, 0, (ScanKey) NULL);
+       sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL);
        i = 0;
        while (PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL)))
            ++i;
@@ -826,7 +821,7 @@ gettype(char *type)
        while (i-- > 0)
            *app++ = ALLOC(struct typmap, 1);
        *app = (struct typmap *) NULL;
-       sdesc = heap_beginscan(rdesc, 0, false, 0, (ScanKey) NULL);
+       sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 0, (ScanKey) NULL);
        app = Typ;
        while (PointerIsValid(tup = heap_getnext(sdesc, 0, (Buffer *) NULL)))
        {
index c14065d7a5baddb21027f2377245d85fbaa18745..254608e8883b725d3e8374c8fe2cf914b51fa331 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.11 1998/06/15 19:28:06 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.12 1998/07/27 19:37:45 vadim Exp $
  *
  * NOTES
  *   See acl.h.
@@ -126,7 +126,7 @@ ChangeAcl(char *relname,
    relkey[0].sk_argument = NameGetDatum(relname);
    hsdp = heap_beginscan(relation,
                          0,
-                         false,
+                         SnapshotNow,
                          (unsigned) 1,
                          relkey);
    htp = heap_getnext(hsdp, 0, &buffer);
@@ -482,7 +482,7 @@ pg_aclcheck(char *relname, char *usename, AclMode mode)
                  &relkey[0].sk_func,
                  &relkey[0].sk_nargs);
        relkey[0].sk_argument = NameGetDatum(relname);
-       hsdp = heap_beginscan(relation, 0, false, 1, relkey);
+       hsdp = heap_beginscan(relation, 0, SnapshotNow, 1, relkey);
        htp = heap_getnext(hsdp, 0, (Buffer *) 0);
        if (HeapTupleIsValid(htp) &&
            !heap_attisnull(htp, Anum_pg_class_relacl))
index a476d34e4808c2df765077098c9bade77f31f0ea..8f2a56cc55bb392a7837d00d09dd72b7b7e6281b 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.54 1998/07/20 19:21:41 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.55 1998/07/27 19:37:46 vadim Exp $
  *
  * INTERFACE ROUTINES
  *     heap_create()           - Create an uncataloged heap relation
@@ -502,7 +502,7 @@ RelationAlreadyExists(Relation pg_class_desc, char relname[])
     */
    pg_class_scan = heap_beginscan(pg_class_desc,
                                   0,
-                                  false,
+                                  SnapshotNow,
                                   1,
                                   &key);
 
@@ -896,7 +896,7 @@ RelationRemoveInheritance(Relation relation)
 
    scan = heap_beginscan(catalogRelation,
                          false,
-                         false,
+                         SnapshotNow,
                          1,
                          &entry);
 
@@ -924,7 +924,7 @@ RelationRemoveInheritance(Relation relation)
 
    scan = heap_beginscan(catalogRelation,
                          false,
-                         false,
+                         SnapshotNow,
                          1,
                          &entry);
 
@@ -950,7 +950,7 @@ RelationRemoveInheritance(Relation relation)
 
    scan = heap_beginscan(catalogRelation,
                          false,
-                         false,
+                         SnapshotNow,
                          1,
                          &entry);
 
@@ -987,7 +987,7 @@ RelationRemoveIndexes(Relation relation)
 
    scan = heap_beginscan(indexRelation,
                          false,
-                         false,
+                         SnapshotNow,
                          1,
                          &entry);
 
@@ -1033,7 +1033,7 @@ DeletePgRelationTuple(Relation rdesc)
 
    pg_class_scan = heap_beginscan(pg_class_desc,
                                   0,
-                                  false,
+                                  SnapshotNow,
                                   1,
                                   &key);
 
@@ -1097,7 +1097,7 @@ DeletePgAttributeTuples(Relation rdesc)
 
    pg_attribute_scan = heap_beginscan(pg_attribute_desc,
                                       0,
-                                      false,
+                                      SnapshotNow,
                                       1,
                                       &key);
 
@@ -1166,7 +1166,7 @@ DeletePgTypeTuple(Relation rdesc)
 
    pg_type_scan = heap_beginscan(pg_type_desc,
                                  0,
-                                 false,
+                                 SnapshotNow,
                                  1,
                                  &key);
 
@@ -1202,7 +1202,7 @@ DeletePgTypeTuple(Relation rdesc)
 
    pg_attribute_scan = heap_beginscan(pg_attribute_desc,
                                       0,
-                                      false,
+                                      SnapshotNow,
                                       1,
                                       &attkey);
 
@@ -1646,7 +1646,7 @@ RemoveAttrDefault(Relation rel)
 
    RelationSetLockForWrite(adrel);
 
-   adscan = heap_beginscan(adrel, 0, false, 1, &key);
+   adscan = heap_beginscan(adrel, 0, SnapshotNow, 1, &key);
 
    while (tup = heap_getnext(adscan, 0, (Buffer *) NULL), PointerIsValid(tup))
        heap_delete(adrel, &tup->t_ctid);
@@ -1673,7 +1673,7 @@ RemoveRelCheck(Relation rel)
 
    RelationSetLockForWrite(rcrel);
 
-   rcscan = heap_beginscan(rcrel, 0, false, 1, &key);
+   rcscan = heap_beginscan(rcrel, 0, SnapshotNow, 1, &key);
 
    while (tup = heap_getnext(rcscan, 0, (Buffer *) NULL), PointerIsValid(tup))
        heap_delete(rcrel, &tup->t_ctid);
index c81f14a4f13d5fb11aa058de270ceb8a5e047ad6..00eccbac6228951379e33db0fffcb6ebb92f644c 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.46 1998/07/20 19:21:42 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.47 1998/07/27 19:37:47 vadim Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -180,7 +180,7 @@ RelationNameGetObjectId(char *relationName,
                           F_NAMEEQ,
                           PointerGetDatum(relationName));
 
-   pg_class_scan = heap_beginscan(pg_class, 0, false, 1, &key);
+   pg_class_scan = heap_beginscan(pg_class, 0, SnapshotNow, 1, &key);
 
    /* ----------------
     *  if we find the named relation, fetch its relation id
@@ -506,7 +506,7 @@ AccessMethodObjectIdGetAccessMethodTupleForm(Oid accessMethodObjectId)
     * ----------------
     */
    pg_am_desc = heap_openr(AccessMethodRelationName);
-   pg_am_scan = heap_beginscan(pg_am_desc, 0, false, 1, &key);
+   pg_am_scan = heap_beginscan(pg_am_desc, 0, SnapshotNow, 1, &key);
 
    pg_am_tuple = heap_getnext(pg_am_scan, 0, (Buffer *) NULL);
 
@@ -945,7 +945,7 @@ UpdateIndexPredicate(Oid indexoid, Node *oldPred, Node *predicate)
                           F_OIDEQ,
                           ObjectIdGetDatum(indexoid));
 
-   scan = heap_beginscan(pg_index, 0, false, 1, &entry);
+   scan = heap_beginscan(pg_index, 0, SnapshotNow, 1, &entry);
    tuple = heap_getnext(scan, 0, &buffer);
    heap_endscan(scan);
 
@@ -1238,7 +1238,7 @@ index_destroy(Oid indexId)
                           F_OIDEQ,
                           ObjectIdGetDatum(indexId));;
 
-   scan = heap_beginscan(catalogRelation, 0, false, 1, &entry);
+   scan = heap_beginscan(catalogRelation, 0, SnapshotNow, 1, &entry);
    tuple = heap_getnext(scan, 0, (Buffer *) NULL);
 
    AssertState(HeapTupleIsValid(tuple));
@@ -1255,7 +1255,7 @@ index_destroy(Oid indexId)
 
    entry.sk_attno = Anum_pg_attribute_attrelid;
 
-   scan = heap_beginscan(catalogRelation, 0, false, 1, &entry);
+   scan = heap_beginscan(catalogRelation, 0, SnapshotNow, 1, &entry);
 
    while (tuple = heap_getnext(scan, 0, (Buffer *) NULL),
           HeapTupleIsValid(tuple))
@@ -1271,7 +1271,7 @@ index_destroy(Oid indexId)
 
    entry.sk_attno = Anum_pg_index_indexrelid;
 
-   scan = heap_beginscan(catalogRelation, 0, false, 1, &entry);
+   scan = heap_beginscan(catalogRelation, 0, SnapshotNow, 1, &entry);
    tuple = heap_getnext(scan, 0, (Buffer *) NULL);
    if (!HeapTupleIsValid(tuple))
    {
@@ -1402,7 +1402,7 @@ UpdateStats(Oid relid, long reltuples, bool hasindex)
    key[0].sk_argument = ObjectIdGetDatum(relid);
 
    pg_class_scan =
-       heap_beginscan(pg_class, 0, false, 1, key);
+       heap_beginscan(pg_class, 0, SnapshotNow, 1, key);
 
    if (!HeapScanIsValid(pg_class_scan))
    {
@@ -1598,7 +1598,7 @@ DefaultBuild(Relation heapRelation,
     */
    scan = heap_beginscan(heapRelation, /* relation */
                          0,    /* start at end */
-                         false,/* seeself */
+                         SnapshotNow,/* seeself */
                          0,    /* number of keys */
                          (ScanKey) NULL);      /* scan key */
 
@@ -1812,7 +1812,7 @@ IndexIsUniqueNoCache(Oid indexId)
                           (RegProcedure) F_OIDEQ,
                           ObjectIdGetDatum(indexId));
 
-   scandesc = heap_beginscan(pg_index, 0, true, 1, skey);
+   scandesc = heap_beginscan(pg_index, 0, SnapshotSelf, 1, skey);
 
    tuple = heap_getnext(scandesc, 0, NULL);
    if (!HeapTupleIsValid(tuple))
index 7fc091b118d835aea3eab9dfa784266e3475ecbf..ae4846cb05fdf2b773b9d68a03430936c025a632 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.18 1998/06/15 19:28:09 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.19 1998/07/27 19:37:48 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -241,7 +241,7 @@ CatalogIndexFetchTuple(Relation heapRelation,
            ItemPointer iptr;
 
            iptr = &indexRes->heap_iptr;
-           tuple = heap_fetch(heapRelation, false, iptr, &buffer);
+           tuple = heap_fetch(heapRelation, SnapshotNow, iptr, &buffer);
            pfree(indexRes);
        }
        else
@@ -393,7 +393,7 @@ ProcedureNameIndexScan(Relation heapRelation,
            ItemPointer iptr;
 
            iptr = &indexRes->heap_iptr;
-           tuple = heap_fetch(heapRelation, false, iptr, &buffer);
+           tuple = heap_fetch(heapRelation, SnapshotNow, iptr, &buffer);
            pfree(indexRes);
            if (HeapTupleIsValid(tuple))
            {
@@ -458,7 +458,7 @@ ProcedureSrcIndexScan(Relation heapRelation, text *procSrc)
        ItemPointer iptr;
 
        iptr = &indexRes->heap_iptr;
-       tuple = heap_fetch(heapRelation, false, iptr, &buffer);
+       tuple = heap_fetch(heapRelation, SnapshotNow, iptr, &buffer);
        pfree(indexRes);
    }
    else
index 1a7f282bde9e4cde91ba12971107d00f764c7b12..80ffcb7d7da6c846ee528db4a2829b39c3812e33 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.25 1998/05/09 23:43:00 thomas Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.26 1998/07/27 19:37:49 vadim Exp $
  *
  * NOTES
  *   these routines moved here from commands/define.c and somewhat cleaned up.
@@ -120,7 +120,7 @@ OperatorGetWithOpenRelation(Relation pg_operator_desc,
     */
    pg_operator_scan = heap_beginscan(pg_operator_desc,
                                      0,
-                                     true,
+                                     SnapshotSelf,
                                      3,
                                      opKey);
 
@@ -705,7 +705,7 @@ OperatorDef(char *operatorName,
 
        pg_operator_scan = heap_beginscan(pg_operator_desc,
                                          0,
-                                         true,
+                                         SnapshotSelf,
                                          3,
                                          opKey);
 
@@ -804,7 +804,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
 
    pg_operator_scan = heap_beginscan(pg_operator_desc,
                                      0,
-                                     true,
+                                     SnapshotSelf,
                                      1,
                                      opKey);
 
@@ -894,7 +894,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
 
    pg_operator_scan = heap_beginscan(pg_operator_desc,
                                      0,
-                                     true,
+                                     SnapshotSelf,
                                      1,
                                      opKey);
 
index dac435f17f401113dee09015878485bf92b43c84..a9ad27a3b2d1e71e70dfe1b979f935198edf811d 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.25 1998/06/15 19:28:10 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.26 1998/07/27 19:37:49 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -68,7 +68,7 @@ TypeGetWithOpenRelation(Relation pg_type_desc,
 
    scan = heap_beginscan(pg_type_desc,
                          0,
-                         true,
+                         SnapshotSelf,
                          1,
                          typeKey);
 
@@ -470,7 +470,7 @@ TypeCreate(char *typeName,
    typeKey[0].sk_argument = PointerGetDatum(typeName);
    pg_type_scan = heap_beginscan(pg_type_desc,
                                  0,
-                                 true,
+                                 SnapshotSelf,
                                  1,
                                  typeKey);
 
index b80cbb8f345df96a99bf89f88492def89464d5d7..04d8103ee32f46f4641a93f4b756e24143f6a24b 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.35 1998/07/09 03:28:44 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.36 1998/07/27 19:37:50 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -203,7 +203,7 @@ Async_Notify(char *relname)
    lRel = heap_openr(ListenerRelationName);
    tdesc = RelationGetTupleDescriptor(lRel);
    RelationSetLockForWrite(lRel);
-   sRel = heap_beginscan(lRel, 0, false, 1, &key);
+   sRel = heap_beginscan(lRel, 0, SnapshotNow, 1, &key);
 
    nulls[0] = nulls[1] = nulls[2] = ' ';
    repl[0] = repl[1] = repl[2] = ' ';
@@ -283,7 +283,7 @@ Async_NotifyAtCommit()
                                   Int32GetDatum(1));
            lRel = heap_openr(ListenerRelationName);
            RelationSetLockForWrite(lRel);
-           sRel = heap_beginscan(lRel, 0, false, 1, &key);
+           sRel = heap_beginscan(lRel, 0, SnapshotNow, 1, &key);
            tdesc = RelationGetTupleDescriptor(lRel);
 
            while (HeapTupleIsValid(lTuple = heap_getnext(sRel, 0, &b)))
@@ -431,7 +431,7 @@ Async_Listen(char *relname, int pid)
 
    /* is someone already listening.  One listener per relation */
    tdesc = RelationGetTupleDescriptor(lDesc);
-   s = heap_beginscan(lDesc, 0, false, 0, (ScanKey) NULL);
+   s = heap_beginscan(lDesc, 0, SnapshotNow, 0, (ScanKey) NULL);
    while (HeapTupleIsValid(htup = heap_getnext(s, 0, &b)))
    {
        d = heap_getattr(htup, Anum_pg_listener_relname, tdesc,
@@ -577,7 +577,7 @@ Async_NotifyFrontEnd()
    lRel = heap_openr(ListenerRelationName);
    RelationSetLockForWrite(lRel);
    tdesc = RelationGetTupleDescriptor(lRel);
-   sRel = heap_beginscan(lRel, 0, false, 2, key);
+   sRel = heap_beginscan(lRel, 0, SnapshotNow, 2, key);
 
    nulls[0] = nulls[1] = nulls[2] = ' ';
    repl[0] = repl[1] = repl[2] = ' ';
index e95c3d7ed05a101f178d591d1e02257e2de57401..7de10c6e26c258eacca0e8db776fdc227cc967c7 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.25 1998/07/26 04:30:22 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.26 1998/07/27 19:37:50 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include <utils/excid.h>
 #include <utils/mcxt.h>
 #include <catalog/pg_proc.h>
-#ifdef MULTIBYTE
-#include <catalog/pg_class_mb.h>
-#else
 #include <catalog/pg_class.h>
-#endif
 #include <optimizer/internal.h>
 #ifndef NO_SECURITY
 #include <utils/acl.h>
@@ -358,7 +354,7 @@ rebuildheap(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex)
    {
 
        HeapTid = &ScanResult->heap_iptr;
-       LocalHeapTuple = heap_fetch(LocalOldHeap, false, HeapTid, &LocalBuffer);
+       LocalHeapTuple = heap_fetch(LocalOldHeap, SnapshotNow, HeapTid, &LocalBuffer);
        OIDNewHeapInsert =
            heap_insert(LocalNewHeap, LocalHeapTuple);
        pfree(ScanResult);
index 13d5e2adc9c7a29256f5a06608fbb0f608e010b7..c279d2fb62356711a0c5cc0d9e036b2fdfea8941 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.28 1998/06/15 19:28:12 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.29 1998/07/27 19:37:51 vadim Exp $
  *
  * NOTES
  *   The PortalExecutorHeapMemory crap needs to be eliminated
@@ -438,7 +438,7 @@ PerformAddAttribute(char *relationName,
         * XXX use syscache here as an optimization
         */
        key[1].sk_argument = (Datum) colDef->colname;
-       attsdesc = heap_beginscan(attrdesc, 0, false, 2, key);
+       attsdesc = heap_beginscan(attrdesc, 0, SnapshotNow, 2, key);
 
 
        tup = heap_getnext(attsdesc, 0, (Buffer *) NULL);
index 6789fd0696d12de7d0fcbb617db97cfeed1ddf4c..4265cdf5c02b4c66c7f28133859aae5c2dc36dc1 100644 (file)
@@ -6,7 +6,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.51 1998/07/26 04:30:23 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.52 1998/07/27 19:37:51 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "commands/trigger.h"
 #include <storage/fd.h>
 
-#ifdef MULTIBYTE
-#include "mb/pg_wchar.h"
-#endif
-
 #define ISOCTAL(c) (((c) >= '0') && ((c) <= '7'))
 #define VALUE(c) ((c) - '0')
 
@@ -65,7 +61,7 @@ static char *CopyReadAttribute(FILE *fp, bool *isnull, char *delim, int *newline
 static char *CopyReadAttribute(FILE *fp, bool *isnull, char *delim);
 
 #endif
-static void CopyAttributeOut(FILE *fp, unsigned char *string, char *delim, int is_array);
+static void CopyAttributeOut(FILE *fp, char *string, char *delim, int is_array);
 static int CountTuples(Relation relation);
 
 extern FILE *Pfout,
@@ -225,7 +221,7 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
    int32       ntuples;
    TupleDesc   tupDesc;
 
-   scandesc = heap_beginscan(rel, 0, false, 0, NULL);
+   scandesc = heap_beginscan(rel, 0, SnapshotNow, 0, NULL);
 
    attr_count = rel->rd_att->natts;
    attr = rel->rd_att->attrs;
@@ -281,7 +277,7 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp, char *delim)
                {
                    string = (char *) (*fmgr_faddr(&out_functions[i]))
                        (value, elements[i], typmod[i]);
-                   CopyAttributeOut(fp, (unsigned char*)string, delim, attr[i]->attnelems);
+                   CopyAttributeOut(fp, string, delim, attr[i]->attnelems);
                    pfree(string);
                }
                else
@@ -908,7 +904,7 @@ GetIndexRelations(Oid main_relation_oid,
    bool        isnull;
 
    pg_index_rel = heap_openr(IndexRelationName);
-   scandesc = heap_beginscan(pg_index_rel, 0, false, 0, NULL);
+   scandesc = heap_beginscan(pg_index_rel, 0, SnapshotNow, 0, NULL);
    tupDesc = RelationGetTupleDescriptor(pg_index_rel);
 
    *n_indices = 0;
@@ -1016,17 +1012,6 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
    char        c;
    int         done = 0;
    int         i = 0;
-#ifdef MULTIBYTE
-   int mblen;
-   int encoding;
-   unsigned char   s[2];
-   int j;
-#endif
-
-#ifdef MULTIBYTE
-   encoding = pg_get_client_encoding();
-   s[1] = 0;
-#endif
 
 #ifdef COPY_PATCH
    /* if last delimiter was a newline return a NULL attribute */
@@ -1044,9 +1029,9 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
    while (!done)
    {
        c = getc(fp);
+
        if (feof(fp))
            return (NULL);
-
        else if (c == '\\')
        {
            c = getc(fp);
@@ -1127,55 +1112,21 @@ CopyReadAttribute(FILE *fp, bool *isnull, char *delim)
 #endif
            done = 1;
        }
-       if (!done) {
+       if (!done)
            attribute[i++] = c;
-#ifdef MULTIBYTE
-           s[0] = c;
-           mblen = pg_encoding_mblen(encoding, s);
-           mblen--;
-           for(j=0;j<mblen;j++) {
-             c = getc(fp);
-             if (feof(fp))
-               return (NULL);
-             attribute[i++] = c;
-           }
-#endif
-       }
        if (i == EXT_ATTLEN - 1)
            elog(ERROR, "CopyReadAttribute - attribute length too long. line: %d", lineno);
    }
    attribute[i] = '\0';
-#ifdef MULTIBYTE
-   return(pg_client_to_server((unsigned char*)attribute, strlen(attribute)));
-#else
    return (&attribute[0]);
-#endif
 }
 
 static void
-CopyAttributeOut(FILE *fp, unsigned char *server_string, char *delim, int is_array)
+CopyAttributeOut(FILE *fp, char *string, char *delim, int is_array)
 {
-        unsigned char           *string;
-   unsigned char       c;
-#ifdef MULTIBYTE
-   int mblen;
-   int encoding;
-   int i;
-#endif
-
-#ifdef MULTIBYTE
-   string = pg_server_to_client(server_string, strlen(server_string));
-   encoding = pg_get_client_encoding();
-#else
-   string = server_string;
-#endif
+   char        c;
 
-#ifdef MULTIBYTE
-   for (; (mblen = pg_encoding_mblen(encoding, string)) &&
-          ((c = *string) != '\0'); string += mblen)
-#else
    for (; (c = *string) != '\0'; string++)
-#endif
    {
        if (c == delim[0] || c == '\n' ||
            (c == '\\' && !is_array))
@@ -1197,13 +1148,7 @@ CopyAttributeOut(FILE *fp, unsigned char *server_string, char *delim, int is_arr
                fputc('\\', fp);
            }
        }
-#ifdef MULTIBYTE
-       for (i=0;i<mblen;i++) {
-           fputc(*(string+i), fp);
-       }
-#else
        fputc(*string, fp);
-#endif
    }
 }
 
@@ -1221,7 +1166,7 @@ CountTuples(Relation relation)
 
    int         i;
 
-   scandesc = heap_beginscan(relation, 0, false, 0, NULL);
+   scandesc = heap_beginscan(relation, 0, SnapshotNow, 0, NULL);
 
    for (tuple = heap_getnext(scandesc, 0, NULL), i = 0;
         tuple != NULL;
index bfaa6e0294be585e7ab018cfee8f87fc4ef8c343..140050cd420f792c9ddc097c6d31f62016e5e469 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.17 1998/07/26 04:30:24 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.18 1998/07/27 19:37:52 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "access/htup.h"
 #include "access/relscan.h"
 #include "catalog/catname.h"
-#ifdef MULTIBYTE
-#include "catalog/pg_database_mb.h"
-#else
 #include "catalog/pg_database.h"
-#endif
 #include "catalog/pg_shadow.h"
 #include "commands/dbcommands.h"
 #include "fmgr.h"
@@ -47,11 +43,7 @@ static HeapTuple get_pg_dbtup(char *command, char *dbname, Relation dbrel);
 static void stop_vacuum(char *dbpath, char *dbname);
 
 void
-#ifdef MULTIBYTE
-createdb(char *dbname, char *dbpath, int encoding)
-#else
 createdb(char *dbname, char *dbpath)
-#endif
 {
    Oid         db_id,
                user_id;
@@ -98,13 +90,8 @@ createdb(char *dbname, char *dbpath)
            dbname, user_id, dbname);
 #endif
 
-#ifdef MULTIBYTE
-   sprintf(buf, "insert into pg_database (datname, datdba, encoding, datpath)"
-           " values (\'%s\', \'%d\', \'%d\', \'%s\');", dbname, user_id, encoding, loc);
-#else
    sprintf(buf, "insert into pg_database (datname, datdba, datpath)"
            " values (\'%s\', \'%d\', \'%s\');", dbname, user_id, loc);
-#endif
 
    pg_exec_query(buf);
 }
@@ -168,7 +155,7 @@ get_pg_dbtup(char *command, char *dbname, Relation dbrel)
    ScanKeyEntryInitialize(&scanKey, 0, Anum_pg_database_datname,
                           F_NAMEEQ, NameGetDatum(dbname));
 
-   scan = heap_beginscan(dbrel, 0, false, 1, &scanKey);
+   scan = heap_beginscan(dbrel, 0, SnapshotNow, 1, &scanKey);
    if (!HeapScanIsValid(scan))
        elog(ERROR, "%s: cannot begin scan of pg_database.", command);
 
index 6fef272c08b68f18b28076868605e03f0a76fc3e..1abcdae87244b98fa8ec521ac8ef8bb223f4d0cf 100644 (file)
@@ -186,7 +186,7 @@ DropProceduralLanguage(DropPLangStmt *stmt)
    ScanKeyEntryInitialize(&scanKeyData, 0, Anum_pg_language_lanname,
                           F_NAMEEQ, PointerGetDatum(languageName));
 
-   scanDesc = heap_beginscan(rdesc, 0, false, 1, &scanKeyData);
+   scanDesc = heap_beginscan(rdesc, 0, SnapshotNow, 1, &scanKeyData);
 
    tup = heap_getnext(scanDesc, 0, (Buffer *) NULL);
 
index 0a030e6570c90504a43f27ff7c9581c1e52987c7..8da3f9195870d7d180c6024b4eaff76cd9665f3e 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.25 1998/06/15 19:28:16 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.26 1998/07/27 19:37:53 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -97,7 +97,7 @@ RemoveOperator(char *operatorName,        /* operator name */
                           ObjectIdGetDatum(typeId2));
 
    relation = heap_openr(OperatorRelationName);
-   scan = heap_beginscan(relation, 0, false, 3, operatorKey);
+   scan = heap_beginscan(relation, 0, SnapshotNow, 3, operatorKey);
    tup = heap_getnext(scan, 0, &buffer);
    if (HeapTupleIsValid(tup))
    {
@@ -165,7 +165,7 @@ SingleOpOperatorRemove(Oid typeOid)
    for (i = 0; i < 3; ++i)
    {
        key[0].sk_attno = attnums[i];
-       sdesc = heap_beginscan(rdesc, 0, false, 1, key);
+       sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 1, key);
        while (PointerIsValid(tup = heap_getnext(sdesc, 0, &buffer)))
        {
            ItemPointerCopy(&tup->t_ctid, &itemPointerData);
@@ -214,7 +214,7 @@ AttributeAndRelationRemove(Oid typeOid)
    oidptr->next = NULL;
    optr = oidptr;
    rdesc = heap_openr(AttributeRelationName);
-   sdesc = heap_beginscan(rdesc, 0, false, 1, key);
+   sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 1, key);
    while (PointerIsValid(tup = heap_getnext(sdesc, 0, &buffer)))
    {
        ItemPointerCopy(&tup->t_ctid, &itemPointerData);
@@ -235,7 +235,7 @@ AttributeAndRelationRemove(Oid typeOid)
    while (PointerIsValid((char *) optr->next))
    {
        key[0].sk_argument = (Datum) (optr++)->reloid;
-       sdesc = heap_beginscan(rdesc, 0, false, 1, key);
+       sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 1, key);
        tup = heap_getnext(sdesc, 0, &buffer);
        if (PointerIsValid(tup))
        {
@@ -285,7 +285,7 @@ RemoveType(char *typeName)      /* type name to be removed */
 
    typeKey[0].sk_argument = PointerGetDatum(typeName);
 
-   scan = heap_beginscan(relation, 0, false, 1, typeKey);
+   scan = heap_beginscan(relation, 0, SnapshotNow, 1, typeKey);
    tup = heap_getnext(scan, 0, (Buffer *) 0);
    if (!HeapTupleIsValid(tup))
    {
@@ -303,7 +303,7 @@ RemoveType(char *typeName)      /* type name to be removed */
    shadow_type = makeArrayTypeName(typeName);
    typeKey[0].sk_argument = NameGetDatum(shadow_type);
 
-   scan = heap_beginscan(relation, 0, false,
+   scan = heap_beginscan(relation, 0, SnapshotNow,
                          1, (ScanKey) typeKey);
    tup = heap_getnext(scan, 0, (Buffer *) 0);
 
@@ -390,7 +390,7 @@ RemoveFunction(char *functionName,      /* function name to be removed */
    key[0].sk_nargs = key[0].sk_func.fn_nargs;
 
    relation = heap_openr(ProcedureRelationName);
-   scan = heap_beginscan(relation, 0, false, 1, key);
+   scan = heap_beginscan(relation, 0, SnapshotNow, 1, key);
 
    do
    {                           /* hope this is ok because it's indexed */
@@ -493,7 +493,7 @@ RemoveAggregate(char *aggName, char *aggType)
                           ObjectIdGetDatum(basetypeID));
 
    relation = heap_openr(AggregateRelationName);
-   scan = heap_beginscan(relation, 0, false, 2, aggregateKey);
+   scan = heap_beginscan(relation, 0, SnapshotNow, 2, aggregateKey);
    tup = heap_getnext(scan, 0, (Buffer *) 0);
    if (!HeapTupleIsValid(tup))
    {
index 30a7f605910ddcc46b4b57ae4c70b473a73bbfe7..32db700c61ca9a2e3341e3c0e8a3911eb7e28016 100644 (file)
@@ -119,7 +119,7 @@ CreateTrigger(CreateTrigStmt *stmt)
    RelationSetLockForWrite(tgrel);
    ScanKeyEntryInitialize(&key, 0, Anum_pg_trigger_tgrelid,
                           F_OIDEQ, rel->rd_id);
-   tgscan = heap_beginscan(tgrel, 0, false, 1, &key);
+   tgscan = heap_beginscan(tgrel, 0, SnapshotNow, 1, &key);
    while (tuple = heap_getnext(tgscan, 0, (Buffer *) NULL), PointerIsValid(tuple))
    {
        Form_pg_trigger pg_trigger = (Form_pg_trigger) GETSTRUCT(tuple);
@@ -275,7 +275,7 @@ DropTrigger(DropTrigStmt *stmt)
    RelationSetLockForWrite(tgrel);
    ScanKeyEntryInitialize(&key, 0, Anum_pg_trigger_tgrelid,
                           F_OIDEQ, rel->rd_id);
-   tgscan = heap_beginscan(tgrel, 0, false, 1, &key);
+   tgscan = heap_beginscan(tgrel, 0, SnapshotNow, 1, &key);
    while (tuple = heap_getnext(tgscan, 0, (Buffer *) NULL), PointerIsValid(tuple))
    {
        Form_pg_trigger pg_trigger = (Form_pg_trigger) GETSTRUCT(tuple);
@@ -340,7 +340,7 @@ RelationRemoveTriggers(Relation rel)
    ScanKeyEntryInitialize(&key, 0, Anum_pg_trigger_tgrelid,
                           F_OIDEQ, rel->rd_id);
 
-   tgscan = heap_beginscan(tgrel, 0, false, 1, &key);
+   tgscan = heap_beginscan(tgrel, 0, SnapshotNow, 1, &key);
 
    while (tup = heap_getnext(tgscan, 0, (Buffer *) NULL), PointerIsValid(tup))
        heap_delete(tgrel, &tup->t_ctid);
@@ -391,7 +391,7 @@ RelationBuildTriggers(Relation relation)
            break;
 
        iptr = &indexRes->heap_iptr;
-       tuple = heap_fetch(tgrel, false, iptr, &buffer);
+       tuple = heap_fetch(tgrel, SnapshotNow, iptr, &buffer);
        pfree(indexRes);
        if (!HeapTupleIsValid(tuple))
            continue;
index a7849d85fe0ac8602739cd7bd5dec9df67acbe7a..fe0ee30201307f5a792300122f63d1f42ad1ba36 100644 (file)
 
 #include <miscadmin.h>
 #include <catalog/catname.h>
-#ifdef MULTIBYTE
-#include <catalog/pg_database_mb.h>
-#else
 #include <catalog/pg_database.h>
-#endif
 #include <catalog/pg_shadow.h>
 #include <libpq/crypt.h>
 #include <access/heapam.h>
@@ -138,7 +134,7 @@ DefineUser(CreateUserStmt *stmt)
     */
    RelationSetLockForWrite(pg_shadow_rel);
 
-   scan = heap_beginscan(pg_shadow_rel, false, false, 0, NULL);
+   scan = heap_beginscan(pg_shadow_rel, false, SnapshotNow, 0, NULL);
    while (HeapTupleIsValid(tuple = heap_getnext(scan, 0, &buffer)))
    {
        datum = heap_getattr(tuple, Anum_pg_shadow_usename, pg_shadow_dsc, &n);
@@ -268,7 +264,7 @@ AlterUser(AlterUserStmt *stmt)
     */
    RelationSetLockForWrite(pg_shadow_rel);
 
-   scan = heap_beginscan(pg_shadow_rel, false, false, 0, NULL);
+   scan = heap_beginscan(pg_shadow_rel, false, SnapshotNow, 0, NULL);
    while (HeapTupleIsValid(tuple = heap_getnext(scan, 0, &buffer)))
    {
        datum = heap_getattr(tuple, Anum_pg_shadow_usename, pg_shadow_dsc, &n);
@@ -397,7 +393,7 @@ RemoveUser(char *user)
     */
    RelationSetLockForWrite(pg_shadow_rel);
 
-   scan = heap_beginscan(pg_shadow_rel, false, false, 0, NULL);
+   scan = heap_beginscan(pg_shadow_rel, false, SnapshotNow, 0, NULL);
    while (HeapTupleIsValid(tuple = heap_getnext(scan, 0, &buffer)))
    {
        datum = heap_getattr(tuple, Anum_pg_shadow_usename, pg_dsc, &n);
@@ -428,7 +424,7 @@ RemoveUser(char *user)
    pg_rel = heap_openr(DatabaseRelationName);
    pg_dsc = RelationGetTupleDescriptor(pg_rel);
 
-   scan = heap_beginscan(pg_rel, false, false, 0, NULL);
+   scan = heap_beginscan(pg_rel, false, SnapshotNow, 0, NULL);
    while (HeapTupleIsValid(tuple = heap_getnext(scan, 0, &buffer)))
    {
        datum = heap_getattr(tuple, Anum_pg_database_datdba, pg_dsc, &n);
index 79c0c9bbf61a093ee3b56cf1d30295ed99c159a5..40e5c3c3c3ff9f9505b15cc0f10caedae6db89ce 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.68 1998/07/26 04:30:25 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.69 1998/07/27 19:37:53 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "catalog/catalog.h"
 #include "catalog/catname.h"
 #include "catalog/index.h"
-#ifdef MULTIBYTE
-#include "catalog/pg_class_mb.h"
-#else
 #include "catalog/pg_class.h"
-#endif
 #include "catalog/pg_index.h"
 #include "catalog/pg_operator.h"
 #include "catalog/pg_statistic.h"
@@ -297,7 +293,7 @@ vc_getrels(NameData *VacRelP)
    pgclass = heap_openr(RelationRelationName);
    pgcdesc = RelationGetTupleDescriptor(pgclass);
 
-   pgcscan = heap_beginscan(pgclass, false, false, 1, &pgckey);
+   pgcscan = heap_beginscan(pgclass, false, SnapshotNow, 1, &pgckey);
 
    while (HeapTupleIsValid(pgctup = heap_getnext(pgcscan, 0, &buf)))
    {
@@ -404,7 +400,7 @@ vc_vacone(Oid relid, bool analyze, List *va_cols)
 
    pgclass = heap_openr(RelationRelationName);
    pgcdesc = RelationGetTupleDescriptor(pgclass);
-   pgcscan = heap_beginscan(pgclass, false, false, 1, &pgckey);
+   pgcscan = heap_beginscan(pgclass, false, SnapshotNow, 1, &pgckey);
 
    /*
     * Race condition -- if the pg_class tuple has gone away since the
@@ -1776,7 +1772,7 @@ vc_updstats(Oid relid, int npages, int ntups, bool hasindex, VRelStats *vacrelst
                           ObjectIdGetDatum(relid));
 
    rd = heap_openr(RelationRelationName);
-   rsdesc = heap_beginscan(rd, false, false, 1, &rskey);
+   rsdesc = heap_beginscan(rd, false, SnapshotNow, 1, &rskey);
 
    if (!HeapTupleIsValid(rtup = heap_getnext(rsdesc, 0, &rbuf)))
        elog(ERROR, "pg_class entry for relid %d vanished during vacuuming",
@@ -1799,7 +1795,7 @@ vc_updstats(Oid relid, int npages, int ntups, bool hasindex, VRelStats *vacrelst
        ScanKeyEntryInitialize(&askey, 0, Anum_pg_attribute_attrelid,
                               F_INT4EQ, relid);
 
-       asdesc = heap_beginscan(ad, false, false, 1, &askey);
+       asdesc = heap_beginscan(ad, false, SnapshotNow, 1, &askey);
 
        while (HeapTupleIsValid(atup = heap_getnext(asdesc, 0, &abuf)))
        {
@@ -1946,10 +1942,10 @@ vc_delhilowstats(Oid relid, int attcnt, int *attnums)
        ScanKeyEntryInitialize(&pgskey, 0x0, Anum_pg_statistic_starelid,
                               F_OIDEQ,
                               ObjectIdGetDatum(relid));
-       pgsscan = heap_beginscan(pgstatistic, false, false, 1, &pgskey);
+       pgsscan = heap_beginscan(pgstatistic, false, SnapshotNow, 1, &pgskey);
    }
    else
-       pgsscan = heap_beginscan(pgstatistic, false, false, 0, NULL);
+       pgsscan = heap_beginscan(pgstatistic, false, SnapshotNow, 0, NULL);
 
    while (HeapTupleIsValid(pgstup = heap_getnext(pgsscan, 0, NULL)))
    {
@@ -2158,7 +2154,7 @@ vc_getindices(Oid relid, int *nindices, Relation **Irel)
                           F_OIDEQ,
                           ObjectIdGetDatum(relid));
 
-   pgiscan = heap_beginscan(pgindex, false, false, 1, &pgikey);
+   pgiscan = heap_beginscan(pgindex, false, SnapshotNow, 1, &pgikey);
 
    while (HeapTupleIsValid(pgitup = heap_getnext(pgiscan, 0, NULL)))
    {
index 2c99433c85c88e5c842c32688a4bffe42b0591e1..210d2d5072690e259ff6adc29e14e9eb80b28c1f 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.23 1998/07/16 01:49:18 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.24 1998/07/27 19:37:54 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -56,7 +56,7 @@
 
 static Pointer
 ExecBeginScan(Relation relation, int nkeys, ScanKey skeys,
-             bool isindex, ScanDirection dir);
+             bool isindex, ScanDirection dir, Snapshot snapshot);
 static Relation ExecOpenR(Oid relationOid, bool isindex);
 
 /* ----------------------------------------------------------------
@@ -81,6 +81,7 @@ ExecOpenScanR(Oid relOid,
              ScanKey skeys,
              bool isindex,
              ScanDirection dir,
+             Snapshot snapshot,
              Relation *returnRelation, /* return */
              Pointer *returnScanDesc)  /* return */
 {
@@ -99,7 +100,8 @@ ExecOpenScanR(Oid relOid,
                             nkeys,
                             skeys,
                             isindex,
-                            dir);
+                            dir,
+                            snapshot);
 
    if (returnRelation != NULL)
        *returnRelation = relation;
@@ -153,7 +155,8 @@ ExecBeginScan(Relation relation,
              int nkeys,
              ScanKey skeys,
              bool isindex,
-             ScanDirection dir)
+             ScanDirection dir,
+             Snapshot snapshot)
 {
    Pointer     scanDesc;
 
@@ -178,7 +181,7 @@ ExecBeginScan(Relation relation,
    {
        scanDesc = (Pointer) heap_beginscan(relation,
                                            ScanDirectionIsBackward(dir),
-                                           false,
+                                           snapshot,
                                            nkeys,
                                            skeys);
    }
index 1dcd282d6c4e32a7be108e15b7ea90568627211f..04159f7ab2997adaf4fd58b38f3a70f16e4a1f0a 100644 (file)
@@ -26,7 +26,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.50 1998/07/20 16:14:13 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.51 1998/07/27 19:37:55 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -124,6 +124,8 @@ ExecutorStart(QueryDesc *queryDesc, EState *estate)
            palloc(queryDesc->plantree->nParamExec * sizeof(ParamExecData));
        memset(estate->es_param_exec_vals, 0, queryDesc->plantree->nParamExec * sizeof(ParamExecData));
    }
+   
+   estate->es_snapshot = SnapshotNow;
 
    result = InitPlan(queryDesc->operation,
                      queryDesc->parsetree,
index 0502036f9a12de48ff57c72fcd58773de26c5ae4..158f78ebcdbbfc151c7a0350dac8fd1a4975f983 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.33 1998/07/20 16:14:13 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.34 1998/07/27 19:37:56 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -750,7 +750,7 @@ ExecOpenIndices(Oid resultRelationOid,
     */
    indexSd = heap_beginscan(indexRd,   /* scan desc */
                             false,     /* scan backward flag */
-                            false,     /* see self */
+                            SnapshotNow,   /* NOW snapshot */
                             1, /* number scan keys */
                             &key);     /* scan keys */
 
index 3354224a6951a097903f62897932455eabf4bffe..51308d4101409e7114b93887e3e8d7c078ecc418 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.18 1998/06/15 19:28:22 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.19 1998/07/27 19:37:57 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -85,7 +85,8 @@ IndexNext(IndexScan *node)
    EState     *estate;
    CommonScanState *scanstate;
    IndexScanState *indexstate;
-   ScanDirection direction;
+   ScanDirection   direction;
+   Snapshot        snapshot;
    int         indexPtr;
    IndexScanDescPtr scanDescs;
    IndexScanDesc scandesc;
@@ -101,6 +102,7 @@ IndexNext(IndexScan *node)
     */
    estate = node->scan.plan.state;
    direction = estate->es_direction;
+   snapshot = estate->es_snapshot;
    scanstate = node->scan.scanstate;
    indexstate = node->indxstate;
    indexPtr = indexstate->iss_IndexPtr;
@@ -122,7 +124,8 @@ IndexNext(IndexScan *node)
     */
    while ((result = index_getnext(scandesc, direction)) != NULL)
    {
-       tuple = heap_fetch(heapRelation, false, &result->heap_iptr, &buffer);
+       tuple = heap_fetch(heapRelation, snapshot, 
+                           &result->heap_iptr, &buffer);
        /* be tidy */
        pfree(result);
 
@@ -920,6 +923,7 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
                  (ScanKey) NULL,       /* scan key */
                  0,            /* is index */
                  direction,    /* scan direction */
+                 estate->es_snapshot,  /* */
                  &currentRelation,     /* return: rel desc */
                  (Pointer *) &currentScanDesc);        /* return: scan desc */
 
@@ -958,6 +962,7 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
                          scanKeys[i],  /* scan key */
                          true, /* is index */
                          direction,    /* scan direction */
+                         estate->es_snapshot,
                          &(relationDescs[i]),  /* return: rel desc */
                          (Pointer *) &(scanDescs[i]));
            /* return: scan desc */
index 596b199ddc520e87c143e261182b48dbf5809f44..e58bc39f5e42cd5e7555dd7bbb91ee048c4d4980 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.13 1998/02/26 04:31:28 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.14 1998/07/27 19:37:57 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -139,8 +139,7 @@ ExecMaterial(Material *node)
         */
        currentScanDesc = heap_beginscan(currentRelation,       /* relation */
                                         ScanDirectionIsBackward(dir),
-       /* bkwd flag */
-                                        false, /* seeself */
+                                        SnapshotSelf,  /* seeself */
                                         0,     /* num scan keys */
                                         NULL); /* scan keys */
        matstate->csstate.css_currentRelation = currentRelation;
index 795c17e8b09aba71bb48a35e1cc3d58c63b0bfac..1ff4f1f13eb3d4686561d57ca40e85efed46f4c8 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.10 1998/06/15 19:28:22 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.11 1998/07/27 19:37:57 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -181,6 +181,7 @@ InitScanRelation(SeqScan *node, EState *estate,
                      NULL,     /* scan key */
                      0,        /* is index */
                      direction,/* scan direction */
+                     estate->es_snapshot,
                      &currentRelation, /* return: rel desc */
                      (Pointer *) &currentScanDesc);    /* return: scan desc */
 
index f372a1ebea5634bf6d6c3840317a2b597d09fa0c..104de6413bfa97da9284b7afdd020088f43db55d 100644 (file)
@@ -15,7 +15,7 @@
  *     ExecEndTee
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/Attic/nodeTee.c,v 1.18 1998/06/15 19:28:23 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/Attic/nodeTee.c,v 1.19 1998/07/27 19:37:57 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -226,10 +226,11 @@ ExecCountSlotsTee(Tee *node)
 static void
 initTeeScanDescs(Tee *node)
 {
-   TeeState   *teeState;
-   Relation    bufferRel;
-   ScanDirection dir;
-   MemoryContext orig;
+   TeeState       *teeState;
+   Relation        bufferRel;
+   ScanDirection   dir;
+   Snapshot        snapshot;
+   MemoryContext   orig;
 
    teeState = node->teestate;
    if (teeState->tee_leftScanDesc && teeState->tee_rightScanDesc)
@@ -241,23 +242,24 @@ initTeeScanDescs(Tee *node)
    bufferRel = teeState->tee_bufferRel;
    dir = ((Plan *) node)->state->es_direction; /* backwards not handled
                                                 * yet XXX */
+   snapshot = ((Plan *) node)->state->es_snapshot;
 
    if (teeState->tee_leftScanDesc == NULL)
    {
        teeState->tee_leftScanDesc = heap_beginscan(bufferRel,
                                            ScanDirectionIsBackward(dir),
-                                                   false,      /* seeself */
-                                                   0,  /* num scan keys */
-                                                   NULL        /* scan keys */
+                                           snapshot,
+                                           0,  /* num scan keys */
+                                           NULL        /* scan keys */
            );
    }
    if (teeState->tee_rightScanDesc == NULL)
    {
        teeState->tee_rightScanDesc = heap_beginscan(bufferRel,
                                            ScanDirectionIsBackward(dir),
-                                                    false,     /* seeself */
-                                                    0, /* num scan keys */
-                                                    NULL       /* scan keys */
+                                           snapshot,
+                                           0, /* num scan keys */
+                                           NULL        /* scan keys */
            );
    }
 
index 270bc23928f43eda70c0f24cef09d05fb5a719e1..3a30a8a7fdc32686a10b84e6579cc210cbba87aa 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.17 1998/07/18 04:22:31 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.18 1998/07/27 19:37:58 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -979,7 +979,7 @@ clause_pred_clause_test(Expr *predicate, Node *clause)
     * will be used to find the associated strategy numbers for the test.
     * --Nels, Jan '93
     */
-   scan = heap_beginscan(relation, false, false, 2, entry);
+   scan = heap_beginscan(relation, false, SnapshotNow, 2, entry);
    tuple = heap_getnext(scan, false, (Buffer *) NULL);
    if (!HeapTupleIsValid(tuple))
    {
@@ -1010,7 +1010,7 @@ clause_pred_clause_test(Expr *predicate, Node *clause)
                           F_OIDEQ,
                           ObjectIdGetDatum(clause_op));
 
-   scan = heap_beginscan(relation, false, false, 3, entry);
+   scan = heap_beginscan(relation, false, SnapshotNow, 3, entry);
    tuple = heap_getnext(scan, false, (Buffer *) NULL);
    if (!HeapTupleIsValid(tuple))
    {
@@ -1042,7 +1042,7 @@ clause_pred_clause_test(Expr *predicate, Node *clause)
                           F_INT2EQ,
                           Int16GetDatum(test_strategy));
 
-   scan = heap_beginscan(relation, false, false, 3, entry);
+   scan = heap_beginscan(relation, false, SnapshotNow, 3, entry);
    tuple = heap_getnext(scan, false, (Buffer *) NULL);
    if (!HeapTupleIsValid(tuple))
    {
index 43477b54dacd281ab92466e36db78afe766fa016..3e2a3a6829ce68978ba55fab1eca8202e8769072 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.17 1998/06/15 19:28:49 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.18 1998/07/27 19:38:00 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -148,7 +148,7 @@ index_info(Query *root, bool first, int relid, IdxInfoRetval *info)
                               ObjectIdGetDatum(indrelid));
 
        relation = heap_openr(IndexRelationName);
-       scan = heap_beginscan(relation, 0, false,
+       scan = heap_beginscan(relation, 0, SnapshotNow,
                              1, &indexKey);
    }
    if (!HeapScanIsValid(scan))
@@ -413,7 +413,7 @@ find_inheritance_children(Oid inhparent)
 
    key[0].sk_argument = ObjectIdGetDatum((Oid) inhparent);
    relation = heap_openr(InheritsRelationName);
-   scan = heap_beginscan(relation, 0, false, 1, key);
+   scan = heap_beginscan(relation, 0, SnapshotNow, 1, key);
    while (HeapTupleIsValid(inheritsTuple =
                            heap_getnext(scan, 0,
                                         (Buffer *) NULL)))
@@ -449,7 +449,7 @@ VersionGetParents(Oid verrelid)
    key[0].sk_nargs = key[0].sk_func.fn_nargs;
    relation = heap_openr(VersionRelationName);
    key[0].sk_argument = ObjectIdGetDatum(verrelid);
-   scan = heap_beginscan(relation, 0, false, 1, key);
+   scan = heap_beginscan(relation, 0, SnapshotNow, 1, key);
    for (;;)
    {
        versionTuple = heap_getnext(scan, 0,
index 35e686520eb034af5f324a1c7ae1d307866e038d..ffdebccb26b2ae409bba8b134f3fdddb6b34d782 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.23 1998/07/20 19:53:51 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.24 1998/07/27 19:38:02 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -547,7 +547,7 @@ func_get_candidates(char *funcname, int nargs)
            ItemPointer iptr;
 
            iptr = &indexRes->heap_iptr;
-           tuple = heap_fetch(heapRelation, false, iptr, &buffer);
+           tuple = heap_fetch(heapRelation, SnapshotNow, iptr, &buffer);
            pfree(indexRes);
            if (HeapTupleIsValid(tuple))
            {
@@ -1024,7 +1024,7 @@ find_inheritors(Oid relid, Oid **supervec)
                               F_OIDEQ,
                               ObjectIdGetDatum(relid));
 
-       inhscan = heap_beginscan(inhrel, 0, false, 1, &skey);
+       inhscan = heap_beginscan(inhrel, 0, SnapshotNow, 1, &skey);
 
        while (HeapTupleIsValid(inhtup = heap_getnext(inhscan, 0, &buf)))
        {
index d05e1adea35e2113e88257d68e1ff312ebb42e88..42e18e4d37561b0fa1429f4c321cb915a774b40f 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.13 1998/06/15 19:28:55 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.14 1998/07/27 19:38:04 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -108,7 +108,7 @@ binary_oper_get_candidates(char *opname,
    pg_operator_desc = heap_openr(OperatorRelationName);
    pg_operator_scan = heap_beginscan(pg_operator_desc,
                                      0,
-                                     TRUE,
+                                     SnapshotSelf, /* ??? */
                                      nkeys,
                                      opKey);
 
@@ -655,7 +655,7 @@ printf("unary_oper_get_candidates: start scan for '%s'\n", op);
    pg_operator_desc = heap_openr(OperatorRelationName);
    pg_operator_scan = heap_beginscan(pg_operator_desc,
                                      0,
-                                     TRUE,
+                                     SnapshotSelf, /* ??? */
                                      2,
                                      opKey);
 
index 4cf0d6be0be7d4fbcff425543db16b87b86b87e5..5464793eb3d97cfb6af18f798b9ac6938b0a8ea6 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.14 1998/04/26 04:07:07 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.15 1998/07/27 19:38:08 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -87,7 +87,7 @@ RemoveRewriteRule(char *ruleName)
    ScanKeyEntryInitialize(&scanKeyData, 0, Anum_pg_rewrite_rulename,
                           F_NAMEEQ, NameGetDatum(ruleName));
    scanDesc = heap_beginscan(RewriteRelation,
-                             0, false, 1, &scanKeyData);
+                             0, SnapshotNow, 1, &scanKeyData);
 
    tuple = heap_getnext(scanDesc, 0, (Buffer *) NULL);
 
@@ -161,7 +161,7 @@ RelationRemoveRules(Oid relid)
                           F_OIDEQ,
                           ObjectIdGetDatum(relid));
    scanDesc = heap_beginscan(RewriteRelation,
-                             0, false, 1, &scanKeyData);
+                             0, SnapshotNow, 1, &scanKeyData);
 
    for (;;)
    {
index dd9dffd58f4419ba3f86f22ef7aec2ed221b3b00..f75c22302e7957b2f63f91c33e0b5e0dfe95ce82 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.23 1998/07/26 04:30:38 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.24 1998/07/27 19:38:09 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "access/heapam.h"
 #include "catalog/catname.h"
 #include "catalog/indexing.h"
-#ifdef MULTIBYTE
-#include "catalog/pg_class_mb.h"
-#else
 #include "catalog/pg_class.h"
-#endif
 #include "catalog/pg_rewrite.h"
 #include "fmgr.h"
 #include "nodes/parsenodes.h"
@@ -109,7 +105,7 @@ IsDefinedRewriteRule(char *ruleName)
    ScanKeyEntryInitialize(&scanKey, 0, Anum_pg_rewrite_rulename,
                       F_NAMEEQ, PointerGetDatum(ruleName));
    scanDesc = heap_beginscan(RewriteRelation,
-                             0, false, 1, &scanKey);
+                             0, SnapshotNow, 1, &scanKey);
 
    tuple = heap_getnext(scanDesc, 0, (Buffer *) NULL);
 
index 472d7feaa2e25cde938239f2b845e1d0cf489029..4c74c836aeff3244d67956178f76749117a7189d 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.28 1998/07/21 06:17:35 vadim Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.29 1998/07/27 19:38:10 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -585,7 +585,6 @@ ShmemInitStruct(char *name, unsigned long size, bool *foundPtr)
    return (structPtr);
 }
 
-
 /*
  * TransactionIdIsInProgress -- is given transaction running by some backend
  *
@@ -625,3 +624,75 @@ TransactionIdIsInProgress(TransactionId xid)
    elog(ERROR, "TransactionIdIsInProgress: ShmemIndex corrupted");
    return (false);
 }
+
+#ifdef LowLevelLocking
+/*
+ * GetSnapshotData -- returns information about running transactions.
+ *
+ * InvalidTransactionId is used as terminator in snapshot->xip array.
+ * If serialized is true then XID >= current xact ID will not be
+ * placed in array. Current xact ID are never placed there (just
+ * to reduce its length, xmin/xmax may be equal to cid).
+ * MyProc->xmin will be setted if equal to InvalidTransactionId.
+ * 
+ * Yet another strange func for this place...  - vadim 07/21/98
+ */
+Snapshot
+GetSnapshotData(bool serialized)
+{
+   Snapshot        snapshot = (Snapshot) malloc(sizeof(SnapshotData));
+   TransactionId   snapshot->xip = (TransactionId*) 
+                                   malloc(32 * sizeof(TransactionId));
+   ShmemIndexEnt  *result;
+   PROC           *proc;
+   TransactionId   cid = GetCurrentTransactionId();
+   uint            count = 0;
+   unit            free = 31;
+
+   Assert(ShmemIndex);
+   
+   snapshot->xmax = cid;
+   snapshot->xmin = cid;
+
+   SpinAcquire(ShmemIndexLock);
+
+   hash_seq((HTAB *) NULL);
+   while ((result = (ShmemIndexEnt *) hash_seq(ShmemIndex)) != NULL)
+   {
+       if (result == (ShmemIndexEnt *) TRUE)
+       {
+           if (MyProc->xmin == InvalidTransactionId)
+               MyProc->xmin = snapshot->xmin;
+           SpinRelease(ShmemIndexLock);
+           snapshot->xip[count] = InvalidTransactionId;
+           return (snapshot);
+       }
+       if (result->location == INVALID_OFFSET ||
+           strncmp(result->key, "PID ", 4) != 0)
+           continue;
+       proc = (PROC *) MAKE_PTR(result->location);
+       if (proc == MyProc || proc->xid < FirstTransactionId ||
+               serialized && proc->xid >= cid)
+           continue;
+       if (proc->xid < snapshot->xmin)
+           snapshot->xmin = proc->xid;
+       else if (proc->xid > snapshot->xmax)
+           snapshot->xmax = proc->xid;
+       if (free == 0)
+       {
+           snapshot->xip = (TransactionId*) realloc(snapshot->xip, 
+                               (count + 33) * sizeof(TransactionId));
+           free = 32;
+       }
+       snapshot->xip[count] = proc->xid;
+       free--;
+       count++;
+   }
+
+   SpinRelease(ShmemIndexLock);
+   free(snapshot->xip);
+   free(snapshot);
+   elog(ERROR, "GetSnapshotData: ShmemIndex corrupted");
+   return (NULL);
+}
+#endif
index e92c75f0a346408ddccd7a9f1a3c860641f69c5e..3924330c35fc094fbc40a84b6952dce260c6a910 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.31 1998/07/21 04:17:24 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.32 1998/07/27 19:38:11 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -656,9 +656,13 @@ inv_fetchtup(LargeObjectDesc *obj_desc, Buffer *bufP)
             * For time travel, we need to use the actual time qual here,
             * rather that NowTimeQual.  We currently have no way to pass
             * a time qual in.
+            *
+            * This is now valid for snapshot !!!
+            * And should be fixed in some way...   - vadim 07/28/98
+            * 
             */
 
-           htup = heap_fetch(obj_desc->heap_r, false,
+           htup = heap_fetch(obj_desc->heap_r, SnapshotNow,
                              &(res->heap_iptr), bufP);
 
        } while (htup == (HeapTuple) NULL);
@@ -669,7 +673,7 @@ inv_fetchtup(LargeObjectDesc *obj_desc, Buffer *bufP)
    }
    else
    {
-       htup = heap_fetch(obj_desc->heap_r, false,
+       htup = heap_fetch(obj_desc->heap_r, SnapshotNow,
                          &(obj_desc->htid), bufP);
    }
 
@@ -1235,7 +1239,7 @@ _inv_getsize(Relation hreln, TupleDesc hdesc, Relation ireln)
        if (buf != InvalidBuffer)
            ReleaseBuffer(buf);
 
-       htup = heap_fetch(hreln, false, &(res->heap_iptr), &buf);
+       htup = heap_fetch(hreln, SnapshotNow, &(res->heap_iptr), &buf);
        pfree(res);
 
    } while (!HeapTupleIsValid(htup));
index d4e14fb9c4de1dc4ad9a1a08d96f2914bb43847f..fb052582e79d7fc0ba43338270620225fdf4bc64 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.39 1998/06/30 02:33:32 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.40 1998/07/27 19:38:15 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,7 +46,7 @@
  *     This is so that we can support more backends. (system-wide semaphore
  *     sets run out pretty fast.)                -ay 4/95
  *
- * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.39 1998/06/30 02:33:32 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.40 1998/07/27 19:38:15 vadim Exp $
  */
 #include <sys/time.h>
 #include <unistd.h>
@@ -252,6 +252,9 @@ InitProcess(IPCKey key)
    MyProc->pid = MyProcPid;
 #endif
    MyProc->xid = InvalidTransactionId;
+#ifdef LowLevelLocking
+   MyProc->xmin = InvalidTransactionId;
+#endif
 
    /* ----------------
     * Start keeping spin lock stats from here on.  Any botch before
@@ -479,11 +482,13 @@ ProcSleep(PROC_QUEUE *waitQueue,
    MyProc->token = token;
    MyProc->waitLock = lock;
 
+#ifndef LowLevelLocking
    /* -------------------
     * currently, we only need this for the ProcWakeup routines
     * -------------------
     */
    TransactionIdStore((TransactionId) GetCurrentTransactionId(), &MyProc->xid);
+#endif
 
    /* -------------------
     * assume that these two operations are atomic (because
index 6274d813c5d4cc174751dd95281d233c592aee0e..986f0e4d2411c420cb5642de7b2d39273b58065d 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.9 1998/06/15 19:29:36 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.10 1998/07/27 19:38:18 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -72,8 +72,8 @@ int4notin(int16 not_in_arg, char *relation_and_attr)
    /* the last argument should be a ScanKey, not an integer! - jolly */
    /* it looks like the arguments are out of order, too */
    /* but skeyData is never initialized! does this work?? - ay 2/95 */
-   scan_descriptor = heap_beginscan(relation_to_scan, false, false, 0,
-                                    &skeyData);
+   scan_descriptor = heap_beginscan(relation_to_scan, false, SnapshotNow, 
+                                    0, &skeyData);
 
    retval = true;
 
index e6509f4beb149fc9a8280dbb73e681390c2fb9b2..b3beb0b7cc528bbf385c1bc5b5e32f7505074c2f 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.20 1998/07/20 16:57:01 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.21 1998/07/27 19:38:19 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -55,7 +55,7 @@ regprocin(char *proname)
                           (RegProcedure) F_NAMEEQ,
                           (Datum) proname);
 
-   procscan = heap_beginscan(proc, 0, false, 1, &key);
+   procscan = heap_beginscan(proc, 0, SnapshotNow, 1, &key);
    if (!HeapScanIsValid(procscan))
    {
        heap_close(proc);
@@ -111,7 +111,7 @@ regprocout(RegProcedure proid)
                           (RegProcedure) F_INT4EQ,
                           (Datum) proid);
 
-   procscan = heap_beginscan(proc, 0, false, 1, &key);
+   procscan = heap_beginscan(proc, 0, SnapshotNow, 1, &key);
    if (!HeapScanIsValid(procscan))
    {
        heap_close(proc);
@@ -189,7 +189,7 @@ oid8types(Oid (*oidArray)[])
                                   (RegProcedure) F_INT4EQ,
                                   (Datum) *sp);
 
-           typescan = heap_beginscan(type, 0, false, 1, &key);
+           typescan = heap_beginscan(type, 0, SnapshotNow, 1, &key);
            if (!HeapScanIsValid(typescan))
            {
                heap_close(type);
index 3326d398f7f6684cb831d9cd2eaebd9e741870c6..d444ced1071a7c480de44708073b46a3b355d842 100644 (file)
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.19 1998/06/15 19:29:37 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.20 1998/07/27 19:38:20 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -349,7 +349,7 @@ gethilokey(Oid relid,
    key[0].sk_argument = ObjectIdGetDatum(relid);
    key[1].sk_argument = Int16GetDatum((int16) attnum);
    key[2].sk_argument = ObjectIdGetDatum(opid);
-   sdesc = heap_beginscan(rdesc, 0, false, 3, key);
+   sdesc = heap_beginscan(rdesc, 0, SnapshotNow, 3, key);
    tuple = heap_getnext(sdesc, 0, (Buffer *) NULL);
    if (!HeapTupleIsValid(tuple))
    {
index 577d33601504020ba1daa6d11d8fd7136c0b35a3..2822756786caf458f08102c56f5587631b965e1d 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.14 1998/07/20 16:57:02 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.15 1998/07/27 19:38:21 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -123,7 +123,7 @@ SetDefine(char *querystr, char *typename)
        oidKey[0].sk_argument = ObjectIdGetDatum(setoid);
        pg_proc_scan = heap_beginscan(procrel,
                                      0,
-                                     true,
+                                     SnapshotSelf,
                                      1,
                                      oidKey);
        tup = heap_getnext(pg_proc_scan, 0, &buffer);
index 9687db978a36af8157670f12954da16d0793ca1b..51e9646ffddcaf96eb9ce4bec56a26eef2250254 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.30 1998/07/20 16:57:03 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.31 1998/07/27 19:38:22 vadim Exp $
  *
  * Notes:
  *     XXX This needs to use exception.h to handle recovery when
@@ -994,7 +994,7 @@ SearchSysCache(struct catcache * cache,
         */
        MemoryContextSwitchTo(oldcxt);
 
-       sd = heap_beginscan(relation, 0, false,
+       sd = heap_beginscan(relation, 0, SnapshotNow,
                            cache->cc_nkeys, cache->cc_skey);
 
        /* should this buffer be ReleaseBuffer'd?  --djm 8/20/96 */
index 704941b51d24fc167b5e93572664faf2f47e84e4..4a17d5e0f07da98062e367379a8dbdcb31831e3c 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.43 1998/07/26 04:30:57 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.44 1998/07/27 19:38:23 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_attrdef.h"
-#ifdef MULTIBYTE
-#include "catalog/pg_attribute_mb.h"
-#else
 #include "catalog/pg_attribute.h"
-#endif
 #include "catalog/pg_index.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_class.h"
@@ -376,7 +372,7 @@ scan_pg_rel_seq(RelationBuildDescInfo buildinfo)
    if (!IsInitProcessingMode())
        RelationSetLockForRead(pg_class_desc);
    pg_class_scan =
-       heap_beginscan(pg_class_desc, 0, false, 1, &key);
+       heap_beginscan(pg_class_desc, 0, SnapshotNow, 1, &key);
    pg_class_tuple = heap_getnext(pg_class_scan, 0, &buf);
 
    /* ----------------
@@ -546,7 +542,7 @@ build_tupdesc_seq(RelationBuildDescInfo buildinfo,
     */
    pg_attribute_desc = heap_openr(AttributeRelationName);
    pg_attribute_scan =
-       heap_beginscan(pg_attribute_desc, 0, false, 1, &key);
+       heap_beginscan(pg_attribute_desc, 0, SnapshotNow, 1, &key);
 
    /* ----------------
     *  add attribute data to relation->rd_att
@@ -717,7 +713,7 @@ RelationBuildRuleLock(Relation relation)
     */
    pg_rewrite_desc = heap_openr(RewriteRelationName);
    pg_rewrite_scan =
-       heap_beginscan(pg_rewrite_desc, 0, false, 1, &key);
+       heap_beginscan(pg_rewrite_desc, 0, SnapshotNow, 1, &key);
    pg_rewrite_tupdesc =
        RelationGetTupleDescriptor(pg_rewrite_desc);
 
@@ -1705,7 +1701,7 @@ AttrDefaultFetch(Relation relation)
            break;
 
        iptr = &indexRes->heap_iptr;
-       tuple = heap_fetch(adrel, false, iptr, &buffer);
+       tuple = heap_fetch(adrel, SnapshotNow, iptr, &buffer);
        pfree(indexRes);
        if (!HeapTupleIsValid(tuple))
            continue;
@@ -1793,7 +1789,7 @@ RelCheckFetch(Relation relation)
            break;
 
        iptr = &indexRes->heap_iptr;
-       tuple = heap_fetch(rcrel, false, iptr, &buffer);
+       tuple = heap_fetch(rcrel, SnapshotNow, iptr, &buffer);
        pfree(indexRes);
        if (!HeapTupleIsValid(tuple))
            continue;
index 69d67e5e1a471a90e247f84cb88387179c77205c..377058a31b4b602f4170bc605ce1bbeced9a0e8e 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.13 1998/07/26 04:31:07 scrappy Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.14 1998/07/27 19:38:26 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "access/heapam.h"
 #include "access/xact.h"
 #include "catalog/catname.h"
-#ifdef MULTIBYTE
-#include "catalog/pg_database_mb.h"
-#include "mb/pg_wchar.h"
-#else
 #include "catalog/pg_database.h"
-#endif
 #include "fmgr.h"
 #include "miscadmin.h"
 #include "storage/bufmgr.h"
@@ -62,7 +57,7 @@ GetDatabaseInfo(char *name, Oid *owner, char *path)
    ScanKeyEntryInitialize(&scanKey, 0, Anum_pg_database_datname,
                           F_NAMEEQ, NameGetDatum(name));
 
-   scan = heap_beginscan(dbrel, 0, false, 1, &scanKey);
+   scan = heap_beginscan(dbrel, 0, SnapshotNow, 1, &scanKey);
    if (!HeapScanIsValid(scan))
        elog(ERROR, "GetDatabaseInfo: cannot begin scan of %s", DatabaseRelationName);
 
@@ -184,11 +179,7 @@ ExpandDatabasePath(char *dbpath)
  * --------------------------------
  */
 void
-#ifdef MULTIBYTE
-GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path, int *encoding)
-#else
 GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path)
-#endif
 {
    int         dbfd;
    int         fileflags;
@@ -275,25 +266,14 @@ GetRawDatabaseInfo(char *name, Oid *owner, Oid *db_id, char *path)
             * means of getting at sys cat attrs.
             */
            tup_db = (Form_pg_database) GETSTRUCT(tup);
-#ifdef MULTIBYTE
-           /* get encoding from template database.
-              This is the "default for default" for
-              create database command.
-              */
-           if (strcmp("template1",tup_db->datname.data) == 0)
-           {
-               SetTemplateEncoding(tup_db->encoding);
-           }
-#endif
+
            if (strcmp(name, tup_db->datname.data) == 0)
            {
                *db_id = tup->t_oid;
                strncpy(path, VARDATA(&(tup_db->datpath)),
                        (VARSIZE(&(tup_db->datpath)) - VARHDRSZ));
                *(path + VARSIZE(&(tup_db->datpath)) - VARHDRSZ) = '\0';
-#ifdef MULTIBYTE
-               *encoding = tup_db->encoding;
-#endif
+
                goto done;
            }
        }
index f0fff75d4ca6c3b908f40aa8ab56eec326ca4cde..a28d06db987c2fc25d3f9855275b841970dea0a4 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: heapam.h,v 1.33 1998/06/15 18:39:53 momjian Exp $
+ * $Id: heapam.h,v 1.34 1998/07/27 19:38:29 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -18,6 +18,7 @@
 #include <access/relscan.h>
 #include <storage/block.h>
 #include <utils/rel.h>
+#include <utils/tqual.h>
 
 /* ----------------------------------------------------------------
  *             heap access method statistics
@@ -247,11 +248,11 @@ extern Relation heap_openr(char *relationName);
 extern void heap_close(Relation relation);
 extern HeapScanDesc
 heap_beginscan(Relation relation, int atend,
-              bool seeself, unsigned nkeys, ScanKey key);
+              Snapshot snapshot, unsigned nkeys, ScanKey key);
 extern void heap_rescan(HeapScanDesc sdesc, bool scanFromEnd, ScanKey key);
 extern void heap_endscan(HeapScanDesc sdesc);
 extern HeapTuple heap_getnext(HeapScanDesc scandesc, int backw, Buffer *b);
-extern HeapTuple heap_fetch(Relation relation, bool seeself, ItemPointer tid, Buffer *b);
+extern HeapTuple heap_fetch(Relation relation, Snapshot snapshot, ItemPointer tid, Buffer *b);
 extern Oid heap_insert(Relation relation, HeapTuple tup);
 extern int heap_delete(Relation relation, ItemPointer tid);
 extern int
index f8d0aed604948d17538a5df6ad542e4d2a0703f4..efb970b44bd8e304d884341a646ec2a9e55c1069 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: relscan.h,v 1.10 1997/11/24 05:09:39 momjian Exp $
+ * $Id: relscan.h,v 1.11 1998/07/27 19:38:29 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -16,6 +16,7 @@
 #include <storage/buf.h>
 #include <utils/rel.h>
 #include <access/htup.h>
+#include <utils/tqual.h>
 
 typedef ItemPointerData MarkData;
 
@@ -32,8 +33,8 @@ typedef struct HeapScanDescData
    ItemPointerData rs_mctid;   /* marked current tid */
    ItemPointerData rs_mntid;   /* marked next tid */
    ItemPointerData rs_mcd;     /* marked current delta XXX ??? */
+   Snapshot    rs_snapshot;    /* snapshot to see */
    bool        rs_atend;       /* restart scan at end? */
-   bool        rs_seeself;     /* see self or not */
    uint16      rs_cdelta;      /* current delta in chain */
    uint16      rs_nkeys;       /* number of attributes in keys */
    ScanKey     rs_key;         /* key descriptors */
index 7abcb63e69754d2ffb1960fa851a7751936347de..fa24882061f4162d335256c338a5a31a5f13d7f0 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: xact.h,v 1.13 1998/04/24 14:42:55 momjian Exp $
+ * $Id: xact.h,v 1.14 1998/07/27 19:38:30 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
  */
 typedef struct TransactionStateData
 {
-   TransactionId transactionIdData;
-   CommandId   commandId;
-   CommandId   scanCommandId;
-   AbsoluteTime startTime;
-   int         state;
-   int         blockState;
+   TransactionId       transactionIdData;
+   CommandId           commandId;
+   CommandId           scanCommandId;
+   AbsoluteTime        startTime;
+   int                 state;
+   int                 blockState;
 } TransactionStateData;
 
+/*
+ * Xact isolation levels
+ */
+#define    XACT_DIRTY_READ         0       /* not implemented */
+#define    XACT_READ_COMMITTED     1
+#define    XACT_REPEATABLE_READ    2       /* not implemented */
+#define    XACT_SERIALIZED         3
+
 /* ----------------
  *     transaction states
  * ----------------
index 17ff71c2f98918ca5887f88afa155ad1c5d904e0..b9e63d1e25bd50a3012767eaa4fb2148844ce96b 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: executor.h,v 1.22 1998/04/24 14:43:07 momjian Exp $
+ * $Id: executor.h,v 1.23 1998/07/27 19:38:32 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,8 +61,8 @@
  */
 extern void
 ExecOpenScanR(Oid relOid, int nkeys, ScanKey skeys, bool isindex,
-             ScanDirection dir, Relation *returnRelation,
-             Pointer *returnScanDesc);
+             ScanDirection dir, Snapshot snapshot, 
+             Relation *returnRelation, Pointer *returnScanDesc);
 extern void ExecCloseR(Plan *node);
 extern void ExecReScan(Plan *node, ExprContext *exprCtxt, Plan *parent);
 extern HeapScanDesc
index 7decc99e298090fc8cef34a6bccbc1448d934640..533024e5833b0cb786f738c5877c228e19479e42 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: execnodes.h,v 1.15 1998/02/26 04:41:55 momjian Exp $
+ * $Id: execnodes.h,v 1.16 1998/07/27 19:38:34 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -194,19 +194,20 @@ typedef struct JunkFilter
  */
 typedef struct EState
 {
-   NodeTag     type;
-   ScanDirection es_direction;
-   List       *es_range_table;
-   RelationInfo *es_result_relation_info;
-   Relation    es_into_relation_descriptor;
-   ParamListInfo es_param_list_info;
-   ParamExecData *es_param_exec_vals;  /* this is for subselects */
-   int         es_BaseId;
-   TupleTable  es_tupleTable;
-   JunkFilter *es_junkFilter;
-   int        *es_refcount;
-   uint32      es_processed;   /* # of tuples processed */
-   Oid         es_lastoid;     /* last oid processed (by INSERT) */
+   NodeTag         type;
+   ScanDirection   es_direction;
+   Snapshot        es_snapshot;
+   List           *es_range_table;
+   RelationInfo   *es_result_relation_info;
+   Relation        es_into_relation_descriptor;
+   ParamListInfo   es_param_list_info;
+   ParamExecData  *es_param_exec_vals; /* this is for subselects */
+   int             es_BaseId;
+   TupleTable      es_tupleTable;
+   JunkFilter     *es_junkFilter;
+   int            *es_refcount;
+   uint32          es_processed;   /* # of tuples processed */
+   Oid             es_lastoid;     /* last oid processed (by INSERT) */
 } EState;
 
 /* ----------------
index f809fad7af539e7d159435324dc5caaf7441fa11..8b8b7e28488daea7a1956b5d886a9a3115dd0c67 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: proc.h,v 1.12 1998/06/30 02:33:33 momjian Exp $
+ * $Id: proc.h,v 1.13 1998/07/27 19:38:38 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -44,6 +44,14 @@ typedef struct proc
    TransactionId xid;          /* transaction currently being executed by
                                 * this proc */
 
+#ifdef LowLevelLocking
+   TransactionId   xmin;       /* minimal running XID as it was when 
+                                * we were starting our xact: vacuum
+                                * must not remove tuples deleted by
+                                * xid >= xmin !
+                                */
+#endif
+
    LOCK       *waitLock;       /* Lock we're sleeping on */
    int         token;          /* info for proc wakeup routines */
    int         pid;            /* This procs process id */
index ab14efb52e2ceace4ab16f25cc7d69f67ff030b0..8775eaf9aac231edd97fe35928f7dc212ef0c5ce 100644 (file)
@@ -3,10 +3,11 @@
  * tqual.h--
  *   POSTGRES "time" qualification definitions.
  *
+ *   Should be moved/renamed...    - vadim 07/28/98
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tqual.h,v 1.12 1998/04/24 14:43:33 momjian Exp $
+ * $Id: tqual.h,v 1.13 1998/07/27 19:38:40 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 #include <access/htup.h>
 
+typedef struct SnapshotData
+{
+   TransactionId       xmin;               /* XID < xmin are visible to me */
+   TransactionId       xmax;               /* XID > xmax are invisible to me */
+   TransactionId      *xip;                /* array of xacts in progress */
+} SnapshotData;
+
+typedef SnapshotData   *Snapshot;
+
+#define    IsSnapshotNow(snapshot)     ((Snapshot) snapshot == (Snapshot) 0x0)
+#define    IsSnapshotSelf(snapshot)    ((Snapshot) snapshot == (Snapshot) 0x1)
+#define    SnapshotNow                 ((Snapshot) 0x0)
+#define    SnapshotSelf                ((Snapshot) 0x1)
+
 extern TransactionId HeapSpecialTransactionId;
 extern CommandId HeapSpecialCommandId;
 
@@ -25,13 +40,13 @@ extern CommandId HeapSpecialCommandId;
  * Note:
  *     Assumes heap tuple is valid.
  */
-#define HeapTupleSatisfiesVisibility(tuple, seeself) \
+#define HeapTupleSatisfiesVisibility(tuple, snapshot) \
 ( \
    TransactionIdEquals((tuple)->t_xmax, AmiTransactionId) ? \
        false \
    : \
    ( \
-       ((seeself) == true || heapisoverride()) ? \
+       (IsSnapshotSelf(snapshot) || heapisoverride()) ? \
            HeapTupleSatisfiesItself(tuple) \
        : \
            HeapTupleSatisfiesNow(tuple) \