pg_enum
Le catalogue système pg_enum
contient des
entrées indiquant les valeurs et labels de chaque type enum. La
représentation interne d'une valeur enum donnée est en fait l'OID de
sa ligne associée dans pg_enum
.
Tableau 51.21. Colonnes de pg_enum
Nom | Type | Références | Description |
---|---|---|---|
oid | oid | Identifiant de ligne (attribut caché ; doit être sélectionné explicitement) | |
enumtypid | oid |
| OID de l'entrée pg_type correspondant à
cette valeur d'enum |
enumsortorder | float4 | La position de tri de cette valeur enum dans son type enum | |
enumlabel | name | Le label texte pour cette valeur d'enum |
Les OID des lignes de pg_enum
suivent une
règle spéciale : les OID pairs sont garantis triés de la même
façon que l'ordre de tri de leur type enum. Autrement dit, si deux OID
pairs appartiennent au même type enum, l'OID le plus petit doit avoir
la plus petite valeur dans la colonne
enumsortorder
. Les valeurs d'OID impaires
n'ont pas d'ordre de tri. Cette règle permet que les routines de
comparaison d'enum évitent les recherches dans les catalogues dans la
plupart des cas standards. Les routines qui créent et modifient les
types enum tentent d'affecter des OID paires aux valeurs enum tant que
c'est possible.
Quand un type enum est créé, ses membres sont affectés dans l'ordre
des positions 1..n
. Les membres ajoutés par
la suite doivent se voir affecter des valeurs négatives ou
fractionnelles de enumsortorder
. Le seul
prérequis pour ces valeurs est qu'elles soient correctement triées
et uniques pour chaque type enum.