pg_collation#

Примечание

Эта страница переведена при помощи нейросети GigaChat.

Каталог pg_collation описывает доступные колации, которые по сути являются отображениями имени SQL на категории локали операционной системы. Дополнительные сведения см. в разделе «Поддержка сопоставления».

Столбцы 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 для данного объекта collation

collctype

text

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

colliculocale

colliculocale Идентификатор локали ICU для данного объекта collation

collversion

text

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

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

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