Remove the t_datamcxt field of HeapTupleData. This was introduced for
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 Nov 2005 19:49:08 +0000 (19:49 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 Nov 2005 19:49:08 +0000 (19:49 +0000)
the convenience of tuptoaster.c and is no longer needed, so may as well
get rid of some small amount of overhead.

13 files changed:
src/backend/access/common/heaptuple.c
src/backend/access/heap/heapam.c
src/backend/access/heap/tuptoaster.c
src/backend/access/index/genam.c
src/backend/commands/trigger.c
src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c
src/backend/executor/nodeHash.c
src/backend/executor/nodeHashjoin.c
src/backend/utils/cache/relcache.c
src/backend/utils/sort/tuplesort.c
src/backend/utils/sort/tuplestore.c
src/include/access/htup.h

index 5551f744bb21f4843d8a35a6425f39bed37666c1..69634b5763f13c18afcf70c63cddcc9e5ea19d10 100644 (file)
@@ -16,7 +16,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/access/common/heaptuple.c,v 1.102 2005/10/19 22:30:30 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/access/common/heaptuple.c,v 1.103 2005/11/20 19:49:06 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -623,7 +623,6 @@ heap_copytuple(HeapTuple tuple)
    newTuple->t_len = tuple->t_len;
    newTuple->t_self = tuple->t_self;
    newTuple->t_tableOid = tuple->t_tableOid;
-   newTuple->t_datamcxt = CurrentMemoryContext;
    newTuple->t_data = (HeapTupleHeader) ((char *) newTuple + HEAPTUPLESIZE);
    memcpy((char *) newTuple->t_data, (char *) tuple->t_data, tuple->t_len);
    return newTuple;
@@ -647,7 +646,6 @@ heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest)
    dest->t_len = src->t_len;
    dest->t_self = src->t_self;
    dest->t_tableOid = src->t_tableOid;
-   dest->t_datamcxt = CurrentMemoryContext;
    dest->t_data = (HeapTupleHeader) palloc(src->t_len);
    memcpy((char *) dest->t_data, (char *) src->t_data, src->t_len);
 }
@@ -725,7 +723,6 @@ heap_form_tuple(TupleDesc tupleDescriptor,
     * HeapTupleData management structure are allocated in one chunk.
     */
    tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + len);
-   tuple->t_datamcxt = CurrentMemoryContext;
    tuple->t_data = td = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE);
 
    /*
@@ -833,7 +830,6 @@ heap_formtuple(TupleDesc tupleDescriptor,
     * HeapTupleData management structure are allocated in one chunk.
     */
    tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + len);
-   tuple->t_datamcxt = CurrentMemoryContext;
    tuple->t_data = td = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE);
 
    /*
@@ -1516,11 +1512,6 @@ slot_attisnull(TupleTableSlot *slot, int attnum)
 void
 heap_freetuple(HeapTuple htup)
 {
-   if (htup->t_data != NULL)
-       if (htup->t_datamcxt != NULL && (char *) (htup->t_data) !=
-           ((char *) htup + HEAPTUPLESIZE))
-           pfree(htup->t_data);
-
    pfree(htup);
 }
 
@@ -1559,7 +1550,6 @@ heap_addheader(int natts,     /* max domain index */
    len = hoff + structlen;
 
    tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + len);
-   tuple->t_datamcxt = CurrentMemoryContext;
    tuple->t_data = td = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE);
 
    tuple->t_len = len;
index fc750884c75647bc3ed249276d70ae535e75bf6c..3b4de80b7b886ba184e5670f945b2f7572089060 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.201 2005/11/20 18:38:20 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.202 2005/11/20 19:49:07 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -78,7 +78,6 @@ initscan(HeapScanDesc scan, ScanKey key)
     */
    scan->rs_nblocks = RelationGetNumberOfBlocks(scan->rs_rd);
 
-   scan->rs_ctup.t_datamcxt = NULL;
    scan->rs_ctup.t_data = NULL;
    scan->rs_cbuf = InvalidBuffer;
 
