diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c index 5ff7a1e016..4640b20224 100644 --- a/src/backend/access/common/heaptuple.c +++ b/src/backend/access/common/heaptuple.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.65 2000/07/04 02:40:56 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.66 2000/11/14 21:04:32 tgl Exp $ * * NOTES * The old interface functions have been converted to macros @@ -275,38 +275,6 @@ heap_sysattrbyval(AttrNumber attno) return byval; } -#ifdef NOT_USED -/* ---------------- - * heap_getsysattr - * ---------------- - */ -Datum -heap_getsysattr(HeapTuple tup, Buffer b, int attnum) -{ - switch (attnum) - { - case TableOidAttributeNumber: - return (Datum) &tup->t_tableoid; - case SelfItemPointerAttributeNumber: - return (Datum) &tup->t_ctid; - case ObjectIdAttributeNumber: - return (Datum) (long) tup->t_oid; - case MinTransactionIdAttributeNumber: - return (Datum) (long) tup->t_xmin; - case MinCommandIdAttributeNumber: - return (Datum) (long) tup->t_cmin; - case MaxTransactionIdAttributeNumber: - return (Datum) (long) tup->t_xmax; - case MaxCommandIdAttributeNumber: - return (Datum) (long) tup->t_cmax; - default: - elog(ERROR, "heap_getsysattr: undefined attnum %d", attnum); - } - return (Datum) NULL; -} - -#endif - /* ---------------- * nocachegetattr * @@ -563,6 +531,9 @@ nocachegetattr(HeapTuple tuple, * heap_copytuple * * returns a copy of an entire tuple + * + * The HeapTuple struct, tuple header, and tuple data are all allocated + * as a single palloc() block. * ---------------- */ HeapTuple @@ -576,17 +547,17 @@ heap_copytuple(HeapTuple tuple) newTuple = (HeapTuple) palloc(HEAPTUPLESIZE + tuple->t_len); 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); - memmove((char *) newTuple->t_data, - (char *) tuple->t_data, tuple->t_len); + memcpy((char *) newTuple->t_data, (char *) tuple->t_data, tuple->t_len); return newTuple; } /* ---------------- * heap_copytuple_with_tuple * - * returns a copy of an tuple->t_data + * copy a tuple into a caller-supplied HeapTuple management struct * ---------------- */ void @@ -600,11 +571,10 @@ 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); - memmove((char *) dest->t_data, - (char *) src->t_data, src->t_len); - return; + memcpy((char *) dest->t_data, (char *) src->t_data, src->t_len); } #ifdef NOT_USED @@ -705,6 +675,7 @@ heap_formtuple(TupleDesc tupleDescriptor, tuple->t_len = len; ItemPointerSetInvalid(&(tuple->t_self)); + tuple->t_tableOid = InvalidOid; td->t_natts = numberOfAttributes; td->t_hoff = hoff; @@ -805,6 +776,7 @@ heap_modifytuple(HeapTuple tuple, newTuple->t_data->t_infomask = infomask; newTuple->t_data->t_natts = numberOfAttributes; newTuple->t_self = tuple->t_self; + newTuple->t_tableOid = tuple->t_tableOid; return newTuple; } @@ -851,17 +823,19 @@ heap_addheader(uint32 natts, /* max domain index */ tuple->t_datamcxt = CurrentMemoryContext; td = tuple->t_data = (HeapTupleHeader) ((char *) tuple + HEAPTUPLESIZE); - MemSet((char *) td, 0, len); - tuple->t_len = len; ItemPointerSetInvalid(&(tuple->t_self)); + tuple->t_tableOid = InvalidOid; + + MemSet((char *) td, 0, len); + td->t_hoff = hoff; td->t_natts = natts; td->t_infomask = 0; td->t_infomask |= HEAP_XMAX_INVALID; if (structlen > 0) - memmove((char *) td + hoff, structure, (size_t) structlen); + memcpy((char *) td + hoff, structure, (size_t) structlen); return tuple; } diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 5f450f9152..3d8946b6db 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.93 2000/11/08 22:09:54 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.94 2000/11/14 21:04:31 tgl Exp $ * * * INTERFACE ROUTINES @@ -255,9 +255,7 @@ heapgettup(Relation relation, OffsetNumber lineoff; int linesleft; ItemPointer tid = (tuple->t_data == NULL) ? - (ItemPointer) NULL : &(tuple->t_self); - - tuple->tableOid = relation->rd_id; + (ItemPointer) NULL : &(tuple->t_self); /* ---------------- * increment access statistics @@ -294,6 +292,8 @@ heapgettup(Relation relation, if (!ItemPointerIsValid(tid)) Assert(!PointerIsValid(tid)); + + tuple->t_tableOid = relation->rd_id; /* ---------------- * return null immediately if relation is empty @@ -1145,7 +1145,6 @@ heap_fetch(Relation relation, ItemPointer tid = &(tuple->t_self); OffsetNumber offnum; - tuple->tableOid = relation->rd_id; /* ---------------- * increment access statistics * ---------------- @@ -1193,6 +1192,7 @@ heap_fetch(Relation relation, tuple->t_datamcxt = NULL; tuple->t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); tuple->t_len = ItemIdGetLength(lp); + tuple->t_tableOid = relation->rd_id; /* ---------------- * check time qualification of tid @@ -1241,7 +1241,6 @@ heap_get_latest_tid(Relation relation, bool invalidBlock, linkend; - tp.tableOid = relation->rd_id; /* ---------------- * get the buffer from the relation descriptor * Note that this does a buffer pin. @@ -1333,7 +1332,6 @@ heap_insert(Relation relation, HeapTuple tup) Buffer buffer; /* increment access statistics */ - tup->tableOid = relation->rd_id; IncrHeapAccessStat(local_insert); IncrHeapAccessStat(global_insert); @@ -1357,6 +1355,7 @@ heap_insert(Relation relation, HeapTuple tup) StoreInvalidTransactionId(&(tup->t_data->t_xmax)); tup->t_data->t_infomask &= ~(HEAP_XACT_MASK); tup->t_data->t_infomask |= HEAP_XMAX_INVALID; + tup->t_tableOid = relation->rd_id; #ifdef TUPLE_TOASTER_ACTIVE /* ---------- @@ -1420,7 +1419,6 @@ heap_delete(Relation relation, ItemPointer tid, ItemPointer ctid) Buffer buffer; int result; - tp.tableOid = relation->rd_id; /* increment access statistics */ IncrHeapAccessStat(local_delete); IncrHeapAccessStat(global_delete); @@ -1440,6 +1438,7 @@ heap_delete(Relation relation, ItemPointer tid, ItemPointer ctid) tp.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); tp.t_len = ItemIdGetLength(lp); tp.t_self = *tid; + tp.t_tableOid = relation->rd_id; l1: result = HeapTupleSatisfiesUpdate(&tp); @@ -1546,7 +1545,6 @@ heap_update(Relation relation, ItemPointer otid, HeapTuple newtup, Buffer buffer, newbuf; int result; - newtup->tableOid = relation->rd_id; /* increment access statistics */ IncrHeapAccessStat(local_replace); IncrHeapAccessStat(global_replace); @@ -1733,7 +1731,6 @@ heap_mark4update(Relation relation, HeapTuple tuple, Buffer *buffer) PageHeader dp; int result; - tuple->tableOid = relation->rd_id; /* increment access statistics */ IncrHeapAccessStat(local_mark4update); IncrHeapAccessStat(global_mark4update); diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index d110759cb6..b325b1b2d1 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -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.56 2000/08/03 19:19:38 tgl Exp $ + * $Id: heapam.h,v 1.57 2000/11/14 21:04:32 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -191,7 +191,7 @@ fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, : \ (((attnum) == TableOidAttributeNumber) ? \ ( \ - (Datum)((tup)->tableOid) \ + (Datum)((tup)->t_tableOid) \ ) \ : \ ( \ diff --git a/src/include/access/htup.h b/src/include/access/htup.h index 6b290e9753..177176e434 100644 --- a/src/include/access/htup.h +++ b/src/include/access/htup.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: htup.h,v 1.38 2000/11/14 20:47:34 tgl Exp $ + * $Id: htup.h,v 1.39 2000/11/14 21:04:32 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -188,7 +188,7 @@ typedef struct HeapTupleData { uint32 t_len; /* length of *t_data */ ItemPointerData t_self; /* SelfItemPointer */ - Oid tableOid; /* table the tuple came from */ + Oid t_tableOid; /* table the tuple came from */ MemoryContext t_datamcxt; /* mcxt in which allocated */ HeapTupleHeader t_data; /* -> tuple header and data */ } HeapTupleData;