From cb253de21af4258b3f332df36347be8f060c0665 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 27 Sep 2002 15:04:08 +0000 Subject: [PATCH] Don't mess with HEAP_XMAX_INVALID in heaptuple.c routines; there is no reason to worry about the tuple commit status bits until the tuple is inserted in a relation by heapam.c. Also, improve comments for heap_addheader(). --- src/backend/access/common/heaptuple.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c index 9901965a48..470241e22a 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.82 2002/09/04 20:31:08 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.83 2002/09/27 15:04:08 tgl Exp $ * * NOTES * The old interface functions have been converted to macros @@ -617,6 +617,9 @@ heap_formtuple(TupleDesc tupleDescriptor, td->t_natts = numberOfAttributes; td->t_hoff = hoff; + if (tupleDescriptor->tdhasoid) /* else leave infomask = 0 */ + td->t_infomask = HEAP_HASOID; + DataFill((char *) td + hoff, tupleDescriptor, value, @@ -624,11 +627,6 @@ heap_formtuple(TupleDesc tupleDescriptor, &td->t_infomask, (hasnull ? td->t_bits : NULL)); - if (tupleDescriptor->tdhasoid) - td->t_infomask |= HEAP_HASOID; - - td->t_infomask |= HEAP_XMAX_INVALID; - return tuple; } @@ -736,8 +734,12 @@ heap_freetuple(HeapTuple htup) * * This routine forms a HeapTuple by copying the given structure (tuple * data) and adding a generic header. Note that the tuple data is - * presumed to contain no null fields. It is typically only useful - * for null-free system tables. + * presumed to contain no null fields and no varlena fields. + * + * This routine is really only useful for certain system tables that are + * known to be fixed-width and null-free. It is used in some places for + * pg_class, but that is a gross hack (it only works because relacl can + * be omitted from the tuple entirely in those places). * ---------------- */ HeapTuple @@ -770,9 +772,11 @@ heap_addheader(int natts, /* max domain index */ MemSet((char *) td, 0, hoff); - td->t_hoff = hoff; td->t_natts = natts; - td->t_infomask = withoid ? (HEAP_XMAX_INVALID | HEAP_HASOID) : HEAP_XMAX_INVALID; + td->t_hoff = hoff; + + if (withoid) /* else leave infomask = 0 */ + td->t_infomask = HEAP_HASOID; memcpy((char *) td + hoff, structure, structlen); -- 2.40.0