Если у вас есть такое перечисление:
CREATE TYPE payment_status AS ENUM ('preview', 'pending', 'paid',
'reviewing', 'confirmed', 'cancelled');
Вы можете создать список действительных элементов, таких как:
SELECT i, (enum_range(NULL::payment_status))[i]
FROM generate_series(1, array_length(enum_range(NULL::payment_status), 1)) i
Что дает:
i | enum_range
---+------------
1 | preview
2 | pending
3 | paid
4 | reviewing
5 | confirmed
6 | cancelled
(6 rows)