|
9 | 9 | *
|
10 | 10 | *
|
11 | 11 | * IDENTIFICATION
|
12 |
| - * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.82 2002/09/04 20:31:08 momjian Exp $ |
| 12 | + * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.83 2002/09/27 15:04:08 tgl Exp $ |
13 | 13 | *
|
14 | 14 | * NOTES
|
15 | 15 | * The old interface functions have been converted to macros
|
@@ -617,18 +617,16 @@ heap_formtuple(TupleDesc tupleDescriptor,
|
617 | 617 | td->t_natts = numberOfAttributes;
|
618 | 618 | td->t_hoff = hoff;
|
619 | 619 |
|
| 620 | + if (tupleDescriptor->tdhasoid) /* else leave infomask = 0 */ |
| 621 | + td->t_infomask = HEAP_HASOID; |
| 622 | + |
620 | 623 | DataFill((char *) td + hoff,
|
621 | 624 | tupleDescriptor,
|
622 | 625 | value,
|
623 | 626 | nulls,
|
624 | 627 | &td->t_infomask,
|
625 | 628 | (hasnull ? td->t_bits : NULL));
|
626 | 629 |
|
627 |
| - if (tupleDescriptor->tdhasoid) |
628 |
| - td->t_infomask |= HEAP_HASOID; |
629 |
| - |
630 |
| - td->t_infomask |= HEAP_XMAX_INVALID; |
631 |
| - |
632 | 630 | return tuple;
|
633 | 631 | }
|
634 | 632 |
|
@@ -736,8 +734,12 @@ heap_freetuple(HeapTuple htup)
|
736 | 734 | *
|
737 | 735 | * This routine forms a HeapTuple by copying the given structure (tuple
|
738 | 736 | * data) and adding a generic header. Note that the tuple data is
|
739 |
| - * presumed to contain no null fields. It is typically only useful |
740 |
| - * for null-free system tables. |
| 737 | + * presumed to contain no null fields and no varlena fields. |
| 738 | + * |
| 739 | + * This routine is really only useful for certain system tables that are |
| 740 | + * known to be fixed-width and null-free. It is used in some places for |
| 741 | + * pg_class, but that is a gross hack (it only works because relacl can |
| 742 | + * be omitted from the tuple entirely in those places). |
741 | 743 | * ----------------
|
742 | 744 | */
|
743 | 745 | HeapTuple
|
@@ -770,9 +772,11 @@ heap_addheader(int natts, /* max domain index */
|
770 | 772 |
|
771 | 773 | MemSet((char *) td, 0, hoff);
|
772 | 774 |
|
773 |
| - td->t_hoff = hoff; |
774 | 775 | td->t_natts = natts;
|
775 |
| - td->t_infomask = withoid ? (HEAP_XMAX_INVALID | HEAP_HASOID) : HEAP_XMAX_INVALID; |
| 776 | + td->t_hoff = hoff; |
| 777 | + |
| 778 | + if (withoid) /* else leave infomask = 0 */ |
| 779 | + td->t_infomask = HEAP_HASOID; |
776 | 780 |
|
777 | 781 | memcpy((char *) td + hoff, structure, structlen);
|
778 | 782 |
|
|
0 commit comments