@@ -129,8 +128,9 @@ heapgettup(Relation relation,
    /*
     * debugging stuff
     *
-    * check validity of arguments, here and for other functions too Note: no
-    * locking manipulations needed--this is a local function
+    * check validity of arguments, here and for other functions too
+    *
+    * Note: no locking manipulations needed--this is a local function
     */
 #ifdef HEAPDEBUGALL
    if (ItemPointerIsValid(tid))
@@ -164,7 +164,6 @@ heapgettup(Relation relation,
        if (BufferIsValid(*buffer))
            ReleaseBuffer(*buffer);
        *buffer = InvalidBuffer;
-       tuple->t_datamcxt = NULL;
        tuple->t_data = NULL;
        return;
    }
@@ -182,7 +181,6 @@ heapgettup(Relation relation,
            if (BufferIsValid(*buffer))
                ReleaseBuffer(*buffer);
            *buffer = InvalidBuffer;
-           tuple->t_datamcxt = NULL;
            tuple->t_data = NULL;
            return;
        }
@@ -197,7 +195,6 @@ heapgettup(Relation relation,
        lineoff = ItemPointerGetOffsetNumber(tid);
        lpp = PageGetItemId(dp, lineoff);
 
-       tuple->t_datamcxt = NULL;
        tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp);
        tuple->t_len = ItemIdGetLength(lpp);
        LockBuffer(*buffer, BUFFER_LOCK_UNLOCK);
@@ -293,7 +290,6 @@ heapgettup(Relation relation,
            {
                bool        valid;
 
-               tuple->t_datamcxt = NULL;
                tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lpp);
                tuple->t_len = ItemIdGetLength(lpp);
                ItemPointerSet(&(tuple->t_self), page, lineoff);
@@ -340,7 +336,6 @@ heapgettup(Relation relation,
            if (BufferIsValid(*buffer))
                ReleaseBuffer(*buffer);
            *buffer = InvalidBuffer;
-           tuple->t_datamcxt = NULL;
            tuple->t_data = NULL;
            return;
        }
@@ -872,7 +867,6 @@ heap_release_fetch(Relation relation,
            ReleaseBuffer(buffer);
            *userbuf = InvalidBuffer;
        }
-       tuple->t_datamcxt = NULL;
        tuple->t_data = NULL;
        return false;
    }
@@ -895,7 +889,6 @@ heap_release_fetch(Relation relation,
            ReleaseBuffer(buffer);
            *userbuf = InvalidBuffer;
        }
-       tuple->t_datamcxt = NULL;
        tuple->t_data = NULL;
        return false;
    }
@@ -903,7 +896,6 @@ heap_release_fetch(Relation relation,
    /*
     * fill in *tuple fields
     */
-   tuple->t_datamcxt = NULL;
    tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp);
    tuple->t_len = ItemIdGetLength(lp);
    tuple->t_tableOid = RelationGetRelid(relation);
@@ -1027,7 +1019,6 @@ heap_get_latest_tid(Relation relation,
 
        /* OK to access the tuple */
        tp.t_self = ctid;
-       tp.t_datamcxt = NULL;
        tp.t_data = (HeapTupleHeader) PageGetItem(dp, lp);
        tp.t_len = ItemIdGetLength(lp);
 
@@ -1303,7 +1294,6 @@ heap_delete(Relation relation, ItemPointer tid,
    dp = (PageHeader) BufferGetPage(buffer);
    lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid));
 
-   tp.t_datamcxt = NULL;
    tp.t_data = (HeapTupleHeader) PageGetItem(dp, lp);
    tp.t_len = ItemIdGetLength(lp);
    tp.t_self = *tid;
@@ -1612,7 +1602,6 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup,
    dp = (PageHeader) BufferGetPage(buffer);
    lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(otid));
 
-   oldtup.t_datamcxt = NULL;
    oldtup.t_data = (HeapTupleHeader) PageGetItem(dp, lp);
    oldtup.t_len = ItemIdGetLength(lp);
    oldtup.t_self = *otid;
@@ -2093,7 +2082,6 @@ heap_lock_tuple(Relation relation, HeapTuple tuple, Buffer *buffer,
    lp = PageGetItemId(dp, ItemPointerGetOffsetNumber(tid));
    Assert(ItemIdIsUsed(lp));
 
-   tuple->t_datamcxt = NULL;
    tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp);
    tuple->t_len = ItemIdGetLength(lp);
    tuple->t_tableOid = RelationGetRelid(relation);
