pg_enum
Каталог pg_enum
содержит записи, показывающие значения и метки для каждого типа перечисления. Внутреннее представление значения перечисления - это OID связанной с ним строки в pg_enum
.
Столбец | Тип данных | Описание |
---|---|---|
oid | oid | Идентификатор строки |
enumtypid | oid (ссылается на pg_type.oid | OID записи pg_type, владеющей этим значением enum |
enumsortorder | float4 | Положение сортировки этого значения среды в ее типе среды |
enumlabel | name | Текстовая метка для этого значения метки ввода |
Идентификаторы OID для строк pg_enum
подчиняются специальному правилу: четные OID гарантированно упорядочиваются так же, как и сортировка их типа перечисления. То есть, если два четных OID принадлежат к одному и тому же типу перечисления, меньший OID должен иметь меньшее значение enumsortorder
. Нечетные значения OID не должны иметь отношения к порядку сортировки. Это правило позволяет процедурам сравнения перечислений избежать поиска в каталоге во многих распространенных случаях. Подпрограммы, создающие и изменяющие типы перечислений, стараются по возможности присваивать значениям перечислений четные OID.
При создании типа перечисления его членам присваивается порядок сортировки 1...n. Но членам, добавляемым позже, могут быть присвоены отрицательные или дробные значения порядка перечисления. Единственное требование к этим значениям - они должны быть правильно упорядочены и уникальны в пределах каждого типа перечисления.