From c67f6f2f573064c206044b44a73cdf0806dfbd4e Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 29 Feb 2008 17:47:41 +0000 Subject: [PATCH] Reducing the assumed alignment of struct varlena means that the compiler is also licensed to put a local variable declared that way at an unaligned address. Which will not work if the variable is then manipulated with SET_VARSIZE or other macros that assume alignment. So the previous patch is not an unalloyed good, but on balance I think it's still a win, since we have very few places that do that sort of thing. Fix the one place in tuptoaster.c that does it. Per buildfarm results from gypsy_moth (I'm a bit surprised that only one machine showed a failure). --- src/backend/access/heap/tuptoaster.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c index a7fd6d0984..3ace204249 100644 --- a/src/backend/access/heap/tuptoaster.c +++ b/src/backend/access/heap/tuptoaster.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.82 2008/02/23 19:11:45 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.83 2008/02/29 17:47:41 tgl Exp $ * * * INTERFACE ROUTINES @@ -1093,7 +1093,8 @@ toast_save_datum(Relation rel, Datum value, struct { struct varlena hdr; - char data[TOAST_MAX_CHUNK_SIZE]; + char data[TOAST_MAX_CHUNK_SIZE]; /* make struct big enough */ + int32 align_it; /* ensure struct is aligned well enough */ } chunk_data; int32 chunk_size; int32 chunk_seq = 0; -- 2.40.0