Myslím, že budete muset zkontrolovat verzi PostgreSQL a vhodně změnit chování, nebo použít SQL, které se nedotýká katalogu, abyste určili pořadí.
Nápad na to druhé, vzhledem k fiktivnímu výčtu:
CREATE TYPE test_enum AS ENUM ('z','x','y');
ALTER TYPE test_enum ADD VALUE 'a' BEFORE 'x';
je ORDER BY
přetypování štítku výčtu na hodnoty typu výčtu pomocí row_number
funkce okna dostupná ve verzi 8.4 a novější:
SELECT enumlabel, row_number() OVER (ORDER BY enumlabel::test_enum) AS sort_key
FROM pg_catalog.pg_enum
WHERE enumtypid = 'test_enum'::regtype;
Tím získáte štítky seřazené podle klíče řazení. Ve starších verzích Pg bude Pg řadit pouze podle oid
hodnot enum, v novějších verzích bude používat enumsortorder, ale vás to nemusí zajímat ani tak, právě jste řekli PostgreSQL "seřaďte je prosím do správného pořadí".
Nebo pokud je potřebujete v pořadí, jaké server očekává, napište:
SELECT enumlabel
FROM pg_catalog.pg_enum
WHERE enumtypid = 'test_enum'::regtype
ORDER BY enumlabel::test_enum