mirror of
https://github.com/postgres/postgres.git
synced 2025-12-21 05:21:08 +03:00
Add option to use ICU as global locale provider
This adds the option to use ICU as the default locale provider for either the whole cluster or a database. New options for initdb, createdb, and CREATE DATABASE are used to select this. Since some (legacy) code still uses the libc locale facilities directly, we still need to set the libc global locale settings even if ICU is otherwise selected. So pg_database now has three locale-related fields: the existing datcollate and datctype, which are always set, and a new daticulocale, which is only set if ICU is selected. A similar change is made in pg_collation for consistency, but in that case, only the libc-related fields or the ICU-related field is set, never both. Reviewed-by: Julien Rouhaud <rjuju123@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/5e756dd6-0e91-d778-96fd-b1bcb06c161a%402ndquadrant.com
This commit is contained in:
@@ -28,6 +28,8 @@ CREATE DATABASE <replaceable class="parameter">name</replaceable>
|
||||
[ LOCALE [=] <replaceable class="parameter">locale</replaceable> ]
|
||||
[ LC_COLLATE [=] <replaceable class="parameter">lc_collate</replaceable> ]
|
||||
[ LC_CTYPE [=] <replaceable class="parameter">lc_ctype</replaceable> ]
|
||||
[ ICU_LOCALE [=] <replaceable class="parameter">icu_locale</replaceable> ]
|
||||
[ LOCALE_PROVIDER [=] <replaceable class="parameter">locale_provider</replaceable> ]
|
||||
[ COLLATION_VERSION = <replaceable>collation_version</replaceable> ]
|
||||
[ TABLESPACE [=] <replaceable class="parameter">tablespace_name</replaceable> ]
|
||||
[ ALLOW_CONNECTIONS [=] <replaceable class="parameter">allowconn</replaceable> ]
|
||||
@@ -160,6 +162,29 @@ CREATE DATABASE <replaceable class="parameter">name</replaceable>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="parameter">icu_locale</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the ICU locale ID if the ICU locale provider is used.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable>locale_provider</replaceable></term>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the provider to use for the default collation in this
|
||||
database. Possible values are:
|
||||
<literal>icu</literal>,<indexterm><primary>ICU</primary></indexterm>
|
||||
<literal>libc</literal>. <literal>libc</literal> is the default. The
|
||||
available choices depend on the operating system and build options.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable>collation_version</replaceable></term>
|
||||
|
||||
@@ -314,6 +339,13 @@ CREATE DATABASE <replaceable class="parameter">name</replaceable>
|
||||
indexes that would be affected.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
There is currently no option to use a database locale with nondeterministic
|
||||
comparisons (see <link linkend="sql-createcollation"><command>CREATE
|
||||
COLLATION</command></link> for an explanation). If this is needed, then
|
||||
per-column collations would need to be used.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The <literal>CONNECTION LIMIT</literal> option is only enforced approximately;
|
||||
if two new sessions start at about the same time when just one
|
||||
|
||||
Reference in New Issue
Block a user