]> granicus.if.org Git - postgresql/commitdiff
Fix all the places that called heap_update() and heap_delete() without
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 23 Jan 2001 04:32:23 +0000 (04:32 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 23 Jan 2001 04:32:23 +0000 (04:32 +0000)
bothering to check the return value --- which meant that in case the
update or delete failed because of a concurrent update, you'd not find
out about it, except by observing later that the transaction produced
the wrong outcome.  There are now subroutines simple_heap_update and
simple_heap_delete that should be used anyplace that you're not prepared
to do the full nine yards of coping with concurrent updates.  In
practice, that seems to mean absolutely everywhere but the executor,
because *noplace* else was checking.

24 files changed:
src/backend/access/heap/heapam.c
src/backend/access/heap/tuptoaster.c
src/backend/catalog/aclchk.c
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/pg_largeobject.c
src/backend/catalog/pg_operator.c
src/backend/catalog/pg_type.c
src/backend/commands/analyze.c
src/backend/commands/async.c
src/backend/commands/command.c
src/backend/commands/comment.c
src/backend/commands/creatinh.c
src/backend/commands/dbcommands.c
src/backend/commands/proclang.c
src/backend/commands/remove.c
src/backend/commands/rename.c
src/backend/commands/trigger.c
src/backend/commands/user.c
src/backend/rewrite/rewriteRemove.c
src/backend/rewrite/rewriteSupport.c
src/backend/storage/large_object/inv_api.c
src/backend/utils/adt/sets.c
src/include/access/heapam.h

index c8436b709d1da6099e17bab7a0c05b4a495a4abf..9f81057d615f21754ea7ddeb431b1f6ce3e51951 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.108 2001/01/15 05:29:19 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.109 2001/01/23 04:32:20 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -1423,6 +1423,9 @@ heap_insert(Relation relation, HeapTuple tup)
 
 /*
  *     heap_delete             - delete a tuple
+ *
+ * NB: do not call this directly unless you are prepared to deal with
+ * concurrent-update conditions.  Use simple_heap_delete instead.
  */
 int
 heap_delete(Relation relation, ItemPointer tid, ItemPointer ctid)
@@ -1496,8 +1499,7 @@ l1:
        if (result != HeapTupleMayBeUpdated)
        {
                Assert(result == HeapTupleSelfUpdated || result == HeapTupleUpdated);
-               if (ctid != NULL)
-                       *ctid = tp.t_data->t_ctid;
+               *ctid = tp.t_data->t_ctid;
                LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
                ReleaseBuffer(buffer);
                return result;
@@ -1560,8 +1562,48 @@ l1:
        return HeapTupleMayBeUpdated;
 }
 
+/*
+ *     simple_heap_delete - delete a tuple
+ *
+ * This routine may be used to delete a tuple when concurrent updates of
+ * the target tuple are not expected (for example, because we have a lock
+ * on the relation associated with the tuple).  Any failure is reported
+ * via elog().
+ */
+void
+simple_heap_delete(Relation relation, ItemPointer tid)
+{
+       ItemPointerData ctid;
+       int                     result;
+
+       result = heap_delete(relation, tid, &ctid);
+       switch (result)
+       {
+               case HeapTupleSelfUpdated:
+                       /* Tuple was already updated in current command? */
+                       elog(ERROR, "simple_heap_delete: tuple already updated by self");
+                       break;
+
+               case HeapTupleMayBeUpdated:
+                       /* done successfully */
+                       break;
+
+               case HeapTupleUpdated:
+                       elog(ERROR, "simple_heap_delete: tuple concurrently updated");
+                       break;
+
+               default:
+                       elog(ERROR, "Unknown status %u from heap_delete", result);
+                       break;
+       }
+
+}
+
 /*
  *     heap_update - replace a tuple
+ *
+ * NB: do not call this directly unless you are prepared to deal with
+ * concurrent-update conditions.  Use simple_heap_update instead.
  */
 int
 heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
@@ -1643,8 +1685,7 @@ l2:
        if (result != HeapTupleMayBeUpdated)
        {
                Assert(result == HeapTupleSelfUpdated || result == HeapTupleUpdated);
-               if (ctid != NULL)
-                       *ctid = oldtup.t_data->t_ctid;
+               *ctid = oldtup.t_data->t_ctid;
                LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
                ReleaseBuffer(buffer);
                return result;
@@ -1783,6 +1824,42 @@ l2:
        return HeapTupleMayBeUpdated;
 }
 
+/*
+ *     simple_heap_update - replace a tuple
+ *
+ * This routine may be used to update a tuple when concurrent updates of
+ * the target tuple are not expected (for example, because we have a lock
+ * on the relation associated with the tuple).  Any failure is reported
+ * via elog().
+ */
+void
+simple_heap_update(Relation relation, ItemPointer otid, HeapTuple tup)
+{
+       ItemPointerData ctid;
+       int                     result;
+
+       result = heap_update(relation, otid, tup, &ctid);
+       switch (result)
+       {
+               case HeapTupleSelfUpdated:
+                       /* Tuple was already updated in current command? */
+                       elog(ERROR, "simple_heap_update: tuple already updated by self");
+                       break;
+
+               case HeapTupleMayBeUpdated:
+                       /* done successfully */
+                       break;
+
+               case HeapTupleUpdated:
+                       elog(ERROR, "simple_heap_update: tuple concurrently updated");
+                       break;
+
+               default:
+                       elog(ERROR, "Unknown status %u from heap_update", result);
+                       break;
+       }
+}
+
 /*
  *     heap_mark4update                - mark a tuple for update
  */
index 46495404b8148f2155cdcd619179e540ea37f99a..da2f9612a41b98e4559458c1f4e507ab2ec419d0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.14 2001/01/15 05:29:19 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.15 2001/01/23 04:32:20 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -937,7 +937,7 @@ toast_delete_datum(Relation rel, Datum value)
                 * Have a chunk, delete it
                 * ----------
                 */
-               heap_delete(toastrel, &toasttup.t_self, NULL);
+               simple_heap_delete(toastrel, &toasttup.t_self);
 
                ReleaseBuffer(buffer);
        }
