|
8 | 8 | * |
9 | 9 | * |
10 | 10 | * IDENTIFICATION |
11 | | - * $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.20 2001/03/23 04:49:51 momjian Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.21 2001/03/25 00:45:20 tgl Exp $ |
12 | 12 | * |
13 | 13 | * |
14 | 14 | * INTERFACE ROUTINES |
@@ -745,7 +745,10 @@ toast_save_datum(Relation rel, Oid mainoid, int16 attno, Datum value) |
745 | 745 | Datum t_values[3]; |
746 | 746 | char t_nulls[3]; |
747 | 747 | varattrib *result; |
748 | | - char chunk_data[VARHDRSZ + TOAST_MAX_CHUNK_SIZE]; |
| 748 | + struct { |
| 749 | + struct varlena hdr; |
| 750 | + char data[TOAST_MAX_CHUNK_SIZE]; |
| 751 | + } chunk_data; |
749 | 752 | int32 chunk_size; |
750 | 753 | int32 chunk_seq = 0; |
751 | 754 | char *data_p; |
@@ -780,7 +783,7 @@ toast_save_datum(Relation rel, Oid mainoid, int16 attno, Datum value) |
780 | 783 | * Initialize constant parts of the tuple data |
781 | 784 | */ |
782 | 785 | t_values[0] = ObjectIdGetDatum(result->va_content.va_external.va_valueid); |
783 | | - t_values[2] = PointerGetDatum(chunk_data); |
| 786 | + t_values[2] = PointerGetDatum(&chunk_data); |
784 | 787 | t_nulls[0] = ' '; |
785 | 788 | t_nulls[1] = ' '; |
786 | 789 | t_nulls[2] = ' '; |
@@ -813,8 +816,8 @@ toast_save_datum(Relation rel, Oid mainoid, int16 attno, Datum value) |
813 | 816 | * Build a tuple |
814 | 817 | */ |
815 | 818 | t_values[1] = Int32GetDatum(chunk_seq++); |
816 | | - VARATT_SIZEP(chunk_data) = chunk_size + VARHDRSZ; |
817 | | - memcpy(VARATT_DATA(chunk_data), data_p, chunk_size); |
| 819 | + VARATT_SIZEP(&chunk_data) = chunk_size + VARHDRSZ; |
| 820 | + memcpy(VARATT_DATA(&chunk_data), data_p, chunk_size); |
818 | 821 | toasttup = heap_formtuple(toasttupDesc, t_values, t_nulls); |
819 | 822 | if (!HeapTupleIsValid(toasttup)) |
820 | 823 | elog(ERROR, "Failed to build TOAST tuple"); |
|
0 commit comments