50.12. pg_collation#

50.12. pg_collation

50.12. pg_collation #

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

Таблица 50.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 идентификатор локали для данного объекта правила сортировки

collicurules text

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

collversion text

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


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

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