|
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