index 67f675f0d3b8dfb9fe67a3785f4f0e0a2f5c79ff..080eb82ef0cba9f46a6c774a3ea11bf3035d271d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.44 2000/11/28 23:42:31 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.45 2001/01/23 04:32:21 tgl Exp $
  *
  * NOTES
  *       See acl.h.
@@ -139,7 +139,7 @@ ChangeAcl(char *relname,
 
        ReleaseSysCache(tuple);
 
-       heap_update(relation, &newtuple->t_self, newtuple, NULL);
+       simple_heap_update(relation, &newtuple->t_self, newtuple);
 
        /* keep the catalog indices up to date */
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices,
index b869480fe309586f234b586cc5bff99b4d874844..75307f20f20523081832c6c5a8cc358c00ff9f93 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.156 2001/01/01 21:33:31 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.157 2001/01/23 04:32:21 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -1000,7 +1000,7 @@ RelationRemoveInheritance(Relation relation)
 
        while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
        {
-               heap_delete(catalogRelation, &tuple->t_self, NULL);
+               simple_heap_delete(catalogRelation, &tuple->t_self);
                found = true;
        }
 
@@ -1023,7 +1023,9 @@ RelationRemoveInheritance(Relation relation)
                                                  &entry);
 
        while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
-               heap_delete(catalogRelation, &tuple->t_self, NULL);
+       {
+               simple_heap_delete(catalogRelation, &tuple->t_self);
+       }
 
        heap_endscan(scan);
        heap_close(catalogRelation, RowExclusiveLock);
@@ -1093,7 +1095,7 @@ DeleteRelationTuple(Relation rel)
         *      delete the relation tuple from pg_class, and finish up.
         * ----------------
         */
-       heap_delete(pg_class_desc, &tup->t_self, NULL);
+       simple_heap_delete(pg_class_desc, &tup->t_self);
        heap_freetuple(tup);
 
        heap_close(pg_class_desc, RowExclusiveLock);
@@ -1267,7 +1269,7 @@ DeleteAttributeTuples(Relation rel)
                        /*** Delete any comments associated with this attribute ***/
                        DeleteComments(tup->t_data->t_oid);
 
-                       heap_delete(pg_attribute_desc, &tup->t_self, NULL);
+                       simple_heap_delete(pg_attribute_desc, &tup->t_self);
                        heap_freetuple(tup);
                }
        }
@@ -1382,12 +1384,10 @@ DeleteTypeTuple(Relation rel)
 
        /* ----------------
         *      Ok, it's safe so we delete the relation tuple
-        *      from pg_type and finish up.  But first end the scan so that
-        *      we release the read lock on pg_type.  -mer 13 Aug 1991
+        *      from pg_type and finish up.
         * ----------------
         */
-
-       heap_delete(pg_type_desc, &tup->t_self, NULL);
+       simple_heap_delete(pg_type_desc, &tup->t_self);
 
        heap_endscan(pg_type_scan);
        heap_close(pg_type_desc, RowExclusiveLock);
@@ -1595,7 +1595,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum, char *adbin,
        if (!attStruct->atthasdef)
        {
                attStruct->atthasdef = true;
-               heap_update(attrrel, &atttup->t_self, atttup, NULL);
+               simple_heap_update(attrrel, &atttup->t_self, atttup);
                /* keep catalog indices current */
                CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices,
                                                   attridescs);
