diff --git a/CHANGELOG.md b/CHANGELOG.md index bd286a051..c263acdc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,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 ### Changed diff --git a/src/PostgREST/SchemaCache.hs b/src/PostgREST/SchemaCache.hs index f1aac53b6..71fc3c8bd 100644 --- a/src/PostgREST/SchemaCache.hs +++ b/src/PostgREST/SchemaCache.hs @@ -651,7 +651,7 @@ tablesSqlQuery = 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 @@ -688,14 +688,13 @@ tablesSqlQuery = 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 GROUP BY info.relid ), tbl_pk_cols AS (