OSDN Git Service

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 5551f74..69634b5 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 fc75088..3b4de80 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 99d725c..c18ea54 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 ed604f9..5563b9d 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 a3f7c37..81463ab 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 506eb23..af384ce 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 7f27619..d0b1d3a 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 8c51e78..06978d1 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 817f382..856fe67 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 e877c1f..2b58874 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 d38d5e2..3812057 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 d409121..bdd04e2 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 f6fbd8f..3a10fa3 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;