Minor code cleanup/beautification in RelationPutHeapTuple.
authorTom Lane
Fri, 13 Jul 2001 22:52:58 +0000 (22:52 +0000)
committerTom Lane
Fri, 13 Jul 2001 22:52:58 +0000 (22:52 +0000)
src/backend/access/heap/hio.c

index 82b1ec50f61fbc40087cdfe5daea55974ead28a6..81a559b37e46becf9c3e906fed7d60338a07e7c2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Id: hio.c,v 1.41 2001/06/29 21:08:23 tgl Exp $
+ *   $Id: hio.c,v 1.42 2001/07/13 22:52:58 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -25,8 +25,7 @@
  *
  * !!! ELOG(ERROR) IS DISALLOWED HERE !!!
  *
- * Note - we assume that caller hold BUFFER_LOCK_EXCLUSIVE on the buffer.
- *
+ * Note - caller must hold BUFFER_LOCK_EXCLUSIVE on the buffer.
  */
 void
 RelationPutHeapTuple(Relation relation,
@@ -35,7 +34,6 @@ RelationPutHeapTuple(Relation relation,
 {
    Page        pageHeader;
    OffsetNumber offnum;
-   Size        len;
    ItemId      itemId;
    Item        item;
 
@@ -45,24 +43,22 @@ RelationPutHeapTuple(Relation relation,
    IncrHeapAccessStat(local_RelationPutHeapTuple);
    IncrHeapAccessStat(global_RelationPutHeapTuple);
 
-   pageHeader = (Page) BufferGetPage(buffer);
-   len = MAXALIGN(tuple->t_len);       /* be conservative */
-   Assert(len <= PageGetFreeSpace(pageHeader));
+   /* Add the tuple to the page */
+   pageHeader = BufferGetPage(buffer);
 
-   offnum = PageAddItem((Page) pageHeader, (Item) tuple->t_data,
+   offnum = PageAddItem(pageHeader, (Item) tuple->t_data,
                         tuple->t_len, InvalidOffsetNumber, LP_USED);
 
    if (offnum == InvalidOffsetNumber)
        elog(STOP, "RelationPutHeapTuple: failed to add tuple");
 
-   itemId = PageGetItemId((Page) pageHeader, offnum);
-   item = PageGetItem((Page) pageHeader, itemId);
-
-   ItemPointerSet(&((HeapTupleHeader) item)->t_ctid,
-                  BufferGetBlockNumber(buffer), offnum);
+   /* Update tuple->t_self to the actual position where it was stored */
+   ItemPointerSet(&(tuple->t_self), BufferGetBlockNumber(buffer), offnum);
 
-   /* return an accurate tuple */
-   ItemPointerSet(&tuple->t_self, BufferGetBlockNumber(buffer), offnum);
+   /* Insert the correct position into CTID of the stored tuple, too */
+   itemId = PageGetItemId(pageHeader, offnum);
+   item = PageGetItem(pageHeader, itemId);
+   ((HeapTupleHeader) item)->t_ctid = tuple->t_self;
 }
 
 /*