pgsql: Per-column collation support - Mailing list pgsql-committers
From | Peter Eisentraut |
---|---|
Subject | pgsql: Per-column collation support |
Date | |
Msg-id | E1Pmumx-0008NA-P9@gemulon.postgresql.org Whole thread Raw |
List | 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(-)
pgsql-committers by date: