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 (