@@ -1962,7 +1962,7 @@ AddRelationRawConstraints(Relation rel,
 
        relStruct->relchecks = numchecks;
 
-       heap_update(relrel, &reltup->t_self, reltup, NULL);
+       simple_heap_update(relrel, &reltup->t_self, reltup);
 
        /* keep catalog indices current */
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices,
@@ -1990,7 +1990,9 @@ RemoveAttrDefault(Relation rel)
        adscan = heap_beginscan(adrel, 0, SnapshotNow, 1, &key);
 
        while (HeapTupleIsValid(tup = heap_getnext(adscan, 0)))
-               heap_delete(adrel, &tup->t_self, NULL);
+       {
+               simple_heap_delete(adrel, &tup->t_self);
+       }
 
        heap_endscan(adscan);
        heap_close(adrel, RowExclusiveLock);
@@ -2012,7 +2014,9 @@ RemoveRelCheck(Relation rel)
        rcscan = heap_beginscan(rcrel, 0, SnapshotNow, 1, &key);
 
        while (HeapTupleIsValid(tup = heap_getnext(rcscan, 0)))
-               heap_delete(rcrel, &tup->t_self, NULL);
+       {
+               simple_heap_delete(rcrel, &tup->t_self);
+       }
 
        heap_endscan(rcscan);
        heap_close(rcrel, RowExclusiveLock);
@@ -2049,7 +2053,9 @@ RemoveStatistics(Relation rel)
        scan = heap_beginscan(pgstatistic, false, SnapshotNow, 1, &key);
 
        while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
-               heap_delete(pgstatistic, &tuple->t_self, NULL);
+       {
+               simple_heap_delete(pgstatistic, &tuple->t_self);
+       }
 
        heap_endscan(scan);
        heap_close(pgstatistic, RowExclusiveLock);
index 3ad84b506b4a67479dabc6e7ff0c3ed7dfbe9d62..590e2a59f33037584e64cff70fce3d55a8b8c494 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.135 2001/01/18 07:29:04 inoue Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.136 2001/01/23 04:32:21 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -783,7 +783,7 @@ UpdateIndexPredicate(Oid indexoid, Node *oldPred, Node *predicate)
 
        newtup = heap_modifytuple(tuple, pg_index, values, nulls, replace);
 
-       heap_update(pg_index, &newtup->t_self, newtup, NULL);
+       simple_heap_update(pg_index, &newtup->t_self, newtup);
 
        heap_freetuple(newtup);
        ReleaseSysCache(tuple);
@@ -1085,7 +1085,7 @@ index_drop(Oid indexId)
                elog(ERROR, "index_drop: cache lookup failed for index %u",
                         indexId);
 
-       heap_delete(relationRelation, &tuple->t_self, NULL);
+       simple_heap_delete(relationRelation, &tuple->t_self);
        heap_freetuple(tuple);
 
        /*
@@ -1113,7 +1113,7 @@ index_drop(Oid indexId)
                                                                                                   Int16GetDatum(attnum),
                                                                                                           0, 0)))
        {
-               heap_delete(attributeRelation, &tuple->t_self, NULL);
+               simple_heap_delete(attributeRelation, &tuple->t_self);
                heap_freetuple(tuple);
                attnum++;
        }
@@ -1132,7 +1132,7 @@ index_drop(Oid indexId)
                elog(ERROR, "index_drop: cache lookup failed for index %u",
                         indexId);
 
-       heap_delete(indexRelation, &tuple->t_self, NULL);
+       simple_heap_delete(indexRelation, &tuple->t_self);
        heap_freetuple(tuple);
        heap_close(indexRelation, RowExclusiveLock);
 
@@ -1495,7 +1495,7 @@ setRelhasindex(Oid relid, bool hasindex)
        }
        else
        {
-               heap_update(pg_class, &tuple->t_self, tuple, NULL);
+               simple_heap_update(pg_class, &tuple->t_self, tuple);
 
                /* Keep the catalog indices up to date */
                if (!IsIgnoringSystemIndexes())
@@ -1545,7 +1545,7 @@ setNewRelfilenode(Relation relation)
                classTuple = heap_copytuple(&lockTupleData);
                ReleaseBuffer(buffer);
                ((Form_pg_class) GETSTRUCT(classTuple))->relfilenode = newrelfilenode;
-               heap_update(pg_class, &classTuple->t_self, classTuple, NULL);
+               simple_heap_update(pg_class, &classTuple->t_self, classTuple);
        }
        /* unlink old relfilenode */
        DropRelationBuffers(relation);
@@ -1751,7 +1751,7 @@ UpdateStats(Oid relid, long reltuples)
                replace[Anum_pg_class_reltuples - 1] = 'r';
                values[Anum_pg_class_reltuples - 1] = (Datum) reltuples;
                newtup = heap_modifytuple(tuple, pg_class, values, nulls, replace);
-               heap_update(pg_class, &tuple->t_self, newtup, NULL);
+               simple_heap_update(pg_class, &tuple->t_self, newtup);
                if (!IsIgnoringSystemIndexes())
                {
                        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, idescs);
index c471a9ae139fc838e951267dfc1db2760b31eb2d..45d205bb32ed8d275b0a9e51b687133ed970743c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_largeobject.c,v 1.5 2000/10/24 01:38:23 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_largeobject.c,v 1.6 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -118,7 +118,7 @@ LargeObjectDrop(Oid loid)
                pfree(indexRes);
                if (tuple.t_data != NULL)
                {
-                       heap_delete(pg_largeobject, &tuple.t_self, NULL);
+                       simple_heap_delete(pg_largeobject, &tuple.t_self);
                        ReleaseBuffer(buffer);
                        found = true;
                }
index 29f404063ff87e87cf7de163b725f32a9e7a40fe..76eaaad01c6ff8a5d96bd0d634acff3ec434039f 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.53 2000/11/16 22:30:17 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.54 2001/01/23 04:32:21 tgl Exp $
  *
  * NOTES
  *       these routines moved here from commands/define.c and somewhat cleaned up.
@@ -801,7 +801,7 @@ OperatorDef(char *operatorName,
                                                                   nulls,
                                                                   replaces);
 
