diff --git a/CHANGELOG.md b/CHANGELOG.md index b0b4e28cb..62d020041 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). - #3093, Nested empty embeds no longer show empty values and are correctly omitted - @laurenceisla - #3644, Make --dump-schema work with in-database pgrst.db_schemas setting - @wolfgangwalther - #3644, Show number of timezones in schema cache load report - @wolfgangwalther + - #3644, List correct enum options in OpenApi output when multiple types with same name are present - @wolfgangwalther ## [12.2.1] - 2024-06-27 diff --git a/src/PostgREST/SchemaCache.hs b/src/PostgREST/SchemaCache.hs index 3ce106534..be34c29fe 100644 --- a/src/PostgREST/SchemaCache.hs +++ b/src/PostgREST/SchemaCache.hs @@ -647,7 +647,7 @@ tablesSqlQuery pgVer = information_schema._pg_truetypid(a.*, t.*), information_schema._pg_truetypmod(a.*, t.*) )::integer AS character_maximum_length, - COALESCE(bt.typname, t.typname)::name AS udt_name, + COALESCE(bt.oid, t.oid) AS base_type, a.attnum::integer AS position FROM pg_attribute a LEFT JOIN pg_description AS d @@ -691,14 +691,13 @@ tablesSqlQuery pgVer = FROM columns info LEFT OUTER JOIN ( SELECT - n.nspname AS s, - t.typname AS n, + e.enumtypid, array_agg(e.enumlabel ORDER BY e.enumsortorder) AS vals FROM pg_type t JOIN pg_enum e ON t.oid = e.enumtypid JOIN pg_namespace n ON n.oid = t.typnamespace - GROUP BY s,n - ) AS enum_info ON info.udt_name = enum_info.n + GROUP BY enumtypid + ) AS enum_info ON info.base_type = enum_info.enumtypid WHERE info.table_schema NOT IN ('pg_catalog', 'information_schema') GROUP BY info.table_schema, info.table_name ),