Thread: pgsql: Support varlena fields with single-byte headers and unaligned

pgsql: Support varlena fields with single-byte headers and unaligned

From
tgl@postgresql.org (Tom Lane)
Date:
Log Message:
-----------
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

Modified Files:
--------------
    pgsql:
        configure (r1.540 -> r1.541)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/configure.diff?r1=1.540&r2=1.541)
        configure.in (r1.507 -> r1.508)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/configure.in.diff?r1=1.507&r2=1.508)
    pgsql/contrib/dblink:
        dblink.c (r1.62 -> r1.63)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/dblink/dblink.c.diff?r1=1.62&r2=1.63)
    pgsql/contrib/hstore:
        hstore_gist.c (r1.4 -> r1.5)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/hstore/hstore_gist.c.diff?r1=1.4&r2=1.5)
    pgsql/contrib/intarray:
        _int_gist.c (r1.16 -> r1.17)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/intarray/_int_gist.c.diff?r1=1.16&r2=1.17)
    pgsql/contrib/pg_trgm:
        trgm_gist.c (r1.9 -> r1.10)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/pg_trgm/trgm_gist.c.diff?r1=1.9&r2=1.10)
    pgsql/contrib/tsearch2:
        ts_cfg.c (r1.23 -> r1.24)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/contrib/tsearch2/ts_cfg.c.diff?r1=1.23&r2=1.24)
    pgsql/doc/src/sgml:
        storage.sgml (r1.16 -> r1.17)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/storage.sgml.diff?r1=1.16&r2=1.17)
    pgsql/src/backend/access/common:
        heaptuple.c (r1.116 -> r1.117)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/common/heaptuple.c.diff?r1=1.116&r2=1.117)
        indextuple.c (r1.81 -> r1.82)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/common/indextuple.c.diff?r1=1.81&r2=1.82)
    pgsql/src/backend/access/heap:
        tuptoaster.c (r1.73 -> r1.74)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/tuptoaster.c.diff?r1=1.73&r2=1.74)
    pgsql/src/backend/catalog:
        toasting.c (r1.5 -> r1.6)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/toasting.c.diff?r1=1.5&r2=1.6)
    pgsql/src/backend/commands:
        analyze.c (r1.103 -> r1.104)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/analyze.c.diff?r1=1.103&r2=1.104)
    pgsql/src/backend/executor:
        execQual.c (r1.216 -> r1.217)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/execQual.c.diff?r1=1.216&r2=1.217)
    pgsql/src/backend/storage/large_object:
        inv_api.c (r1.123 -> r1.124)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/large_object/inv_api.c.diff?r1=1.123&r2=1.124)
    pgsql/src/backend/utils/adt:
        arrayfuncs.c (r1.138 -> r1.139)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/arrayfuncs.c.diff?r1=1.138&r2=1.139)
        datum.c (r1.34 -> r1.35)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/datum.c.diff?r1=1.34&r2=1.35)
        network.c (r1.68 -> r1.69)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/network.c.diff?r1=1.68&r2=1.69)
        pg_lzcompress.c (r1.25 -> r1.26)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/pg_lzcompress.c.diff?r1=1.25&r2=1.26)
        varchar.c (r1.122 -> r1.123)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/varchar.c.diff?r1=1.122&r2=1.123)
        varlena.c (r1.155 -> r1.156)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/varlena.c.diff?r1=1.155&r2=1.156)
        xml.c (r1.41 -> r1.42)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/xml.c.diff?r1=1.41&r2=1.42)
    pgsql/src/backend/utils/fmgr:
        fmgr.c (r1.105 -> r1.106)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/fmgr/fmgr.c.diff?r1=1.105&r2=1.106)
    pgsql/src/backend/utils/init:
        flatfiles.c (r1.24 -> r1.25)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/init/flatfiles.c.diff?r1=1.24&r2=1.25)
    pgsql/src/include/access:
        heapam.h (r1.121 -> r1.122)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/heapam.h.diff?r1=1.121&r2=1.122)
        htup.h (r1.92 -> r1.93)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/htup.h.diff?r1=1.92&r2=1.93)
        tupmacs.h (r1.32 -> r1.33)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/tupmacs.h.diff?r1=1.32&r2=1.33)
        tuptoaster.h (r1.34 -> r1.35)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/tuptoaster.h.diff?r1=1.34&r2=1.35)
    pgsql/src/include/catalog:
        catversion.h (r1.399 -> r1.400)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h.diff?r1=1.399&r2=1.400)
        pg_type.h (r1.181 -> r1.182)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_type.h.diff?r1=1.181&r2=1.182)
    pgsql/src/include:
        fmgr.h (r1.49 -> r1.50)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/fmgr.h.diff?r1=1.49&r2=1.50)
        pg_config.h.in (r1.113 -> r1.114)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/pg_config.h.in.diff?r1=1.113&r2=1.114)
        postgres.h (r1.78 -> r1.79)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/postgres.h.diff?r1=1.78&r2=1.79)
    pgsql/src/include/utils:
        inet.h (r1.25 -> r1.26)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/inet.h.diff?r1=1.25&r2=1.26)
    pgsql/src/test/regress/expected:
        rowtypes.out (r1.10 -> r1.11)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/rowtypes.out.diff?r1=1.10&r2=1.11)
        strings.out (r1.30 -> r1.31)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/strings.out.diff?r1=1.30&r2=1.31)
    pgsql/src/test/regress/sql:
        rowtypes.sql (r1.7 -> r1.8)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/rowtypes.sql.diff?r1=1.7&r2=1.8)
        strings.sql (r1.19 -> r1.20)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/strings.sql.diff?r1=1.19&r2=1.20)