diff --git a/CHANGELOG.md b/CHANGELOG.md index d04f22ef9..c52c159b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed - #3091, Broken link in OpenAPI description `externalDocs` - @salim-b + - #3659, Embed One-to-One relationship with different column order properly - @wolfgangwalther ## [12.2.2] - 2024-07-10 diff --git a/src/PostgREST/SchemaCache.hs b/src/PostgREST/SchemaCache.hs index be34c29fe..e373727d2 100644 --- a/src/PostgREST/SchemaCache.hs +++ b/src/PostgREST/SchemaCache.hs @@ -872,7 +872,7 @@ allM2OandO2ORels pgVer = JOIN LATERAL ( SELECT array_agg(row(cols.attname, refs.attname) order by ord) AS cols_and_fcols, - jsonb_agg(cols.attname order by ord) AS cols + jsonb_agg(cols.attname order by cols.attnum) AS cols FROM unnest(traint.conkey, traint.confkey) WITH ORDINALITY AS _(col, ref, ord) JOIN pg_attribute cols ON cols.attrelid = traint.conrelid AND cols.attnum = col JOIN pg_attribute refs ON refs.attrelid = traint.confrelid AND refs.attnum = ref diff --git a/test/spec/fixtures/schema.sql b/test/spec/fixtures/schema.sql index fdb472bbd..1b7e8dff2 100644 --- a/test/spec/fixtures/schema.sql +++ b/test/spec/fixtures/schema.sql @@ -2872,7 +2872,7 @@ CREATE TABLE test.students_info( , code text , address text , primary key(id, code) -, foreign key (id, code) references test.students(id, code) on delete cascade +, foreign key (code, id) references test.students(code, id) on delete cascade ); CREATE TABLE test.country(