diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.mermaid b/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.mermaid index 709901ad8..3f9b7d2f4 100644 --- a/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.mermaid +++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.mermaid @@ -20,22 +20,12 @@ graph TD __Value2 --> Access10 __Value2 --> Access11 Lambda14{{"Lambda[14∈0] ➊
ᐸextractList_grafast_applyᐳ"}}:::plan - Constant71{{"Constant[71∈0] ➊
ᐸ[ 'PRIMARY_KEY_ASC' ]ᐳ"}}:::plan - Constant71 --> Lambda14 + Constant67{{"Constant[67∈0] ➊
ᐸ[ 'PRIMARY_KEY_ASC' ]ᐳ"}}:::plan + Constant67 --> Lambda14 ApplyInput15{{"ApplyInput[15∈0] ➊"}}:::plan Constant6 --> ApplyInput15 Lambda26{{"Lambda[26∈0] ➊
ᐸextractList_grafast_applyᐳ"}}:::plan Constant6 --> Lambda26 - ApplyInput27{{"ApplyInput[27∈0] ➊"}}:::plan - Constant6 --> ApplyInput27 - ApplyInput36{{"ApplyInput[36∈0] ➊"}}:::plan - Constant6 --> ApplyInput36 - ApplyInput45{{"ApplyInput[45∈0] ➊"}}:::plan - Constant6 --> ApplyInput45 - ApplyInput54{{"ApplyInput[54∈0] ➊"}}:::plan - Constant6 --> ApplyInput54 - ApplyInput63{{"ApplyInput[63∈0] ➊"}}:::plan - Constant6 --> ApplyInput63 __Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan PgSelect16[["PgSelect[16∈1] ➊
ᐸsingle_table_itemsᐳ"]]:::plan Object12 & Lambda14 & ApplyInput15 & Connection13 & Constant6 & Constant6 & Constant6 --> PgSelect16 @@ -49,119 +39,55 @@ graph TD PgSelectSingle19 --> PgClassExpression20 PgClassExpression21{{"PgClassExpression[21∈2]
ᐸ__single_t...s__.”type”ᐳ"}}:::plan PgSelectSingle19 --> PgClassExpression21 - PgSelect22[["PgSelect[22∈3]
ᐸsingle_table_itemsᐳ
ᐳSingleTableTopic"]]:::plan - Object12 & PgClassExpression20 & Lambda26 & Constant6 & Constant6 & ApplyInput27 --> PgSelect22 - PgSelect33[["PgSelect[33∈3]
ᐸsingle_table_itemsᐳ
ᐳSingleTablePost"]]:::plan - Object12 & PgClassExpression20 & Lambda26 & Constant6 & Constant6 & ApplyInput36 --> PgSelect33 - PgSelect42[["PgSelect[42∈3]
ᐸsingle_table_itemsᐳ
ᐳSingleTableDivider"]]:::plan - Object12 & PgClassExpression20 & Lambda26 & Constant6 & Constant6 & ApplyInput45 --> PgSelect42 - PgSelect51[["PgSelect[51∈3]
ᐸsingle_table_itemsᐳ
ᐳSingleTableChecklist"]]:::plan - Object12 & PgClassExpression20 & Lambda26 & Constant6 & Constant6 & ApplyInput54 --> PgSelect51 - PgSelect60[["PgSelect[60∈3]
ᐸsingle_table_itemsᐳ
ᐳSingleTableChecklistItem"]]:::plan - Object12 & PgClassExpression20 & Lambda26 & Constant6 & Constant6 & ApplyInput63 --> PgSelect60 + PgSelect22[["PgSelect[22∈3]
ᐸsingle_table_itemsᐳ
ᐳSingleTableTopic
ᐳSingleTablePost
ᐳSingleTableDivider
ᐳSingleTableChecklist
ᐳSingleTableChecklistItem"]]:::plan + Object12 & PgClassExpression20 & Lambda26 & Constant6 & Constant6 & ApplyInput15 --> PgSelect22 PgSelectRows28[["PgSelectRows[28∈3]"]]:::plan PgSelect22 --> PgSelectRows28 - PgSelectRows37[["PgSelectRows[37∈3]"]]:::plan - PgSelect33 --> PgSelectRows37 - PgSelectRows46[["PgSelectRows[46∈3]"]]:::plan - PgSelect42 --> PgSelectRows46 - PgSelectRows55[["PgSelectRows[55∈3]"]]:::plan - PgSelect51 --> PgSelectRows55 - PgSelectRows64[["PgSelectRows[64∈3]"]]:::plan - PgSelect60 --> PgSelectRows64 - __Item29[/"__Item[29∈4]
ᐸ28ᐳ"\]:::itemplan + __Item29[/"__Item[29∈4]
ᐸ28ᐳ
ᐳSingleTableTopic"\]:::itemplan PgSelectRows28 ==> __Item29 PgSelectSingle30{{"PgSelectSingle[30∈4]
ᐸsingle_table_itemsᐳ"}}:::plan __Item29 --> PgSelectSingle30 - PgClassExpression31{{"PgClassExpression[31∈4]
ᐸ__single_t...ems__.”id”ᐳ"}}:::plan + PgClassExpression31{{"PgClassExpression[31∈4]
ᐸ__single_t...ems__.”id”ᐳ
ᐳSingleTableTopic
ᐳSingleTablePost
ᐳSingleTableDivider
ᐳSingleTableChecklist
ᐳSingleTableChecklistItem"}}:::plan PgSelectSingle30 --> PgClassExpression31 - PgClassExpression32{{"PgClassExpression[32∈4]
ᐸ__single_t...”position”ᐳ"}}:::plan + PgClassExpression32{{"PgClassExpression[32∈4]
ᐸ__single_t...”position”ᐳ
ᐳSingleTableTopic
ᐳSingleTablePost
ᐳSingleTableDivider
ᐳSingleTableChecklist
ᐳSingleTableChecklistItem"}}:::plan PgSelectSingle30 --> PgClassExpression32 - __Item38[/"__Item[38∈6]
ᐸ37ᐳ"\]:::itemplan - PgSelectRows37 ==> __Item38 - PgSelectSingle39{{"PgSelectSingle[39∈6]
ᐸsingle_table_itemsᐳ"}}:::plan - __Item38 --> PgSelectSingle39 - PgClassExpression40{{"PgClassExpression[40∈6]
ᐸ__single_t...ems__.”id”ᐳ"}}:::plan - PgSelectSingle39 --> PgClassExpression40 - PgClassExpression41{{"PgClassExpression[41∈6]
ᐸ__single_t...”position”ᐳ"}}:::plan - PgSelectSingle39 --> PgClassExpression41 - __Item47[/"__Item[47∈8]
ᐸ46ᐳ"\]:::itemplan - PgSelectRows46 ==> __Item47 - PgSelectSingle48{{"PgSelectSingle[48∈8]
ᐸsingle_table_itemsᐳ"}}:::plan - __Item47 --> PgSelectSingle48 - PgClassExpression49{{"PgClassExpression[49∈8]
ᐸ__single_t...ems__.”id”ᐳ"}}:::plan - PgSelectSingle48 --> PgClassExpression49 - PgClassExpression50{{"PgClassExpression[50∈8]
ᐸ__single_t...”position”ᐳ"}}:::plan - PgSelectSingle48 --> PgClassExpression50 - __Item56[/"__Item[56∈10]
ᐸ55ᐳ"\]:::itemplan - PgSelectRows55 ==> __Item56 - PgSelectSingle57{{"PgSelectSingle[57∈10]
ᐸsingle_table_itemsᐳ"}}:::plan - __Item56 --> PgSelectSingle57 - PgClassExpression58{{"PgClassExpression[58∈10]
ᐸ__single_t...ems__.”id”ᐳ"}}:::plan - PgSelectSingle57 --> PgClassExpression58 - PgClassExpression59{{"PgClassExpression[59∈10]
ᐸ__single_t...”position”ᐳ"}}:::plan - PgSelectSingle57 --> PgClassExpression59 - __Item65[/"__Item[65∈12]
ᐸ64ᐳ"\]:::itemplan - PgSelectRows64 ==> __Item65 - PgSelectSingle66{{"PgSelectSingle[66∈12]
ᐸsingle_table_itemsᐳ"}}:::plan - __Item65 --> PgSelectSingle66 - PgClassExpression67{{"PgClassExpression[67∈12]
ᐸ__single_t...ems__.”id”ᐳ"}}:::plan - PgSelectSingle66 --> PgClassExpression67 - PgClassExpression68{{"PgClassExpression[68∈12]
ᐸ__single_t...”position”ᐳ"}}:::plan - PgSelectSingle66 --> PgClassExpression68 %% define steps subgraph "Buckets for queries/polymorphic/single-table-items-and-children" Bucket0("Bucket 0 (root)"):::bucket classDef bucket0 stroke:#696969 - class Bucket0,__Value2,__Value4,Constant6,Access10,Access11,Object12,Connection13,Lambda14,ApplyInput15,Lambda26,ApplyInput27,ApplyInput36,ApplyInput45,ApplyInput54,ApplyInput63,Constant71 bucket0 - Bucket1("Bucket 1 (nullableBoundary)
Deps: 12, 14, 15, 13, 6, 26, 27, 36, 45, 54, 63

ROOT Connectionᐸ9ᐳ[13]
1: PgSelect[16]
2: PgSelectRows[17]"):::bucket + class Bucket0,__Value2,__Value4,Constant6,Access10,Access11,Object12,Connection13,Lambda14,ApplyInput15,Lambda26,Constant67 bucket0 + Bucket1("Bucket 1 (nullableBoundary)
Deps: 12, 14, 15, 13, 6, 26

ROOT Connectionᐸ9ᐳ[13]
1: PgSelect[16]
2: PgSelectRows[17]"):::bucket classDef bucket1 stroke:#00bfff class Bucket1,PgSelect16,PgSelectRows17 bucket1 - Bucket2("Bucket 2 (listItem)
Deps: 12, 26, 6, 27, 36, 45, 54, 63

ROOT __Item{2}ᐸ17ᐳ[18]"):::bucket + Bucket2("Bucket 2 (listItem)
Deps: 12, 26, 6, 15

ROOT __Item{2}ᐸ17ᐳ[18]"):::bucket classDef bucket2 stroke:#7f007f class Bucket2,__Item18,PgSelectSingle19,PgClassExpression20,PgClassExpression21 bucket2 - Bucket3("Bucket 3 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 12, 20, 26, 6, 27, 36, 45, 54, 63, 19, 21
ᐳSingleTableTopic
ᐳSingleTablePost
ᐳSingleTableDivider
ᐳSingleTableChecklist
ᐳSingleTableChecklistItem

1: 22, 33, 42, 51, 60
2: 28, 37, 46, 55, 64"):::bucket + Bucket3("Bucket 3 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 12, 20, 26, 6, 15, 19, 21
ᐳSingleTableTopic
ᐳSingleTablePost
ᐳSingleTableDivider
ᐳSingleTableChecklist
ᐳSingleTableChecklistItem

1: PgSelect[22]
2: PgSelectRows[28]"):::bucket classDef bucket3 stroke:#ffa500 - class Bucket3,PgSelect22,PgSelectRows28,PgSelect33,PgSelectRows37,PgSelect42,PgSelectRows46,PgSelect51,PgSelectRows55,PgSelect60,PgSelectRows64 bucket3 + class Bucket3,PgSelect22,PgSelectRows28 bucket3 Bucket4("Bucket 4 (listItem)

ROOT __Item{4}ᐸ28ᐳ[29]"):::bucket classDef bucket4 stroke:#0000ff class Bucket4,__Item29,PgSelectSingle30,PgClassExpression31,PgClassExpression32 bucket4 Bucket5("Bucket 5 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 30, 31, 32
ᐳSingleTableTopicᐳSingleTableTopic
ᐳSingleTableTopicᐳSingleTablePost
ᐳSingleTableTopicᐳSingleTableDivider
ᐳSingleTableTopicᐳSingleTableChecklist
ᐳSingleTableTopicᐳSingleTableChecklistItem"):::bucket classDef bucket5 stroke:#7fff00 class Bucket5 bucket5 - Bucket6("Bucket 6 (listItem)

ROOT __Item{6}ᐸ37ᐳ[38]"):::bucket + Bucket6("Bucket 6 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 30, 31, 32
ᐳSingleTablePostᐳSingleTableTopic
ᐳSingleTablePostᐳSingleTablePost
ᐳSingleTablePostᐳSingleTableDivider
ᐳSingleTablePostᐳSingleTableChecklist
ᐳSingleTablePostᐳSingleTableChecklistItem"):::bucket classDef bucket6 stroke:#ff1493 - class Bucket6,__Item38,PgSelectSingle39,PgClassExpression40,PgClassExpression41 bucket6 - Bucket7("Bucket 7 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 39, 40, 41
ᐳSingleTablePostᐳSingleTableTopic
ᐳSingleTablePostᐳSingleTablePost
ᐳSingleTablePostᐳSingleTableDivider
ᐳSingleTablePostᐳSingleTableChecklist
ᐳSingleTablePostᐳSingleTableChecklistItem"):::bucket + class Bucket6 bucket6 + Bucket7("Bucket 7 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 30, 31, 32
ᐳSingleTableDividerᐳSingleTableTopic
ᐳSingleTableDividerᐳSingleTablePost
ᐳSingleTableDividerᐳSingleTableDivider
ᐳSingleTableDividerᐳSingleTableChecklist
ᐳSingleTableDividerᐳSingleTableChecklistItem"):::bucket classDef bucket7 stroke:#808000 class Bucket7 bucket7 - Bucket8("Bucket 8 (listItem)

ROOT __Item{8}ᐸ46ᐳ[47]"):::bucket + Bucket8("Bucket 8 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 30, 31, 32
ᐳSingleTableChecklistᐳSingleTableTopic
ᐳSingleTableChecklistᐳSingleTablePost
ᐳSingleTableChecklistᐳSingleTableDivider
ᐳSingleTableChecklistᐳSingleTableChecklist
ᐳSingleTableChecklistᐳSingleTableChecklistItem"):::bucket classDef bucket8 stroke:#dda0dd - class Bucket8,__Item47,PgSelectSingle48,PgClassExpression49,PgClassExpression50 bucket8 - Bucket9("Bucket 9 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 48, 49, 50
ᐳSingleTableDividerᐳSingleTableTopic
ᐳSingleTableDividerᐳSingleTablePost
ᐳSingleTableDividerᐳSingleTableDivider
ᐳSingleTableDividerᐳSingleTableChecklist
ᐳSingleTableDividerᐳSingleTableChecklistItem"):::bucket + class Bucket8 bucket8 + Bucket9("Bucket 9 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 30, 31, 32
ᐳSingleTableChecklistItemᐳSingleTableTopic
ᐳSingleTableChecklistItemᐳSingleTablePost
ᐳSingleTableChecklistItemᐳSingleTableDivider
ᐳSingleTableChecklistItemᐳSingleTableChecklist
ᐳSingleTableChecklistItemᐳSingleTableChecklistItem"):::bucket classDef bucket9 stroke:#ff0000 class Bucket9 bucket9 - Bucket10("Bucket 10 (listItem)

ROOT __Item{10}ᐸ55ᐳ[56]"):::bucket - classDef bucket10 stroke:#ffff00 - class Bucket10,__Item56,PgSelectSingle57,PgClassExpression58,PgClassExpression59 bucket10 - Bucket11("Bucket 11 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 57, 58, 59
ᐳSingleTableChecklistᐳSingleTableTopic
ᐳSingleTableChecklistᐳSingleTablePost
ᐳSingleTableChecklistᐳSingleTableDivider
ᐳSingleTableChecklistᐳSingleTableChecklist
ᐳSingleTableChecklistᐳSingleTableChecklistItem"):::bucket - classDef bucket11 stroke:#00ffff - class Bucket11 bucket11 - Bucket12("Bucket 12 (listItem)

ROOT __Item{12}ᐸ64ᐳ[65]"):::bucket - classDef bucket12 stroke:#4169e1 - class Bucket12,__Item65,PgSelectSingle66,PgClassExpression67,PgClassExpression68 bucket12 - Bucket13("Bucket 13 (polymorphic)
SingleTableTopic,SingleTablePost,SingleTableDivider,SingleTableChecklist,SingleTableChecklistItem
Deps: 66, 67, 68
ᐳSingleTableChecklistItemᐳSingleTableTopic
ᐳSingleTableChecklistItemᐳSingleTablePost
ᐳSingleTableChecklistItemᐳSingleTableDivider
ᐳSingleTableChecklistItemᐳSingleTableChecklist
ᐳSingleTableChecklistItemᐳSingleTableChecklistItem"):::bucket - classDef bucket13 stroke:#3cb371 - class Bucket13 bucket13 Bucket0 --> Bucket1 Bucket1 --> Bucket2 Bucket2 --> Bucket3 - Bucket3 --> Bucket4 & Bucket6 & Bucket8 & Bucket10 & Bucket12 - Bucket4 --> Bucket5 - Bucket6 --> Bucket7 - Bucket8 --> Bucket9 - Bucket10 --> Bucket11 - Bucket12 --> Bucket13 + Bucket3 --> Bucket4 + Bucket4 --> Bucket5 & Bucket6 & Bucket7 & Bucket8 & Bucket9 end diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.sql b/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.sql index 9df042406..f4eb0f6b4 100644 --- a/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.sql +++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/single-table-items-and-children.sql @@ -4,61 +4,6 @@ select from "polymorphic"."single_table_items" as __single_table_items__ order by __single_table_items__."id" asc; -select __single_table_items_result__.* -from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from json_array_elements($1::json) with ordinality as ids) as __single_table_items_identifiers__, -lateral ( - select - __single_table_items__."id"::text as "0", - __single_table_items__."position"::text as "1", - __single_table_items__."type"::text as "2", - __single_table_items_identifiers__.idx as "3" - from "polymorphic"."single_table_items" as __single_table_items__ - where ( - __single_table_items__."parent_id" = __single_table_items_identifiers__."id0" - ) - order by __single_table_items__."id" asc -) as __single_table_items_result__; - -select __single_table_items_result__.* -from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from json_array_elements($1::json) with ordinality as ids) as __single_table_items_identifiers__, -lateral ( - select - __single_table_items__."id"::text as "0", - __single_table_items__."position"::text as "1", - __single_table_items__."type"::text as "2", - __single_table_items_identifiers__.idx as "3" - from "polymorphic"."single_table_items" as __single_table_items__ - where ( - __single_table_items__."parent_id" = __single_table_items_identifiers__."id0" - ) - order by __single_table_items__."id" asc -) as __single_table_items_result__; - -select __single_table_items_result__.* -from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from json_array_elements($1::json) with ordinality as ids) as __single_table_items_identifiers__, -lateral ( - select - __single_table_items__."id"::text as "0", - __single_table_items__."position"::text as "1", - __single_table_items__."type"::text as "2", - __single_table_items_identifiers__.idx as "3" - from "polymorphic"."single_table_items" as __single_table_items__ - where ( - __single_table_items__."parent_id" = __single_table_items_identifiers__."id0" - ) - order by __single_table_items__."id" asc -) as __single_table_items_result__; - -select - __single_table_items__."id"::text as "0", - __single_table_items__."position"::text as "1", - __single_table_items__."type"::text as "2" -from "polymorphic"."single_table_items" as __single_table_items__ -where ( - __single_table_items__."parent_id" = $1::"int4" -) -order by __single_table_items__."id" asc; - select __single_table_items_result__.* from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from json_array_elements($1::json) with ordinality as ids) as __single_table_items_identifiers__, lateral (