-                       heap_update(pg_operator_desc, &tup->t_self, tup, NULL);
+                       simple_heap_update(pg_operator_desc, &tup->t_self, tup);
                }
                else
                        elog(ERROR, "OperatorDef: no operator %u", operatorObjectId);
@@ -935,7 +935,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
                                                                           nulls,
                                                                           replaces);
 
-                               heap_update(pg_operator_desc, &tup->t_self, tup, NULL);
+                               simple_heap_update(pg_operator_desc, &tup->t_self, tup);
 
                                if (RelationGetForm(pg_operator_desc)->relhasindex)
                                {
@@ -967,7 +967,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
                                                           nulls,
                                                           replaces);
 
-               heap_update(pg_operator_desc, &tup->t_self, tup, NULL);
+               simple_heap_update(pg_operator_desc, &tup->t_self, tup);
 
                if (RelationGetForm(pg_operator_desc)->relhasindex)
                {
@@ -1005,7 +1005,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
                                                           nulls,
                                                           replaces);
 
-               heap_update(pg_operator_desc, &tup->t_self, tup, NULL);
+               simple_heap_update(pg_operator_desc, &tup->t_self, tup);
 
                if (RelationGetForm(pg_operator_desc)->relhasindex)
                {
index f1f306424f070b6bd136baa6fec4f794926ab27d..07b2987fd9161367fcf08aab1ae06f57202fcad3 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.56 2000/11/16 22:30:17 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.57 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -490,7 +490,7 @@ TypeCreate(char *typeName,
                                                           nulls,
                                                           replaces);
 
-               heap_update(pg_type_desc, &tup->t_self, tup, NULL);
+               simple_heap_update(pg_type_desc, &tup->t_self, tup);
 
                typeObjectId = tup->t_data->t_oid;
        }
@@ -555,7 +555,7 @@ TypeRename(const char *oldTypeName, const char *newTypeName)
 
        namestrcpy(&(((Form_pg_type) GETSTRUCT(tuple))->typname), newTypeName);
 
-       heap_update(pg_type_desc, &tuple->t_self, tuple, NULL);
+       simple_heap_update(pg_type_desc, &tuple->t_self, tuple);
 
        /* update the system catalog indices */
        CatalogOpenIndices(Num_pg_type_indices, Name_pg_type_indices, idescs);
index 889cd5316e81156142cc1ff99c34219aec6f26ca..98df8370b9c88eb4581ce2b2ba763bf25202e081 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.11 2001/01/14 05:08:15 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.12 2001/01/23 04:32:22 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -664,7 +664,7 @@ del_stats(Oid relid, int attcnt, int *attnums)
                        if (i >= attcnt)
                                continue;               /* don't delete it */
                }
-               heap_delete(pgstatistic, &tuple->t_self, NULL);
+               simple_heap_delete(pgstatistic, &tuple->t_self);
        }
 
        heap_endscan(scan);
index b86f2421eb8403fd9b0cb73d6c8f25f8536f6811..a2bcbb5b663b5cac083f29b247d2ce7ba82f5916 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.74 2000/12/18 17:33:40 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.75 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -299,7 +299,7 @@ Async_Unlisten(char *relname, int pid)
                                                        0, 0);
        if (HeapTupleIsValid(lTuple))
        {
-               heap_delete(lRel, &lTuple->t_self, NULL);
+               simple_heap_delete(lRel, &lTuple->t_self);
                ReleaseSysCache(lTuple);
        }
        heap_close(lRel, AccessExclusiveLock);
@@ -349,7 +349,9 @@ Async_UnlistenAll()
        sRel = heap_beginscan(lRel, 0, SnapshotNow, 1, key);
 
        while (HeapTupleIsValid(lTuple = heap_getnext(sRel, 0)))
-               heap_delete(lRel, &lTuple->t_self, NULL);
+       {
+               simple_heap_delete(lRel, &lTuple->t_self);
+       }
 
        heap_endscan(sRel);
        heap_close(lRel, AccessExclusiveLock);
@@ -506,7 +508,7 @@ AtCommit_Notify()
                                         * just do it for any failure (certainly at least for
                                         * EPERM too...)
                                         */
