51.12. pg_collation#

51.12. pg_collation

51.12. pg_collation

Каталог pg_collation описывает доступные правила сортировки, которые по сути являются отображениями от SQL имени к категориям локали операционной системы. См. Раздел 23.2 для получения дополнительной информации.

Таблица 51.12. pg_collation Колонки

Тип столбца

Описание

oid oid

Идентификатор строки

collname name

Название правила сортировки (уникальное для каждого пространства имен и кодировки)

collnamespace oid (ссылается на pg_namespace.oid)

OID пространства имен, которое содержит это правило сортировки.

collowner oid (ссылается на pg_authid.oid)

Владелец правила сортировки

collprovider char

Провайдер правила сортировки: d = по умолчанию базы данных, c = libc, i = icu

collisdeterministic bool

Является ли правило сортировки детерминированным?

collencoding int4

Кодировка, для которой применимо правило сортировки, или -1, если оно работает для любой кодировки

collcollate text

LC_COLLATE для этого объекта правила сортировки

collctype text

LC_CTYPE для этого объекта правила сортировки

colliculocale text

ICU идентификатор локали для данного объекта правила сортировки

collversion text

Версия правила сортировки, связанная с провайдером. Она записывается при создании правила сортировки, а затем проверяется при использовании, чтобы обнаружить изменения в определении правила сортировки, которые могут привести к повреждению данных.


Обратите внимание, что уникальный ключ в этом каталоге - (collname, collencoding, collnamespace), а не только (collname, collnamespace). Tantor SE обычно игнорирует все правила сортировки, у которых collencoding не равно кодировке текущей базы данных или -1, и запрещено создание новых записей с тем же именем, что и запись с collencoding = -1. Поэтому достаточно использовать полное SQL-имя (schema.name) для идентификации правила сортировки, хотя это не уникально согласно определению каталога. Причина такого определения каталога заключается в том, что initdb заполняет его при инициализации кластера записями для всех доступных на системе локалей, поэтому он должен быть способен содержать записи для всех кодировок, которые могут когда-либо использоваться в кластере.

В базе данных template0 может быть полезно создать правила сортировки, кодировка которых не совпадает с кодировкой базы данных, поскольку они могут совпадать с кодировками баз данных, созданных позднее из template0. В настоящее время это придется делать вручную.