Support varlena fields with single-byte headers and unaligned storage.

Tom Lane <tgl@sss.pgh.pa.us>

Commit: 3e23b68dac006e8deb0afa327e855258df8de064
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2007-04-06T04:21:44Z
Releases: 8.3.0
Support varlena fields with single-byte headers and unaligned storage.

This commit breaks any code that assumes that the mere act of forming a tuple
(without writing it to disk) does not "toast" any fields.  While all available
regression tests pass, I'm not totally sure that we've fixed every nook and
cranny, especially in contrib.

Greg Stark with some help from Tom Lane

Files

PathChange+/−
configure modified +231 −1
configure.in modified +2 −1
contrib/dblink/dblink.c modified +3 −3
contrib/hstore/hstore_gist.c modified +19 −1
contrib/intarray/_int_gist.c modified +9 −0
contrib/pg_trgm/trgm_gist.c modified +20 −2
contrib/tsearch2/ts_cfg.c modified +1 −3
doc/src/sgml/storage.sgml modified +31 −26
src/backend/access/common/heaptuple.c modified +349 −98
src/backend/access/common/indextuple.c modified +89 −53
src/backend/access/heap/tuptoaster.c modified +314 −182
src/backend/catalog/toasting.c modified +2 −2
src/backend/commands/analyze.c modified +3 −3
src/backend/executor/execQual.c modified +3 −3
src/backend/storage/large_object/inv_api.c modified +5 −5
src/backend/utils/adt/arrayfuncs.c modified +42 −42
src/backend/utils/adt/datum.c modified +3 −3
src/backend/utils/adt/network.c modified +50 −54
src/backend/utils/adt/pg_lzcompress.c modified +2 −2
src/backend/utils/adt/varchar.c modified +84 −76
src/backend/utils/adt/varlena.c modified +135 −145
src/backend/utils/adt/xml.c modified +3 −3
src/backend/utils/fmgr/fmgr.c modified +13 −4
src/backend/utils/init/flatfiles.c modified +3 −3
src/include/access/heapam.h modified +3 −2
src/include/access/htup.h modified +4 −11
src/include/access/tupmacs.h modified +70 −13
src/include/access/tuptoaster.h modified +4 −4
src/include/catalog/catversion.h modified +2 −2
src/include/catalog/pg_type.h modified +7 −5
src/include/fmgr.h modified +17 −1
src/include/pg_config.h.in modified +4 −0
src/include/postgres.h modified +211 −48
src/include/utils/inet.h modified +14 −8
src/test/regress/expected/rowtypes.out modified +17 −0
src/test/regress/expected/strings.out modified +20 −0
src/test/regress/sql/rowtypes.sql modified +4 −0
src/test/regress/sql/strings.sql modified +13 −0