PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.5 » Internes » Catalogues système » pg_collation

53.12. pg_collation #

Le catalogue pg_collation décrit les collationnements disponibles, qui sont essentiellement des correspondances entre un nom SQL et des catégories de locales du système d'exploitation. Voir Section 24.2 pour plus d'informations.

Tableau 53.12. Colonnes de pg_collation

Type

Description

oid oid

Identifiant de ligne

collname name

Nom du collationnement (unique par schéma et encodage)

collnamespace oid (référence pg_namespace.oid)

L'OID du schéma contenant ce collationnement

collowner oid (référence pg_authid.oid)

Propriétaire du collationnement

collprovider char

Fournisseur du collationnement : d = le défaut de la base de données, c = libc, i = icu

collisdeterministic bool

Est-ce que le collationnement est déterministe ?

collencoding int4

Encodage pour lequel le collationnement est disponible. -1 s'il fonctionne pour tous les encodages

collcollate text

LC_COLLATE pour ce collationnement

collctype text

LC_CTYPE pour ce collationnement

colliculocale text

Identifiant de la locale ICU pour cette collation

collicurules text

règles de collation ICU pour cette collation

collversion text

Version spécifique au fournisseur du collationnement. C'est enregistré quand le collationnement est créé, puis vérifié quand il est utilisé, pour détecter les changements dans la définition du collationnement qui pourraient amener une corruption des données.


Notez que la clé unique de ce catalogue est (collname, collencoding, collnamespace) et non pas seulement (collname, collnamespace). PostgreSQL ignore habituellement tous les collationnement qui n'ont pas de colonne collencoding égale soit à l'encodage de la base de données en cours ou -1. La création de nouvelles entrées de même nom qu'une autre entrée dont collencoding vaut -1 est interdite. Du coup, il suffit d'utiliser un nom SQL qualifié du schéma (schéma.nom) pour identifier un collationnement bien que cela ne soit pas unique d'après la définition du catalogue. Ce catalogue a été défini ainsi car initdb le remplit au moment de l'initialisation de l'instance avec les entrées pour toutes les locales disponibles sur le système, donc il doit être capable de contenir les entrées de tous les encodages qui pourraient être utilisés dans l'instance.

Dans la base de données template0, il pourrait être utile de créer les collationnement dont l'encodage ne correspond pas à l'encodage de la base ded onnées car ils pourraient correspondre aux encodages de bases de données créées par la suite à partir de ce modèle de base de données. Cela doit être fait manuellement actuellement.