]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Reducing the assumed alignment of struct varlena means that the compiler
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Feb 2008 17:47:47 +0000 (17:47 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 Feb 2008 17:47:47 +0000 (17:47 +0000)
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

index e729e77a54efbe78d63f11440d877fd82cf117bd..a211c0b9e4054f86cf494c5c055b5a7e6f406ed1 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.81.2.1 2008/02/23 19:11:55 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.81.2.2 2008/02/29 17:47:47 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;