@@ -2476,13 +2464,11 @@ heap_restrpos(HeapScanDesc scan)
 
    if (!ItemPointerIsValid(&scan->rs_mctid))
    {
-       scan->rs_ctup.t_datamcxt = NULL;
        scan->rs_ctup.t_data = NULL;
    }
    else
    {
        scan->rs_ctup.t_self = scan->rs_mctid;
-       scan->rs_ctup.t_datamcxt = NULL;
        scan->rs_ctup.t_data = (HeapTupleHeader) 0x1;   /* for heapgettup */
        heapgettup(scan->rs_rd,
                   0,
index 99d725c27ccd48543952fb4ff8562f28eba3b6bb..c18ea54282c7cb0a56464779ba9b928719c85bba 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.54 2005/11/20 18:38:20 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.55 2005/11/20 19:49:07 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -774,7 +774,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
        result_tuple->t_len = new_len;
        result_tuple->t_self = newtup->t_self;
        result_tuple->t_tableOid = newtup->t_tableOid;
-       result_tuple->t_datamcxt = CurrentMemoryContext;
        new_data = (HeapTupleHeader) ((char *) result_tuple + HEAPTUPLESIZE);
        result_tuple->t_data = new_data;
 
index ed604f9c5dcdc4946dbdf5bbf25fd4a3eaa5e5a1..5563b9d597514cab7ffd122ae75d6edadd911e8b 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/access/index/genam.c,v 1.49 2005/10/15 02:49:09 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/access/index/genam.c,v 1.50 2005/11/20 19:49:07 tgl Exp $
  *
  * NOTES
  *   many of the old access method routines have been turned into
@@ -98,7 +98,6 @@ RelationGetIndexScan(Relation indexRelation,
    ItemPointerSetInvalid(&scan->currentMarkData);
 
    ItemPointerSetInvalid(&scan->xs_ctup.t_self);
-   scan->xs_ctup.t_datamcxt = NULL;
    scan->xs_ctup.t_data = NULL;
    scan->xs_cbuf = InvalidBuffer;
 
index a3f7c37dc284c6ac02e145f578e7f6750b404b28..81463abba83f4700c6757680b56b908aa9b42bc6 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.195 2005/10/15 02:49:15 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.196 2005/11/20 19:49:07 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1769,7 +1769,6 @@ ltrmark:;
 
        Assert(ItemIdIsUsed(lp));
 
-       tuple.t_datamcxt = NULL;
        tuple.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp);
        tuple.t_len = ItemIdGetLength(lp);
        tuple.t_self = *tid;
index 506eb23e7070baa06d322a3919b15d292dfa0d67..af384cebcd3e6eef944a67e864d1a4197cc5114c 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.317 2005/10/15 02:49:16 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.318 2005/11/20 19:49:07 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1338,7 +1338,6 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
                continue;
            }
 
-           tuple.t_datamcxt = NULL;
            tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid);
            tuple.t_len = ItemIdGetLength(itemid);
            ItemPointerSet(&(tuple.t_self), blkno, offnum);
@@ -1758,7 +1757,6 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
            if (!ItemIdIsUsed(itemid))
                continue;
 
-           tuple.t_datamcxt = NULL;
            tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid);
            tuple_len = tuple.t_len = ItemIdGetLength(itemid);
            ItemPointerSet(&(tuple.t_self), blkno, offnum);
@@ -1937,7 +1935,6 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
                        break;
                    }
                    /* OK, switch our attention to the next tuple in chain */
-                   tp.t_datamcxt = NULL;
                    tp.t_data = nextTdata;
                    tp.t_self = nextTid;
                    tlen = tp.t_len = ItemIdGetLength(nextItemid);
@@ -2064,7 +2061,6 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
                        chain_move_failed = true;
                        break;  /* out of check-all-items loop */
                    }
-                   tp.t_datamcxt = NULL;
                    tp.t_data = PTdata;
                    tlen = tp.t_len = ItemIdGetLength(Pitemid);
                    if (freeCbuf)
@@ -2122,7 +2118,6 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
 
                    Citemid = PageGetItemId(Cpage,
                                ItemPointerGetOffsetNumber(&(tuple.t_self)));
-                   tuple.t_datamcxt = NULL;
                    tuple.t_data = (HeapTupleHeader) PageGetItem(Cpage, Citemid);
                    tuple_len = tuple.t_len = ItemIdGetLength(Citemid);
 