-                                       heap_delete(lRel, &lTuple->t_self, NULL);
+                                       simple_heap_delete(lRel, &lTuple->t_self);
                                }
                                else
                                {
@@ -516,7 +518,7 @@ AtCommit_Notify()
                                        {
                                                rTuple = heap_modifytuple(lTuple, lRel,
                                                                                                  value, nulls, repl);
-                                               heap_update(lRel, &lTuple->t_self, rTuple, NULL);
+                                               simple_heap_update(lRel, &lTuple->t_self, rTuple);
                                                if (RelationGetForm(lRel)->relhasindex)
                                                {
                                                        Relation        idescs[Num_pg_listener_indices];
@@ -797,7 +799,7 @@ ProcessIncomingNotify(void)
                        NotifyMyFrontEnd(relname, sourcePID);
                        /* Rewrite the tuple with 0 in notification column */
                        rTuple = heap_modifytuple(lTuple, lRel, value, nulls, repl);
-                       heap_update(lRel, &lTuple->t_self, rTuple, NULL);
+                       simple_heap_update(lRel, &lTuple->t_self, rTuple);
                        if (RelationGetForm(lRel)->relhasindex)
                        {
                                Relation        idescs[Num_pg_listener_indices];
index 2808127d71e08a519fc5fb8557ee906a155015c1..a7901d0884ca0a3666312be1d3bd51e736244920 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.117 2001/01/23 01:48:16 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.118 2001/01/23 04:32:22 tgl Exp $
  *
  * NOTES
  *       The PerformAddAttribute() code, like most of the relation
@@ -467,7 +467,7 @@ AlterTableAddColumn(const char *relationName,
        newreltup = heap_copytuple(reltup);
 
        ((Form_pg_class) GETSTRUCT(newreltup))->relnatts = maxatts;
-       heap_update(rel, &newreltup->t_self, newreltup, NULL);
+       simple_heap_update(rel, &newreltup->t_self, newreltup);
 
        /* keep catalog indices current */
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, ridescs);
@@ -620,7 +620,7 @@ AlterTableAlterColumn(const char *relationName,
                        /* update to false */
                        newtuple = heap_copytuple(tuple);
                        ((Form_pg_attribute) GETSTRUCT(newtuple))->atthasdef = FALSE;
-                       heap_update(attr_rel, &tuple->t_self, newtuple, NULL);
+                       simple_heap_update(attr_rel, &tuple->t_self, newtuple);
 
                        /* keep the system catalog indices current */
                        CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices, irelations);
@@ -657,10 +657,9 @@ drop_default(Oid relid, int16 attnum)
                                                   Int16GetDatum(attnum));
 
        scan = heap_beginscan(attrdef_rel, false, SnapshotNow, 2, scankeys);
-       AssertState(scan != NULL);
 
        if (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
-               heap_delete(attrdef_rel, &tuple->t_self, NULL);
+               simple_heap_delete(attrdef_rel, &tuple->t_self);
 
        heap_endscan(scan);
 
@@ -833,7 +832,7 @@ RemoveColumnReferences(Oid reloid, int attnum, bool checkonly, HeapTuple reltup)
                        }
                        else
                        {
-                               heap_delete(rcrel, &htup->t_self, NULL);
+                               simple_heap_delete(rcrel, &htup->t_self);
                                pgcform->relchecks--;
                        }
                }
@@ -1008,7 +1007,7 @@ AlterTableDropColumn(const char *relationName,
        namestrcpy(&(attribute->attname), dropColname);
        ATTRIBUTE_DROP_COLUMN(attribute);
 
-       heap_update(attrdesc, &tup->t_self, tup, NULL);
+       simple_heap_update(attrdesc, &tup->t_self, tup);
        hasindex = (!IsIgnoringSystemIndexes() && RelationGetForm(attrdesc)->relhasindex);
        if (hasindex)
        {
@@ -1038,7 +1037,7 @@ AlterTableDropColumn(const char *relationName,
        {
                if (((Form_pg_attrdef) GETSTRUCT(tup))->adnum == attnum)
                {
-                       heap_delete(adrel, &tup->t_self, NULL);
+                       simple_heap_delete(adrel, &tup->t_self);
                        break;
                }
        }
@@ -1054,7 +1053,7 @@ AlterTableDropColumn(const char *relationName,
 
                RemoveColumnReferences(myrelid, attnum, false, reltup);
                /* update pg_class tuple */
-               heap_update(rel, &reltup->t_self, reltup, NULL);
+               simple_heap_update(rel, &reltup->t_self, reltup);
                CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, ridescs);
                CatalogIndexInsert(ridescs, Num_pg_class_indices, rel, reltup);
                CatalogCloseIndices(Num_pg_class_indices, ridescs);
@@ -1496,7 +1495,7 @@ AlterTableOwner(const char *relationName, const char *newOwnerName)
         */
        ((Form_pg_class) GETSTRUCT(tuple))->relowner = newOwnerSysid;
 
-       heap_update(class_rel, &tuple->t_self, tuple, NULL);
+       simple_heap_update(class_rel, &tuple->t_self, tuple);
 
        /* Keep the catalog indices up to date */
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, idescs);
@@ -1692,7 +1691,7 @@ AlterTableCreateToastTable(const char *relationName, bool silent)
         */
        ((Form_pg_class) GETSTRUCT(reltup))->reltoastrelid = toast_relid;
        ((Form_pg_class) GETSTRUCT(reltup))->reltoastidxid = toast_idxid;
-       heap_update(class_rel, &reltup->t_self, reltup, NULL);
+       simple_heap_update(class_rel, &reltup->t_self, reltup);
 
        /*
         * Keep catalog indices current
index 1af4ba102f7e39de2aadf1a0f9767529c1679584..46e8b8057ec7bf0dd6f3af198276c29e338c1cea 100644 (file)
@@ -6,6 +6,9 @@
  *
  * Copyright (c) 1999, PostgreSQL Global Development Group
  *
+ * IDENTIFICATION
+ *       $Header: /cvsroot/pgsql/src/backend/commands/comment.c,v 1.26 2001/01/23 04:32:21 tgl Exp $
+ *
  *-------------------------------------------------------------------------
  */
 
@@ -169,15 +172,15 @@ CreateComments(Oid oid, char *comment)
        if (HeapTupleIsValid(searchtuple))
        {
 
-               /*** If the comment is blank, call heap_delete, else heap_update ***/
+               /*** If the comment is blank, delete old entry, else update it ***/
 
                if ((comment == NULL) || (strlen(comment) == 0))
-                       heap_delete(description, &searchtuple->t_self, NULL);
+                       simple_heap_delete(description, &searchtuple->t_self);
                else
                {
                        desctuple = heap_modifytuple(searchtuple, description, values,
                                                                                 nulls, replaces);
-                       heap_update(description, &searchtuple->t_self, desctuple, NULL);
+                       simple_heap_update(description, &searchtuple->t_self, desctuple);
                        modified = TRUE;
                }
 
@@ -253,7 +256,7 @@ DeleteComments(Oid oid)
        /*** If a previous tuple exists, delete it ***/
 
        if (HeapTupleIsValid(searchtuple))
-               heap_delete(description, &searchtuple->t_self, NULL);
+               simple_heap_delete(description, &searchtuple->t_self);
 
        /*** Complete the scan, update indices, if necessary ***/
 
@@ -395,7 +398,7 @@ CommentDatabase(char *database, char *comment)
        Oid                     oid;
        bool            superuser;
        int32           dba;
-       Oid             userid;
+       Oid                     userid;
 
        /*** First find the tuple in pg_database for the database ***/
 
index 22a34d2e5a39c88213da737747213311285e212c..b9284604e72a19c3a1b61f30dce89fbb8409a5e5 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.70 2001/01/05 02:58:16 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.71 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -771,7 +771,7 @@ setRelhassubclassInRelation(Oid relationId, bool relhassubclass)
                elog(ERROR, "setRelhassubclassInRelation: cache lookup failed for relation %u", relationId);
 
        ((Form_pg_class) GETSTRUCT(tuple))->relhassubclass = relhassubclass;
-       heap_update(relationRelation, &tuple->t_self, tuple, NULL);
+       simple_heap_update(relationRelation, &tuple->t_self, tuple);
 
        /* keep the catalog indices up to date */
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, idescs);
index 6f2923e6a8d58b28143203a2166930912ebad717..bdbc21619d1239803cafee13e97c8bc82a7cb19d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.71 2001/01/14 22:14:10 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.72 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -347,7 +347,7 @@ dropdb(const char *dbname)
        }
 
        /* Remove the database's tuple from pg_database */
-       heap_delete(pgdbrel, &tup->t_self, NULL);
+       simple_heap_delete(pgdbrel, &tup->t_self);
 
        heap_endscan(pgdbscan);
 
index aead01b9736f31386d9b065d0e1b93a26f99a394..bbf008c918eb88972c9c16d930c226831872bf89 100644 (file)
@@ -179,7 +179,7 @@ DropProceduralLanguage(DropPLangStmt *stmt)
                elog(ERROR, "Language %s isn't a created procedural language",
                         languageName);
 
-       heap_delete(rel, &langTup->t_self, NULL);
+       simple_heap_delete(rel, &langTup->t_self);
 
        heap_freetuple(langTup);
        heap_close(rel, RowExclusiveLock);
index 7353ae2ca82815f11a7a271e57c7d30570e6f9fd..bfb2cd8dc915b8c64a09410a9c4763570d253099 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.57 2000/12/15 04:08:15 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.58 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -91,7 +91,7 @@ RemoveOperator(char *operatorName,            /* operator name */
 
                DeleteComments(tup->t_data->t_oid);
 
-               heap_delete(relation, &tup->t_self, NULL);
+               simple_heap_delete(relation, &tup->t_self);
 
        }
        else
@@ -154,8 +154,7 @@ SingleOpOperatorRemove(Oid typeOid)
 
                        DeleteComments(tup->t_data->t_oid);
 
-                       heap_delete(rel, &tup->t_self, NULL);
-
+                       simple_heap_delete(rel, &tup->t_self);
                }
 
                heap_endscan(scan);
@@ -266,7 +265,7 @@ RemoveType(char *typeName)          /* type name to be removed */
 
        DeleteComments(typeOid);
 
-       heap_delete(relation, &tup->t_self, NULL);
+       simple_heap_delete(relation, &tup->t_self);
 
        ReleaseSysCache(tup);
 
@@ -278,7 +277,7 @@ RemoveType(char *typeName)          /* type name to be removed */
        if (!HeapTupleIsValid(tup))
                elog(ERROR, "RemoveType: type '%s' does not exist", shadow_type);
 
-       heap_delete(relation, &tup->t_self, NULL);
+       simple_heap_delete(relation, &tup->t_self);
 
        ReleaseSysCache(tup);
 
@@ -354,7 +353,7 @@ RemoveFunction(char *functionName,          /* function name to be removed */
 
        DeleteComments(tup->t_data->t_oid);
 
-       heap_delete(relation, &tup->t_self, NULL);
+       simple_heap_delete(relation, &tup->t_self);
 
        ReleaseSysCache(tup);
 
@@ -428,7 +427,7 @@ RemoveAggregate(char *aggName, char *aggType)
 
        DeleteComments(tup->t_data->t_oid);
 
-       heap_delete(relation, &tup->t_self, NULL);
+       simple_heap_delete(relation, &tup->t_self);
 
        ReleaseSysCache(tup);
 
index 3722948047b16ea1e8f49f2fb8fecf74869dfea0..8bf47473caac08e1e1708073d7d6051da4ddae7e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.53 2000/11/16 22:30:18 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.54 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -152,7 +152,7 @@ renameatt(char *relname,
        StrNCpy(NameStr(((Form_pg_attribute) GETSTRUCT(atttup))->attname),
                        newattname, NAMEDATALEN);
 
-       heap_update(attrelation, &atttup->t_self, atttup, NULL);
+       simple_heap_update(attrelation, &atttup->t_self, atttup);
 
        /* keep system catalog indices current */
        {
@@ -250,7 +250,7 @@ renamerel(const char *oldrelname, const char *newrelname)
        StrNCpy(NameStr(((Form_pg_class) GETSTRUCT(reltup))->relname),
                        newrelname, NAMEDATALEN);
 
-       heap_update(relrelation, &reltup->t_self, reltup, NULL);
+       simple_heap_update(relrelation, &reltup->t_self, reltup);
 
        /* keep the system catalog indices current */
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, irelations);
index ccb2aa5fce3806c0a75ded1d9889d9158c6d1c2e..2775de5e70ec4137425ab086781c7deead2d91ad 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.83 2001/01/22 00:50:07 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.84 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -277,7 +277,7 @@ CreateTrigger(CreateTrigStmt *stmt)
                         stmt->relname);
 
        ((Form_pg_class) GETSTRUCT(tuple))->reltriggers = found + 1;
-       heap_update(pgrel, &tuple->t_self, tuple, NULL);
+       simple_heap_update(pgrel, &tuple->t_self, tuple);
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, ridescs);
        CatalogIndexInsert(ridescs, Num_pg_class_indices, pgrel, tuple);
        CatalogCloseIndices(Num_pg_class_indices, ridescs);
@@ -333,7 +333,7 @@ DropTrigger(DropTrigStmt *stmt)
 
                        DeleteComments(tuple->t_data->t_oid);
 
-                       heap_delete(tgrel, &tuple->t_self, NULL);
+                       simple_heap_delete(tgrel, &tuple->t_self);
                        tgfound++;
                }
                else
@@ -362,7 +362,7 @@ DropTrigger(DropTrigStmt *stmt)
                         stmt->relname);
 
        ((Form_pg_class) GETSTRUCT(tuple))->reltriggers = found;
