51.12. pg_collation
#
В каталоге pg_collation
описываются доступные правила сортировки, которые по сути представляют собой сопоставления идентификаторов SQL с категориями локалей операционной системы. За дополнительными сведениями обратитесь к Разделу 22.2.
Таблица 51.12. Столбцы pg_collation
Тип столбца Описание |
---|
Идентификатор строки |
Имя правила сортировки (уникальное для пространства имён и кодировки) |
OID пространства имён, содержащего это правило сортировки |
Владелец правила сортировки |
Провайдер правила сортировки: |
Является ли правило сортировки детерминированным? |
Кодировка, для которой применимо это правило, или -1, если оно работает с любой кодировкой |
|
|
Имя локали провайдера правил сортировки для этого объекта. Если провайдер — |
Правила сортировки ICU для данного объекта |
Определяемая провайдером версия правила сортировки. Она записывается при создании правила сортировки и проверяется при использовании для обнаружения изменений в его определении, чреватых повреждением данных. |
Заметьте, что уникальный ключ в этом каталоге определён как (collname
, collencoding
, collnamespace
), а не просто как (collname
, collnamespace
). Вообще Postgres Pro игнорирует все правила сортировки, для которых collencoding
не равняется кодировке текущей базы данных или -1, а создание новых записей с тем же именем, которое уже имеет запись с collencoding
= -1, запрещено. Таким образом, достаточно использовать полное имя SQL (схема
.имя
) для указания правила сортировки, несмотря на то, что оно может быть неуникальным согласно определению каталога. Такая организация каталога объясняется тем, что программа initdb наполняет его в момент инициализации кластера записями для всех локалей, обнаруженных в системе, так что она должна иметь возможность сохранить записи для всех кодировок, которые могут вообще когда-либо применяться в кластере.
В базе данных template0
может быть полезно создать правила сортировки, кодировки которых не соответствуют кодировке этой базы, но которые могут оказаться у баз данных, скопированных впоследствии из template0
. В настоящее время это придётся проделать вручную.