Use wrappers of PG_DETOAST_DATUM_PACKED() more.
This makes almost all core code follow the policy introduced in the
previous commit. Specific decisions:
- Text search support functions with char* and length arguments, such as
prsstart and lexize, may receive unaligned strings. I doubt
maintainers of non-core text search code will notice.
- Use plain VARDATA() on values detoasted or synthesized earlier in the
same function. Use VARDATA_ANY() on varlenas sourced outside the
function, even if they happen to always have four-byte headers. As an
exception, retain the universal practice of using VARDATA() on return
values of SendFunctionCall().
- Retain PG_GETARG_BYTEA_P() in pageinspect. (Page images are too large
for a one-byte header, so this misses no optimization.) Sites that do
not call get_page_from_raw() typically need the four-byte alignment.
- For now, do not change btree_gist. Its use of four-byte headers in
memory is partly entangled with storage of 4-byte headers inside
GBT_VARKEY, on disk.
- For now, do not change gtrgm_consistent() or gtrgm_distance(). They
incorporate the varlena header into a cache, and there are multiple
credible implementation strategies to consider.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/3a0d473192b2045cbaf997df8437e7762d34f3ba
Modified Files
--------------
contrib/adminpack/adminpack.c | 16 +-
contrib/dblink/dblink.c | 10 +-
contrib/fuzzystrmatch/dmetaphone.c | 4 +-
contrib/fuzzystrmatch/fuzzystrmatch.c | 6 +-
contrib/intarray/_int_op.c | 6 +-
contrib/pageinspect/btreefuncs.c | 6 +-
contrib/pageinspect/rawpage.c | 10 +-
contrib/pg_prewarm/pg_prewarm.c | 4 +-
contrib/pg_trgm/trgm_gin.c | 15 +-
contrib/pg_trgm/trgm_gist.c | 17 +-
contrib/pg_trgm/trgm_op.c | 12 +-
contrib/pgcrypto/pgcrypto.c | 94 +++++------
contrib/pgcrypto/pgp-pgsql.c | 100 ++++++------
contrib/pgrowlocks/pgrowlocks.c | 2 +-
contrib/pgstattuple/pgstatindex.c | 8 +-
contrib/pgstattuple/pgstattuple.c | 4 +-
contrib/sepgsql/label.c | 4 +-
contrib/spi/autoinc.c | 2 +-
contrib/sslinfo/sslinfo.c | 4 +-
contrib/unaccent/unaccent.c | 6 +-
contrib/uuid-ossp/uuid-ossp.c | 8 +-
contrib/xml2/xpath.c | 42 ++---
contrib/xml2/xslt_proc.c | 14 +-
src/backend/access/spgist/spgtextproc.c | 3 +-
src/backend/access/transam/xlogfuncs.c | 4 +-
src/backend/commands/extension.c | 2 +-
src/backend/commands/sequence.c | 2 +-
src/backend/commands/trigger.c | 8 +-
src/backend/commands/tsearchcmds.c | 6 +-
src/backend/executor/execQual.c | 6 +-
src/backend/libpq/be-fsstubs.c | 6 +-
src/backend/replication/logical/origin.c | 2 +-
src/backend/tsearch/dict.c | 10 +-
src/backend/tsearch/to_tsany.c | 22 +--
src/backend/tsearch/wparser.c | 19 +--
src/backend/utils/adt/acl.c | 260 +++++++++++++++----------------
src/backend/utils/adt/char.c | 6 +-
src/backend/utils/adt/dbsize.c | 2 +-
src/backend/utils/adt/encode.c | 16 +-
src/backend/utils/adt/formatting.c | 40 ++---
src/backend/utils/adt/genfile.c | 8 +-
src/backend/utils/adt/json.c | 8 +-
src/backend/utils/adt/jsonb.c | 2 +-
src/backend/utils/adt/jsonfuncs.c | 24 +--
src/backend/utils/adt/like.c | 24 +--
src/backend/utils/adt/numeric.c | 44 +++---
src/backend/utils/adt/quote.c | 6 +-
src/backend/utils/adt/rangetypes.c | 2 +-
src/backend/utils/adt/regproc.c | 2 +-
src/backend/utils/adt/ruleutils.c | 12 +-
src/backend/utils/adt/selfuncs.c | 18 +--
src/backend/utils/adt/tid.c | 2 +-
src/backend/utils/adt/tsquery_rewrite.c | 2 +-
src/backend/utils/adt/tsvector_op.c | 18 +--
src/backend/utils/adt/varlena.c | 24 +--
src/backend/utils/adt/xml.c | 28 ++--
src/backend/utils/misc/rls.c | 2 +-
src/pl/plperl/Util.xs | 10 +-
src/pl/plpython/plpy_typeio.c | 6 +-
59 files changed, 521 insertions(+), 529 deletions(-)