-       heap_update(pgrel, &tuple->t_self, tuple, NULL);
+       simple_heap_update(pgrel, &tuple->t_self, tuple);
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, ridescs);
        CatalogIndexInsert(ridescs, Num_pg_class_indices, pgrel, tuple);
        CatalogCloseIndices(Num_pg_class_indices, ridescs);
@@ -404,7 +404,7 @@ RelationRemoveTriggers(Relation rel)
 
                DeleteComments(tup->t_data->t_oid);
 
-               heap_delete(tgrel, &tup->t_self, NULL);
+               simple_heap_delete(tgrel, &tup->t_self);
 
                found = true;
        }
@@ -435,7 +435,7 @@ RelationRemoveTriggers(Relation rel)
                                 RelationGetRelid(rel));
 
                ((Form_pg_class) GETSTRUCT(tup))->reltriggers = 0;
-               heap_update(pgrel, &tup->t_self, tup, NULL);
+               simple_heap_update(pgrel, &tup->t_self, tup);
                CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, ridescs);
                CatalogIndexInsert(ridescs, Num_pg_class_indices, pgrel, tup);
                CatalogCloseIndices(Num_pg_class_indices, ridescs);
index 27f1d3c2e16114ab84cc6ffdf5dd2d5304137af3..e0cadbde95a390fbd9aca611a60da2b401658906 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.71 2001/01/17 17:26:44 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.72 2001/01/23 04:32:21 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -458,10 +458,7 @@ AlterUser(AlterUserStmt *stmt)
        }
 
        new_tuple = heap_formtuple(pg_shadow_dsc, new_record, new_record_nulls);
