pgsql: Per-column collation support

From: Peter Eisentraut <peter_e(at)gmx(dot)net>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Per-column collation support
Date: 2011-02-08 21:07:55
Message-ID: E1Pmumx-0008NA-P9@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Per-column collation support

This adds collation support for columns and domains, a COLLATE clause
to override it per expression, and B-tree index support.

Peter Eisentraut
reviewed by Pavel Stehule, Itagaki Takahiro, Robert Haas, Noah Misch

Branch
------
master

Details
-------
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=414c5a2ea65cbd38d79ffdf9b1fde7cc75c134e0

Modified Files
--------------
config/c-library.m4 | 29 +
configure | 108 ++++
configure.in | 2 +
contrib/btree_gin/btree_gin.c | 4 +-
contrib/btree_gist/btree_text.c | 13 +-
contrib/btree_gist/btree_utils_var.c | 3 +-
contrib/citext/citext.c | 35 +-
contrib/citext/citext.sql.in | 3 +-
contrib/ltree/lquery_op.c | 5 +-
doc/src/sgml/catalogs.sgml | 110 ++++
doc/src/sgml/charset.sgml | 164 +++++
doc/src/sgml/func.sgml | 15 +-
doc/src/sgml/indices.sgml | 42 ++
doc/src/sgml/ref/create_domain.sgml | 12 +
doc/src/sgml/ref/create_index.sgml | 16 +-
doc/src/sgml/ref/create_table.sgml | 13 +-
doc/src/sgml/ref/create_type.sgml | 11 +
doc/src/sgml/regress.sgml | 21 +
doc/src/sgml/syntax.sgml | 48 ++
src/backend/access/common/scankey.c | 13 +
src/backend/access/common/tupdesc.c | 35 +-
src/backend/access/gin/ginutil.c | 3 +
src/backend/access/index/indexam.c | 2 +
src/backend/access/nbtree/nbtsearch.c | 4 +
src/backend/bootstrap/bootstrap.c | 50 +-
src/backend/catalog/Makefile | 2 +-
src/backend/catalog/genbki.pl | 1 +
src/backend/catalog/heap.c | 7 +-
src/backend/catalog/index.c | 15 +-
src/backend/catalog/namespace.c | 154 +++++
src/backend/catalog/pg_type.c | 5 +-
src/backend/catalog/system_views.sql | 4 +
src/backend/catalog/toasting.c | 6 +-
src/backend/commands/analyze.c | 4 +
src/backend/commands/dbcommands.c | 4 +-
src/backend/commands/functioncmds.c | 4 +-
src/backend/commands/indexcmds.c | 26 +-
src/backend/commands/seclabel.c | 3 +
src/backend/commands/sequence.c | 20 +-
src/backend/commands/tablecmds.c | 54 ++-
src/backend/commands/typecmds.c | 31 +-
src/backend/commands/view.c | 3 +-
src/backend/executor/execQual.c | 37 +-
src/backend/executor/execTuples.c | 12 +-
src/backend/executor/nodeAgg.c | 11 +-
src/backend/executor/nodeFunctionscan.c | 7 +-
src/backend/executor/nodeIndexscan.c | 11 +
src/backend/executor/nodeMergeAppend.c | 3 +
src/backend/executor/nodeMergejoin.c | 4 +
src/backend/executor/nodeSort.c | 1 +
src/backend/executor/nodeSubplan.c | 2 +-
src/backend/executor/nodeWindowAgg.c | 7 +-
src/backend/nodes/copyfuncs.c | 46 ++
src/backend/nodes/equalfuncs.c | 40 ++
src/backend/nodes/makefuncs.c | 17 +-
src/backend/nodes/nodeFuncs.c | 230 +++++++
src/backend/nodes/outfuncs.c | 53 ++
src/backend/nodes/readfuncs.c | 39 ++
src/backend/optimizer/path/costsize.c | 4 +
src/backend/optimizer/path/indxpath.c | 75 ++-
src/backend/optimizer/path/pathkeys.c | 32 +-
src/backend/optimizer/plan/createplan.c | 64 ++-
src/backend/optimizer/plan/planagg.c | 3 +-
src/backend/optimizer/plan/setrefs.c | 3 +
src/backend/optimizer/plan/subselect.c | 40 +-
src/backend/optimizer/prep/prepjointree.c | 1 +
src/backend/optimizer/prep/preptlist.c | 4 +
src/backend/optimizer/prep/prepunion.c | 21 +-
src/backend/optimizer/util/clauses.c | 49 ++-
src/backend/optimizer/util/plancat.c | 4 +
src/backend/optimizer/util/predtest.c | 1 +
src/backend/parser/analyze.c | 17 +-
src/backend/parser/gram.y | 50 ++-
src/backend/parser/parse_agg.c | 6 +
src/backend/parser/parse_clause.c | 10 +-
src/backend/parser/parse_coerce.c | 132 ++++-
src/backend/parser/parse_cte.c | 26 +-
src/backend/parser/parse_expr.c | 53 ++
src/backend/parser/parse_func.c | 15 +-
src/backend/parser/parse_node.c | 8 +-
src/backend/parser/parse_oper.c | 16 +
src/backend/parser/parse_param.c | 3 +
src/backend/parser/parse_relation.c | 33 +-
src/backend/parser/parse_target.c | 9 +
src/backend/parser/parse_type.c | 97 +++-
src/backend/parser/parse_utilcmd.c | 9 +-
src/backend/rewrite/rewriteHandler.c | 2 +
src/backend/tsearch/ts_locale.c | 28 +-
src/backend/tsearch/wparser_def.c | 6 +-
src/backend/utils/adt/arrayfuncs.c | 5 +-
src/backend/utils/adt/format_type.c | 25 +-
src/backend/utils/adt/formatting.c | 140 +++--
src/backend/utils/adt/like.c | 16 +-
src/backend/utils/adt/oracle_compat.c | 9 +-
src/backend/utils/adt/pg_locale.c | 219 ++++++-
src/backend/utils/adt/ruleutils.c | 77 +++-
src/backend/utils/adt/selfuncs.c | 46 +-
src/backend/utils/adt/varchar.c | 21 +-
src/backend/utils/adt/varlena.c | 34 +-
src/backend/utils/cache/lsyscache.c | 94 +++
src/backend/utils/cache/relcache.c | 35 +
src/backend/utils/cache/syscache.c | 23 +
src/backend/utils/errcodes.txt | 2 +
src/backend/utils/fmgr/fmgr.c | 66 ++
src/backend/utils/fmgr/funcapi.c | 4 +-
src/backend/utils/mb/mbutils.c | 10 +-
src/backend/utils/sort/tuplesort.c | 9 +-
src/bin/initdb/initdb.c | 189 ++++++-
src/bin/pg_dump/pg_dump.c | 47 ++-
src/bin/psql/describe.c | 23 +-
src/include/access/skey.h | 2 +
src/include/access/tupdesc.h | 6 +-
src/include/catalog/catversion.h | 2 +-
src/include/catalog/index.h | 1 +
src/include/catalog/indexing.h | 5 +
src/include/catalog/namespace.h | 4 +
src/include/catalog/pg_attribute.h | 14 +-
src/include/catalog/pg_class.h | 4 +-
src/include/catalog/pg_collation.h | 62 ++
src/include/catalog/pg_index.h | 12 +-
src/include/catalog/pg_proc.h | 6 +-
src/include/catalog/pg_type.h | 284 +++++----
src/include/catalog/pg_type_fn.h | 3 +-
src/include/commands/vacuum.h | 3 +-
src/include/fmgr.h | 18 +
src/include/mb/pg_wchar.h | 4 +-
src/include/nodes/makefuncs.h | 5 +-
src/include/nodes/nodeFuncs.h | 2 +
src/include/nodes/nodes.h | 1 +
src/include/nodes/parsenodes.h | 15 +-
src/include/nodes/pg_list.h | 9 +
src/include/nodes/plannodes.h | 4 +
src/include/nodes/primnodes.h | 29 +
src/include/nodes/relation.h | 3 +
src/include/optimizer/subselect.h | 2 +-
src/include/parser/parse_agg.h | 1 +
src/include/parser/parse_coerce.h | 2 +
src/include/parser/parse_node.h | 1 +
src/include/parser/parse_type.h | 11 +-
src/include/parser/parsetree.h | 2 +-
src/include/pg_config.h.in | 6 +
src/include/port.h | 2 +-
src/include/utils/builtins.h | 4 +-
src/include/utils/formatting.h | 6 +-
src/include/utils/lsyscache.h | 4 +
src/include/utils/pg_locale.h | 23 +-
src/include/utils/rel.h | 1 +
src/include/utils/selfuncs.h | 3 +-
src/include/utils/syscache.h | 2 +
src/include/utils/tuplesort.h | 4 +-
src/pl/plpgsql/src/pl_comp.c | 2 +-
src/port/chklocale.c | 21 +-
src/test/regress/GNUmakefile | 6 +-
src/test/regress/expected/collate.linux.utf8.out | 734 ++++++++++++++++++++++
src/test/regress/expected/sanity_check.out | 3 +-
src/test/regress/sql/collate.linux.utf8.sql | 224 +++++++
156 files changed, 4519 insertions(+), 582 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2011-02-08 21:23:01 pgsql: Fix merge conflict.
Previous Message Heikki Linnakangas 2011-02-08 19:48:42 pgsql: Fix typo, by Kevin Grittner.