postgresql/src/backend/commands
Peter Eisentraut eccfef81e1 ICU support
Add a column collprovider to pg_collation that determines which library
provides the collation data.  The existing choices are default and libc,
and this adds an icu choice, which uses the ICU4C library.

The pg_locale_t type is changed to a union that contains the
provider-specific locale handles.  Users of locale information are
changed to look into that struct for the appropriate handle to use.

Also add a collversion column that records the version of the collation
when it is created, and check at run time whether it is still the same.
This detects potentially incompatible library upgrades that can corrupt
indexes and other structures.  This is currently only supported by
ICU-provided collations.

initdb initializes the default collation set as before from the `locale
-a` output but also adds all available ICU locales with a "-x-icu"
appended.

Currently, ICU-provided collations can only be explicitly named
collations.  The global database locales are still always libc-provided.

ICU support is enabled by configure --with-icu.

Reviewed-by: Thomas Munro <thomas.munro@enterprisedb.com>
Reviewed-by: Andreas Karlsson <andreas@proxel.se>
2017-03-23 15:28:48 -04:00
..
Makefile Logical replication 2017-01-20 09:04:49 -05:00
aggregatecmds.c Use the new castNode() macro in a number of places. 2017-01-26 16:47:03 -08:00
alter.c Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
amcmds.c Fix typos in comments. 2017-02-06 11:33:58 +02:00
analyze.c Refactor GetOldestXmin() to use flags 2017-03-22 16:51:01 +00:00
async.c Use the new castNode() macro in a number of places. 2017-01-26 16:47:03 -08:00
cluster.c In rebuild_relation(), don't access an already-closed relcache entry. 2017-03-04 16:09:33 -05:00
collationcmds.c ICU support 2017-03-23 15:28:48 -04:00
comment.c Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
constraint.c Allow index AMs to cache data across aminsert calls within a SQL command. 2017-02-09 11:52:12 -05:00
conversioncmds.c Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
copy.c Allow for parallel execution whenever ExecutorRun() is done only once. 2017-03-23 13:14:36 -04:00
createas.c Allow for parallel execution whenever ExecutorRun() is done only once. 2017-03-23 13:14:36 -04:00
dbcommands.c Remove useless duplicate inclusions of system header files. 2017-02-25 16:12:55 -05:00
define.c Logical replication 2017-01-20 09:04:49 -05:00
discard.c Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
dropcmds.c Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
event_trigger.c Provide CatalogTupleDelete() as a wrapper around simple_heap_delete(). 2017-02-01 16:13:30 -05:00
explain.c Allow for parallel execution whenever ExecutorRun() is done only once. 2017-03-23 13:14:36 -04:00
extension.c Allow for parallel execution whenever ExecutorRun() is done only once. 2017-03-23 13:14:36 -04:00
foreigncmds.c Add IF NOT EXISTS for CREATE SERVER and CREATE USER MAPPING 2017-03-20 16:40:45 -04:00
functioncmds.c Replace LookupFuncNameTypeNames() with LookupFuncWithArgs() 2017-03-06 13:31:47 -05:00
indexcmds.c hash: Add write-ahead logging support. 2017-03-14 13:27:02 -04:00
lockcmds.c Update copyright via script for 2017 2017-01-03 13:48:53 -05:00
matview.c Allow for parallel execution whenever ExecutorRun() is done only once. 2017-03-23 13:14:36 -04:00
opclasscmds.c Replace LookupFuncNameTypeNames() with LookupFuncWithArgs() 2017-03-06 13:31:47 -05:00
operatorcmds.c Replace LookupFuncNameTypeNames() with LookupFuncWithArgs() 2017-03-06 13:31:47 -05:00
policy.c Provide CatalogTupleDelete() as a wrapper around simple_heap_delete(). 2017-02-01 16:13:30 -05:00
portalcmds.c Allow for parallel execution whenever ExecutorRun() is done only once. 2017-03-23 13:14:36 -04:00
prepare.c Allow for parallel execution whenever ExecutorRun() is done only once. 2017-03-23 13:14:36 -04:00
proclang.c Provide CatalogTupleDelete() as a wrapper around simple_heap_delete(). 2017-02-01 16:13:30 -05:00
publicationcmds.c Fix grammar in comment 2017-03-23 10:14:42 +01:00
schemacmds.c Provide CatalogTupleDelete() as a wrapper around simple_heap_delete(). 2017-02-01 16:13:30 -05:00
seclabel.c Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
sequence.c Use wrappers of PG_DETOAST_DATUM_PACKED() more. 2017-03-12 19:35:34 -04:00
subscriptioncmds.c Logical replication support for initial data copy 2017-03-23 08:55:37 -04:00
tablecmds.c Improve performance of replay of AccessExclusiveLocks 2017-03-22 13:09:36 +00:00
tablespace.c Remove useless duplicate inclusions of system header files. 2017-02-25 16:12:55 -05:00
trigger.c Use wrappers of PG_DETOAST_DATUM_PACKED() more. 2017-03-12 19:35:34 -04:00
tsearchcmds.c Use wrappers of PG_DETOAST_DATUM_PACKED() more. 2017-03-12 19:35:34 -04:00
typecmds.c Remove objname/objargs split for referring to objects 2017-03-06 13:31:47 -05:00
user.c Support SCRAM-SHA-256 authentication (RFC 5802 and 7677). 2017-03-07 14:25:40 +02:00
vacuum.c Track the oldest XID that can be safely looked up in CLOG. 2017-03-23 14:26:31 -04:00
vacuumlazy.c Avoid having vacuum set reltuples to 0 on non-empty relations in the 2017-03-16 22:28:03 +00:00
variable.c Remove now-dead code for !HAVE_INT64_TIMESTAMP. 2017-02-23 14:04:43 -05:00
view.c Use the new castNode() macro in a number of places. 2017-01-26 16:47:03 -08:00