@@ -2582,7 +2577,6 @@ move_chain_tuple(Relation rel,
    newitemid = PageGetItemId(dst_page, newoff);
    /* drop temporary copy, and point to the version on the dest page */
    pfree(newtup.t_data);
-   newtup.t_datamcxt = NULL;
    newtup.t_data = (HeapTupleHeader) PageGetItem(dst_page, newitemid);
 
    ItemPointerSet(&(newtup.t_self), dst_vacpage->blkno, newoff);
@@ -2692,7 +2686,6 @@ move_plain_tuple(Relation rel,
             dst_vacpage->offsets_used, dst_vacpage->offsets_free);
    newitemid = PageGetItemId(dst_page, newoff);
    pfree(newtup.t_data);
-   newtup.t_datamcxt = NULL;
    newtup.t_data = (HeapTupleHeader) PageGetItem(dst_page, newitemid);
    ItemPointerSet(&(newtup.t_data->t_ctid), dst_vacpage->blkno, newoff);
    newtup.t_self = newtup.t_data->t_ctid;
index 7f2761990155d3e649b474b0fcc1d3871b573d4e..d0b1d3a6fb140aa3a13b847705869fb355ad326b 100644 (file)
@@ -31,7 +31,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.61 2005/10/15 02:49:16 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.62 2005/11/20 19:49:07 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -349,7 +349,6 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
                continue;
            }
 
-           tuple.t_datamcxt = NULL;
            tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid);
            tuple.t_len = ItemIdGetLength(itemid);
            ItemPointerSet(&(tuple.t_self), blkno, offnum);
@@ -885,7 +884,6 @@ count_nondeletable_pages(Relation onerel, LVRelStats *vacrelstats)
            if (!ItemIdIsUsed(itemid))
                continue;
 
-           tuple.t_datamcxt = NULL;
            tuple.t_data = (HeapTupleHeader) PageGetItem(page, itemid);
            tuple.t_len = ItemIdGetLength(itemid);
            ItemPointerSet(&(tuple.t_self), blkno, offnum);
index 8c51e785b280d0400d7c81ff5d8957b6f2b913af..06978d1f984b5a49ec6e3ba7204a6651794a7630 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/executor/nodeHash.c,v 1.96 2005/10/15 02:49:17 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/executor/nodeHash.c,v 1.97 2005/11/20 19:49:07 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -621,7 +621,6 @@ ExecHashTableInsert(HashJoinTable hashtable,
        memcpy((char *) &hashTuple->htup,
               (char *) tuple,
               sizeof(hashTuple->htup));
-       hashTuple->htup.t_datamcxt = hashtable->batchCxt;
        hashTuple->htup.t_data = (HeapTupleHeader)
            (((char *) hashTuple) + MAXALIGN(sizeof(HashJoinTupleData)));
        memcpy((char *) hashTuple->htup.t_data,
index 817f3822ef6dfa74a7aac1c86a13fd0635ad38ac..856fe67732a0419f44186a53f3045044708cdbb7 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/executor/nodeHashjoin.c,v 1.75 2005/10/18 01:06:24 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/executor/nodeHashjoin.c,v 1.76 2005/11/20 19:49:07 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -789,7 +789,6 @@ ExecHashJoinGetSavedTuple(HashJoinState *hjstate,
                 errmsg("could not read from hash-join temporary file: %m")));
    heapTuple = palloc(HEAPTUPLESIZE + htup.t_len);
    memcpy((char *) heapTuple, (char *) &htup, sizeof(HeapTupleData));
-   heapTuple->t_datamcxt = CurrentMemoryContext;
    heapTuple->t_data = (HeapTupleHeader)
        ((char *) heapTuple + HEAPTUPLESIZE);
    nread = BufFileRead(file, (void *) heapTuple->t_data, htup.t_len);
index e877c1f828b6f01db42b84a5d9a164a695e07f6b..2b58874ac798762eb873433b3f6f752d5e6d9cba 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.230 2005/10/15 02:49:31 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.231 2005/11/20 19:49:07 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2998,7 +2998,6 @@ load_relcache_init_file(void)
                goto read_failed;
 
            /* Fix up internal pointers in the tuple -- see heap_copytuple */
-           rel->rd_indextuple->t_datamcxt = CurrentMemoryContext;
            rel->rd_indextuple->t_data = (HeapTupleHeader) ((char *) rel->rd_indextuple + HEAPTUPLESIZE);
            rel->rd_index = (Form_pg_index) GETSTRUCT(rel->rd_indextuple);
 
index d38d5e2d41f11b8dcda935fd4d8ed0a4cdc99546..38120575f65adf8016f82fd2889bba41de799b26 100644 (file)
@@ -78,7 +78,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/sort/tuplesort.c,v 1.54 2005/10/25 13:47:08 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/sort/tuplesort.c,v 1.55 2005/11/20 19:49:08 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2071,7 +2071,6 @@ readtup_heap(Tuplesortstate *state, int tapenum, unsigned int len)
    /* reconstruct the HeapTupleData portion */
    tuple->t_len = len - sizeof(unsigned int);
    ItemPointerSetInvalid(&(tuple->t_self));
-   tuple->t_datamcxt = CurrentMemoryContext;
    tuple->t_data = (HeapTupleHeader) (((char *) tuple) + HEAPTUPLESIZE);
    /* read in the tuple proper */
    if (LogicalTapeRead(state->tapeset, tapenum, (void *) tuple->t_data,
index d409121418e3aae4cd1fdefb10b7fc03793b335a..bdd04e21f4f0d37485db908f39185a31b8e32d37 100644 (file)
@@ -36,7 +36,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/sort/tuplestore.c,v 1.23 2005/10/15 02:49:37 momjian Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/sort/tuplestore.c,v 1.24 2005/11/20 19:49:08 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -707,7 +707,6 @@ readtup_heap(Tuplestorestate *state, unsigned int len)
    /* reconstruct the HeapTupleData portion */
    tuple->t_len = len - sizeof(unsigned int);
    ItemPointerSetInvalid(&(tuple->t_self));
-   tuple->t_datamcxt = CurrentMemoryContext;
    tuple->t_data = (HeapTupleHeader) (((char *) tuple) + HEAPTUPLESIZE);
    /* read in the tuple proper */
    if (BufFileRead(state->myfile, (void *) tuple->t_data,
index f6fbd8f04a3ea6406a14a9b82c85e35c511408ed..3a10fa34fd18bdfc9aadb6cc22c428a5bca577ec 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/access/htup.h,v 1.78 2005/10/15 02:49:42 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/access/htup.h,v 1.79 2005/11/20 19:49:08 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -361,20 +361,20 @@ do { \
  *
  * * Pointer to a tuple in a disk buffer: t_data points directly into the
  *  buffer (which the code had better be holding a pin on, but this is not
- *  reflected in HeapTupleData itself).  t_datamcxt must be NULL.
+ *  reflected in HeapTupleData itself).
  *
- * * Pointer to nothing: t_data and t_datamcxt are NULL.  This is used as
- *  a failure indication in some functions.
+ * * Pointer to nothing: t_data is NULL.  This is used as a failure indication
+ *  in some functions.
  *
  * * Part of a palloc'd tuple: the HeapTupleData itself and the tuple
  *  form a single palloc'd chunk.  t_data points to the memory location
- *  immediately following the HeapTupleData struct (at offset HEAPTUPLESIZE),
- *  and t_datamcxt is the containing context.  This is used as the output
- *  format of heap_form_tuple and related routines.
+ *  immediately following the HeapTupleData struct (at offset HEAPTUPLESIZE).
+ *  This is the output format of heap_form_tuple and related routines.
  *
  * * Separately allocated tuple: t_data points to a palloc'd chunk that
- *  is not adjacent to the HeapTupleData, and t_datamcxt is the context
- *  containing that chunk.
+ *  is not adjacent to the HeapTupleData.  (This case is deprecated since
+ *  it's difficult to tell apart from case #1.  It should be used only in
+ *  limited contexts where the code knows that case #1 will never apply.)
  *
  * t_len should always be valid, except in the pointer-to-nothing case.
  * t_self and t_tableOid should be valid if the HeapTupleData points to
@@ -386,7 +386,6 @@ typedef struct HeapTupleData
    uint32      t_len;          /* length of *t_data */
    ItemPointerData t_self;     /* SelfItemPointer */
    Oid         t_tableOid;     /* table the tuple came from */
-   MemoryContext t_datamcxt;   /* memory context of allocation */
    HeapTupleHeader t_data;     /* -> tuple header and data */
 } HeapTupleData;