52.12. pg_collation#

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

Таблица 52.12. Столбцы pg_collation

Тип столбца

Описание

oidoid

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

collnamename

Имя правила сортировки (уникальное для пространства имён и кодировки)

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

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

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

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

collproviderchar

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

collisdeterministicbool

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

collencodingint4

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

collcollatetext

LC_COLLATE для данного объекта

collctypetext

LC_CTYPE для данного объекта

colliculocaletext

ID локали ICU для данного объекта

collicurulestext

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

collversiontext

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


Заметьте, что уникальный ключ в этом каталоге определён как (collname, collencoding, collnamespace), а не просто как (collname, collnamespace). Вообще Postgres Pro игнорирует все правила сортировки, для которых collencoding не равняется кодировке текущей базы данных или -1, а создание новых записей с тем же именем, которое уже имеет запись с collencoding = -1, запрещено. Таким образом, достаточно использовать полное имя SQL (схема.имя) для указания правила сортировки, несмотря на то, что оно может быть неуникальным согласно определению каталога. Такая организация каталога объясняется тем, что программа initdb наполняет его в момент инициализации кластера записями для всех локалей, обнаруженных в системе, так что она должна иметь возможность сохранить записи для всех кодировок, которые могут вообще когда-либо применяться в кластере.

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

close