Defines a new collation.
CREATE COLLATION [ IF NOT EXISTS ] <name> (
[ LOCALE = <locale>, ]
[ LC_COLLATE = <lc_collate>, ]
[ LC_CTYPE = <lc_ctype>, ]
[ PROVIDER = <provider>, ]
[ DETERMINISTIC = <boolean>, ]
[ VERSION = <version> ])
CREATE COLLATION [ IF NOT EXISTS ] <name> FROM <existing_collation>
CREATE COLLATION
defines a new collation using the specified operating system locale settings, or by copying an existing collation.
To be able to create a collation, you must have CREATE
privilege on the destination schema.
LC_COLLATE
and
LC_CTYPE
at once. If you specify this, you cannot specify either of those parameters.
LC_COLLATE
locale category.
LC_CTYPE
locale category.
icu
,
libc
.
libc
is the default. The available choices depend on the operating system and build options.
true
. A deterministic comparison considers strings that are not byte-wise equal to be unequal even if they are considered logically equal by the comparison. Greenplum Database breaks ties using a byte-wise comparison. Comparison that is not deterministic can make the collation be, say, case- or accent-insensitive. For that, you need to choose an appropriate
LC_COLLATE
setting and set the collation to not deterministic here.
icu
provider.
pg_upgrade
for copying the version from an existing installation.
CREATE COLLATION
takes a SHARE ROW EXCLUSIVE
lock, which is self-conflicting, on the pg_collation
system catalog, so only one CREATE COLLATION
command can run at a time.
Use DROP COLLATION to remove user-defined collations.
See Collation Support in the PostgreSQL documentation for more information about collation support in Greenplum Database.
When using the libc
collation provider, the, locale must be applicable to the current database encoding. See CREATE DATABASE for the precise rules.
To create a collation from the operating system locale fr_FR.utf8
(assuming the current database encoding is UTF8
):
CREATE COLLATION french (LOCALE = 'fr_FR.utf8');
To create a collation using the icu
provider using German phone book sort order:
CREATE COLLATION german_phonebook (provider = icu, locale = 'de-u-co-phonebk');
To create a collation from an existing collation:
CREATE COLLATION german FROM "de_DE";
This can be convenient to be able to use operating-system-independent collation names in applications.
There is a CREATE COLLATION
statement in the SQL standard, but it is limited to copying an existing collation. The syntax to create a new collation is a Greenplum Database extension.
ALTER COLLATION, DROP COLLATION
Parent topic: SQL Commands