mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-17 20:07:00 +08:00
The builtin C.UTF-8 locale has similar semantics to the libc locale of the same name. That is, code point sort order (fast, memcmp-based) combined with Unicode semantics for character operations such as pattern matching, regular expressions, and LOWER()/INITCAP()/UPPER(). The character semantics are based on Unicode simple case mappings. The builtin provider's C.UTF-8 offers several important advantages over libc: * faster sorting -- benefits from additional optimizations such as abbreviated keys and varstrfastcmp_c * faster case conversion, e.g. LOWER(), at least compared with some libc implementations * available on all platforms with identical semantics, and the semantics are stable, testable, and documentable within a given Postgres major version Being based on memcmp, the builtin C.UTF-8 locale does not offer natural language sort order. But it is an improvement for most use cases that might otherwise use libc's "C.UTF-8" locale, as well as many use cases that use libc's "C" locale. Discussion: https://postgr.es/m/ff4c2f2f9c8fc7ca27c1c24ae37ecaeaeaff6b53.camel%40j-davis.com Reviewed-by: Daniel Vérité, Peter Eisentraut, Jeremy Schneider
38 lines
1.5 KiB
Plaintext
38 lines
1.5 KiB
Plaintext
#----------------------------------------------------------------------
|
|
#
|
|
# pg_collation.dat
|
|
# Initial contents of the pg_collation system catalog.
|
|
#
|
|
# Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
# Portions Copyright (c) 1994, Regents of the University of California
|
|
#
|
|
# src/include/catalog/pg_collation.dat
|
|
#
|
|
#----------------------------------------------------------------------
|
|
|
|
[
|
|
|
|
{ oid => '100', oid_symbol => 'DEFAULT_COLLATION_OID',
|
|
descr => 'database\'s default collation',
|
|
collname => 'default', collprovider => 'd', collencoding => '-1' },
|
|
{ oid => '950', oid_symbol => 'C_COLLATION_OID',
|
|
descr => 'standard C collation',
|
|
collname => 'C', collprovider => 'c', collencoding => '-1',
|
|
collcollate => 'C', collctype => 'C' },
|
|
{ oid => '951', oid_symbol => 'POSIX_COLLATION_OID',
|
|
descr => 'standard POSIX collation',
|
|
collname => 'POSIX', collprovider => 'c', collencoding => '-1',
|
|
collcollate => 'POSIX', collctype => 'POSIX' },
|
|
{ oid => '962', descr => 'sorts by Unicode code point, C character semantics',
|
|
collname => 'ucs_basic', collprovider => 'b', collencoding => '6',
|
|
colllocale => 'C' },
|
|
{ oid => '963',
|
|
descr => 'sorts using the Unicode Collation Algorithm with default settings',
|
|
collname => 'unicode', collprovider => 'i', collencoding => '-1',
|
|
colllocale => 'und' },
|
|
{ oid => '811', descr => 'sorts by Unicode code point; Unicode and POSIX character semantics',
|
|
collname => 'pg_c_utf8', collprovider => 'b', collencoding => '6',
|
|
colllocale => 'C.UTF-8' },
|
|
|
|
]
|