-       Assert(new_tuple);
-       /* XXX check return value of this? */
-       heap_update(pg_shadow_rel, &tuple->t_self, new_tuple, NULL);
-
+       simple_heap_update(pg_shadow_rel, &tuple->t_self, new_tuple);
 
        /* Update indexes */
        if (RelationGetForm(pg_shadow_rel)->relhasindex)
@@ -581,7 +578,7 @@ DropUser(DropUserStmt *stmt)
                /*
                 * Remove the user from the pg_shadow table
                 */
-               heap_delete(pg_shadow_rel, &tuple->t_self, NULL);
+               simple_heap_delete(pg_shadow_rel, &tuple->t_self);
 
                ReleaseSysCache(tuple);
 
@@ -929,7 +926,7 @@ AlterGroup(AlterGroupStmt *stmt, const char *tag)
                new_record[Anum_pg_group_grolist - 1] = PointerGetDatum(newarray);
 
                tuple = heap_formtuple(pg_group_dsc, new_record, new_record_nulls);
-               heap_update(pg_group_rel, &group_tuple->t_self, tuple, NULL);
+               simple_heap_update(pg_group_rel, &group_tuple->t_self, tuple);
 
                /* Update indexes */
                if (RelationGetForm(pg_group_rel)->relhasindex)
