Per-column collation support

Peter Eisentraut <peter_e@gmx.net>

Commit: 414c5a2ea65cbd38d79ffdf9b1fde7cc75c134e0
Author: Peter Eisentraut <peter_e@gmx.net>
Date: 2011-02-08T21:04:18Z
Releases: 9.1.0
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

Files

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