O catálogo pg_collation descreve as ordenações disponíveis, que são essencialmente mapeamentos de um nome SQL para categorias de localidade do sistema operacional. Veja Suporte a ordenação para obter mais informações.
Tabela 52.12. Colunas de pg_collation
Coluna Tipo de dados Descrição |
|---|
Identificador da linha |
Nome da ordenação (único por espaço de nomes e codificação) |
OID do espaço de nomes que contém esta ordenação |
Dono da ordenação |
Provedor da ordenação
|
A ordenação é determinística? |
A codificação na qual a ordenação é aplicável, ou -1 se funcionar para qualquer codificação |
|
|
Nome da localidade do provedor de ordenação para este objeto de
ordenação.
Se o provedor for a |
Regras de ordenação ICU para este objeto de ordenação |
Versão da ordenação específica do provedor. É registrado quando a ordenação é criada e, posteriormente, verificado quando ela é utilizada, para detectar alterações na definição da ordenação que poderiam levar à corrupção de dados. |
Note-se que a chave de unicidade neste catálogo é
(collname, collencoding,
collnamespace) e não apenas
(collname, collnamespace).
O PostgreSQL geralmente ignora todas as
ordenações que não possuem collencoding
igual à codificação do banco de dados corrente ou -1, e a criação de
novas entradas com o mesmo nome de uma entrada com
collencoding = -1 é proibida.
Portanto, é suficiente usar um nome SQL qualificado
(esquema.nome)
para identificar uma ordenação, mesmo que ele não seja único
segundo a definição do catálogo.
A razão para definir o catálogo dessa maneira é que
initdb o preenche no momento da
inicialização da instância com entradas para todos os códigos de
idioma disponíveis no sistema, portanto deve ser capaz de conter
entradas para todas as codificações que possam ser usadas na instância.
No banco de dados template0 pode ser útil criar
ordenações cuja codificação não corresponda à codificação do banco
de dados, já que poderiam corresponder às codificações de bancos de
dados posteriormente clonados de template0.
No momento, isto teria que ser feito manualmente.
Exemplo 52.6. Exemplo do tradutor
Ordenações para o Português do Brasil
Uso do catálogo pg_collation para mostrar as orrdenações disponíveis para o Português do Brasil.
ana=> SELECT oid, collname, collcollate, collctype ana-> FROM pg_collation ana-> WHERE collname LIKE 'pt_BR%';
oid | collname | collcollate | collctype -------+-------------+-------------+------------ 12361 | pt_BR.utf8 | pt_BR.utf8 | pt_BR.utf8 12363 | pt_BR | pt_BR.utf8 | pt_BR.utf8 12967 | pt-BR-x-icu | | (3 linhas)