@@ -1035,7 +1032,7 @@ AlterGroup(AlterGroupStmt *stmt, const char *tag)
                        new_record[Anum_pg_group_grolist - 1] = PointerGetDatum(newarray);
 
                        tuple = heap_formtuple(pg_group_dsc, new_record, new_record_nulls);
-                       heap_update(pg_group_rel, &group_tuple->t_self, tuple, NULL);
+                       simple_heap_update(pg_group_rel, &group_tuple->t_self, tuple);
 
                        /* Update indexes */
                        if (RelationGetForm(pg_group_rel)->relhasindex)
@@ -1093,7 +1090,7 @@ DropGroup(DropGroupStmt *stmt)
                if (datum && !null && strcmp((char *) datum, stmt->name) == 0)
                {
                        gro_exists = true;
-                       heap_delete(pg_group_rel, &tuple->t_self, NULL);
+                       simple_heap_delete(pg_group_rel, &tuple->t_self);
                }
        }
 
index 760614461cda72c482beb864dc8ff0b8be536911..19334d7975e605a3a2aa085264878fe58fc1578e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.41 2000/11/16 22:30:29 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteRemove.c,v 1.42 2001/01/23 04:32:22 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -124,7 +124,7 @@ RemoveRewriteRule(char *ruleName)
        /*
         * Now delete the pg_rewrite tuple for the rule
         */
-       heap_delete(RewriteRelation, &tuple->t_self, NULL);
+       simple_heap_delete(RewriteRelation, &tuple->t_self);
 
        heap_freetuple(tuple);
 
@@ -181,8 +181,7 @@ RelationRemoveRules(Oid relid)
 
                DeleteComments(tuple->t_data->t_oid);
 
-               heap_delete(RewriteRelation, &tuple->t_self, NULL);
-
+               simple_heap_delete(RewriteRelation, &tuple->t_self);
        }
 
        heap_endscan(scanDesc);
index 30e4ba6e603cc3cbd3d17b20bb9860051ca83e25..b4d94023cb383ae10f0ec3457e4d3c211fcb9859 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.45 2000/11/16 22:30:29 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteSupport.c,v 1.46 2001/01/23 04:32:23 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -66,7 +66,7 @@ SetRelationRuleStatus(Oid relationId, bool relHasRules,
        if (relIsBecomingView)
                ((Form_pg_class) GETSTRUCT(tuple))->relkind = RELKIND_VIEW;
 
-       heap_update(relationRelation, &tuple->t_self, tuple, NULL);
+       simple_heap_update(relationRelation, &tuple->t_self, tuple);
 
        /* Keep the catalog indices up to date */
        CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices, idescs);
index a4be699f420b971f50389c5731c33bc4cd6d339d..1c8ef0dd40d3198bea0a93eb676d39dfedd9644b 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.82 2001/01/21 03:50:25 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/storage/large_object/inv_api.c,v 1.83 2001/01/23 04:32:23 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -522,7 +522,7 @@ inv_write(LargeObjectDesc *obj_desc, char *buf, int nbytes)
                        replace[Anum_pg_largeobject_data - 1] = 'r';
                        newtup = heap_modifytuple(&oldtuple, obj_desc->heap_r,
                                                                          values, nulls, replace);
-                       heap_update(obj_desc->heap_r, &newtup->t_self, newtup, NULL);
+                       simple_heap_update(obj_desc->heap_r, &newtup->t_self, newtup);
                        if (write_indices)
                                CatalogIndexInsert(idescs, Num_pg_largeobject_indices,
                                                                   obj_desc->heap_r, newtup);
index 6f64847dcab97d148fa4d5faa03c25ef7387284d..5c107eaf68711dd4f4c5ccae4626eb1b1c4fa35b 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.34 2000/11/16 22:30:31 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.35 2001/01/23 04:32:23 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -113,7 +113,7 @@ SetDefine(char *querystr, char *typename)
                                                                  replNull,
                                                                  repl);
 
-               heap_update(procrel, &newtup->t_self, newtup, NULL);
+               simple_heap_update(procrel, &newtup->t_self, newtup);
 
                setoid = newtup->t_data->t_oid;
 
index 7618cc55ae5e661ebdbe1347b55511926deccca0..461599cee126494a0af3dfcffb82f404ee6227f7 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: heapam.h,v 1.60 2000/12/27 23:59:13 tgl Exp $
+ * $Id: heapam.h,v 1.61 2001/01/23 04:32:23 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -209,6 +209,9 @@ extern int  heap_delete(Relation relation, ItemPointer tid, ItemPointer ctid);
 extern int heap_update(Relation relation, ItemPointer otid, HeapTuple tup,
                        ItemPointer ctid);
 extern int     heap_mark4update(Relation relation, HeapTuple tup, Buffer *userbuf);
+extern void simple_heap_delete(Relation relation, ItemPointer tid);
+extern void simple_heap_update(Relation relation, ItemPointer otid,
+                                                          HeapTuple tup);
 extern void heap_markpos(HeapScanDesc scan);
 extern void heap_restrpos(HeapScanDesc scan);