graphql-engine/server/tests-py/queries/explain/orderby_array_relationship_query.yaml
Samir Talwar dd46aa6715 server: Preserve ordering when possible, and sort when it's not.
When upgrading to GHC v9.4, we noticed a number of failures because the sort order of HashMaps has changed. With this changeset, I am endeavoring to mitigate this now and in the future.

This makes one of two changes in a few areas where we depend on the sort order of elements in a `HashMap`:

  1. the ordering of the request is preserved with `InsOrdHashMap`, or
  2. we sort the data after retrieving it.

Fortunately, we do not do this anywhere where we _must_ preserve order; it's "just" descriptions, error messages, and OpenAPI metadata. The main problem is that tests are likely to fail each time we upgrade GHC (or whatever is providing the hash seed).

[NDAT-705]: https://hasurahq.atlassian.net/browse/NDAT-705?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9390
GitOrigin-RevId: 84503e029b44094edbbc298651744bc2843c15f3
2023-06-02 09:31:26 +00:00

30 lines
1.4 KiB
YAML

description: Explain query with order by and array relationship's column
url: /v1/graphql/explain
status: 200
query:
query:
query: |
query {
author {
name
articles(order_by: {id: desc}){
title
}
}
}
response:
- field: author
sql: "SELECT coalesce(json_agg(\"root\" ), '[]' ) AS \"root\" FROM (SELECT row_to_json((SELECT\
\ \"_e\" FROM (SELECT \"_root.base\".\"name\" AS \"name\", \"_root.ar.root.articles\"\
.\"articles\" AS \"articles\" ) AS \"_e\" ) ) AS \"root\" FROM (SELECT\
\ * FROM \"public\".\"author\" WHERE ('true') ) AS \"_root.base\" LEFT\
\ OUTER JOIN LATERAL (SELECT coalesce(json_agg(\"articles\" ORDER BY \"root.ar.root.articles.pg.id\"\
\ DESC NULLS FIRST), '[]' ) AS \"articles\" FROM (SELECT row_to_json((SELECT\
\ \"_e\" FROM (SELECT \"_root.ar.root.articles.base\".\"title\" AS \"title\"\
\ ) AS \"_e\" ) ) AS \"articles\", \"_root.ar.root.articles.base\"\
.\"id\" AS \"root.ar.root.articles.pg.id\" FROM (SELECT * FROM \"public\".\"\
article\" WHERE ((\"_root.base\".\"id\") = (\"author_id\")) ORDER BY \"id\"\
\ DESC NULLS FIRST ) AS \"_root.ar.root.articles.base\" ORDER BY \"root.ar.root.articles.pg.id\"\
\ DESC NULLS FIRST ) AS \"_root.ar.root.articles\" ) AS \"_root.ar.root.articles\"\
\ ON ('true') ) AS \"_root\" "