52.12. pg_collation #

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

oid oid

Identificador da linha

collname name

Nome da ordenação (único por espaço de nomes e codificação)

collnamespace oid (referencia pg_namespace.oid)

OID do espaço de nomes que contém esta ordenação

collowner oid (referencia pg_authid.oid)

Dono da ordenação

collprovider char

Provedor da ordenação d = padrão do banco de dados, b = integrado, c = libc, i = icu

collisdeterministic bool

A ordenação é determinística?

collencoding int4

A codificação na qual a ordenação é aplicável, ou -1 se funcionar para qualquer codificação

collcollate text

LC_COLLATE para este objeto de ordenação. Se o provedor não for libc, collcollate será NULL e colllocale será usado em seu lugar.

collctype text

LC_CTYPE para este objeto de ordenação. Se o provedor não for libc, collctype será NULL e colllocale será usado em seu lugar.

colllocale text

Nome da localidade do provedor de ordenação para este objeto de ordenação. Se o provedor for a libc, colllocale será NULL; collcollate e collctype serão usados em seu lugar.

collicurules text

Regras de ordenação ICU para este objeto de ordenação

collversion text

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)


52.12.1. Veja também #

CREATE COLLATION, ALTER COLLATION, DROP COLLATION, collations