50.20. pg_enum#

50.20. pg_enum

50.20. pg_enum #

Каталог pg_enum содержит записи, показывающие значения и метки для каждого типа перечисления. Внутреннее представление заданного значения перечисления фактически является OID его связанной строки в pg_enum.

Таблица 50.20. pg_enum Колонки

Тип столбца

Описание

oid oid

Идентификатор строки

enumtypid oid (ссылается на pg_type.oid)

OID pg_type, владеющий этим значением перечисления

enumsortorder float4

Позиция сортировки этого значения перечисления внутри его типа перечисления.

enumlabel name

Текстовая метка для этого значения перечисления


OID для строк pg_enum следуют особому правилу: OID с четными номерами гарантированно упорядочены так же, как и порядок сортировки их перечислимого типа. То есть, если два четных OID принадлежат одному и тому же перечислимому типу, то меньший OID должен иметь меньшее значение enumsortorder. Значения OID с нечетными номерами не имеют отношения к порядку сортировки. Это правило позволяет функциям сравнения перечислимых типов избегать обращений к каталогу во многих обычных случаях. Функции, создающие и изменяющие перечислимые типы, стараются назначать четные OID значениям перечислений, когда это возможно.

Когда создается перечисляемый тип, его элементам присваиваются позиции сортировки от 1 до n. Однако, элементам, добавленным позже, могут быть присвоены отрицательные или дробные значения enumsortorder. Единственное требование к этим значениям - они должны быть правильно упорядочены и уникальны в пределах каждого перечисляемого типа.