aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-02-29 17:47:41 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-02-29 17:47:41 +0000
commitc67f6f2f573064c206044b44a73cdf0806dfbd4e (patch)
tree043e7f28413987e5e856f1fdbc1912dabdab78cd /src
parent2d2b0222677fb00b09ee724127a6643c3d451af3 (diff)
downloadpostgresql-c67f6f2f573064c206044b44a73cdf0806dfbd4e.tar.gz
postgresql-c67f6f2f573064c206044b44a73cdf0806dfbd4e.zip
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).
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/heap/tuptoaster.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c
index a7fd6d0984d..3ace2042493 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;