51.20. pg_enum
#
В каталоге pg_enum
содержатся записи, определяющие значения и метки для всех типов-перечислений. Внутренним представлением значения перечисления на самом деле является OID соответствующей строки в pg_enum
.
Таблица 51.20. Столбцы pg_enum
Идентификаторы OID в строках pg_enum
подчиняются особому правилу: чётные OID гарантированно упорядочиваются по порядку сортировки их типа перечисления. То есть, если к одному перечислению относятся два чётных OID, меньшему OID должно соответствовать меньшее значение enumsortorder
. Нечётные значения OID могут быть не связаны с этим порядком сортировки. Это правило позволяет во многих случаях сравнивать значения перечислений, не обращаясь к каталогам. Процедуры, создающие и изменяющие перечисления, пытаются присваивать значениям перечислений чётные OID, если это возможно.
Когда создаётся тип перечисления, его членам назначаются позиции по порядку сортировки 1..n
. Но у членов, добавляемых позже, могут оказаться отрицательные или дробные значения enumsortorder
. Единственное, что требуется — чтобы эти значения были правильно упорядочены и уникальны в рамках перечисления.