diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.mermaid b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.mermaid
index cf542d4bb..abf595d1f 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.mermaid
@@ -12,7 +12,10 @@ graph TD
PgSelect8[["PgSelect[8∈0] ➊
ᐸforumsᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda12[["Lambda[12∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Object11 & Lambda12 --> PgSelect8
+ PgSelectInlineApply55["PgSelectInlineApply[55∈0] ➊"]:::plan
+ Object11 & Lambda12 & PgSelectInlineApply55 --> PgSelect8
+ Lambda25[["Lambda[25∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ Lambda25 --> PgSelectInlineApply55
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
@@ -20,13 +23,12 @@ graph TD
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access9
__Value2 --> Access10
- Constant55{{"Constant[55∈0] ➊
ᐸ'EXCLUSIVELY'ᐳ"}}:::plan
- Constant55 --> Lambda12
+ Constant59{{"Constant[59∈0] ➊
ᐸ'EXCLUSIVELY'ᐳ"}}:::plan
+ Constant59 --> Lambda12
PgSelectRows13[["PgSelectRows[13∈0] ➊"]]:::plan
PgSelect8 --> PgSelectRows13
- Lambda25[["Lambda[25∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Constant56{{"Constant[56∈0] ➊
ᐸ'INHERIT'ᐳ"}}:::plan
- Constant56 --> Lambda25
+ Constant60{{"Constant[60∈0] ➊
ᐸ'INHERIT'ᐳ"}}:::plan
+ Constant60 --> Lambda25
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
__Item14[/"__Item[14∈1]
ᐸ13ᐳ"\]:::itemplan
PgSelectRows13 ==> __Item14
@@ -34,20 +36,20 @@ graph TD
__Item14 --> PgSelectSingle15
PgClassExpression16{{"PgClassExpression[16∈2]
ᐸ__forums__.”name”ᐳ"}}:::plan
PgSelectSingle15 --> PgClassExpression16
- PgSelect26[["PgSelect[26∈3]
ᐸmessagesᐳ"]]:::plan
- PgClassExpression18{{"PgClassExpression[18∈3]
ᐸ__forums__.”id”ᐳ"}}:::plan
- PgClassExpression24{{"PgClassExpression[24∈3]
ᐸ__forums__...chived_at”ᐳ"}}:::plan
- Object11 & PgClassExpression18 & PgClassExpression24 & Lambda25 & Connection23 --> PgSelect26
- PgSelectSingle15 --> PgClassExpression18
- PgSelectSingle15 --> PgClassExpression24
+ List57{{"List[57∈3]
ᐸ14,56ᐳ"}}:::plan
+ Access56{{"Access[56∈3] ➊
ᐸ8.m.subqueryDetailsFor26ᐳ"}}:::plan
+ __Item14 & Access56 --> List57
PgSelectRows27[["PgSelectRows[27∈3]"]]:::plan
- PgSelect26 --> PgSelectRows27
+ Lambda58{{"Lambda[58∈3]"}}:::plan
+ Lambda58 --> PgSelectRows27
+ PgSelect8 --> Access56
+ List57 --> Lambda58
__Item28[/"__Item[28∈4]
ᐸ27ᐳ"\]:::itemplan
PgSelectRows27 ==> __Item28
PgSelectSingle29{{"PgSelectSingle[29∈4]
ᐸmessagesᐳ"}}:::plan
__Item28 --> PgSelectSingle29
- Access43{{"Access[43∈4]
ᐸ26.cursorDetailsᐳ"}}:::plan
- PgSelect26 --> Access43
+ Access43{{"Access[43∈4]
ᐸ58.cursorDetailsᐳ"}}:::plan
+ Lambda58 --> Access43
PgCursor44{{"PgCursor[44∈5]"}}:::plan
PgSelectSingle29 & Access43 --> PgCursor44
PgClassExpression30{{"PgClassExpression[30∈5]
ᐸ__messages__.”body”ᐳ"}}:::plan
@@ -82,19 +84,19 @@ graph TD
%% define steps
subgraph "Buckets for queries/conditions/archived-forum-inherited-messages.defer-6"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 55, 56, 11, 23
2: Lambda[12], Lambda[25]
3: PgSelect[8]
4: PgSelectRows[13]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 59, 60, 11, 23
2: Lambda[12], Lambda[25]
3: PgSelectInlineApply[55]
4: PgSelect[8]
5: PgSelectRows[13]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Connection23,Lambda25,Constant55,Constant56 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 11, 25, 23, 6
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Connection23,Lambda25,PgSelectInlineApply55,Constant59,Constant60 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 8, 23, 11
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item14,PgSelectSingle15 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 11, 25, 23, 6
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 8, 14, 23, 11
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,PgClassExpression16 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 15, 11, 25, 23, 6
ROOT Connectionᐸ19ᐳ[23]
1:
ᐳ: 18, 24
2: PgSelect[26]
3: PgSelectRows[27]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 8, 14, 23, 11
ROOT Connectionᐸ19ᐳ[23]
1:
ᐳ: Access[56], List[57], Lambda[58]
2: PgSelectRows[27]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression18,PgClassExpression24,PgSelect26,PgSelectRows27 bucket3
- Bucket4("Bucket 4 (listItem)
Deps: 26, 11
ROOT __Item{4}ᐸ27ᐳ[28]"):::bucket
+ class Bucket3,PgSelectRows27,Access56,List57,Lambda58 bucket3
+ Bucket4("Bucket 4 (listItem)
Deps: 58, 11
ROOT __Item{4}ᐸ27ᐳ[28]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item28,PgSelectSingle29,Access43 bucket4
Bucket5("Bucket 5 (nullableBoundary)
Deps: 29, 43, 11
ROOT PgSelectSingle{4}ᐸmessagesᐳ[29]"):::bucket
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.sql b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.sql
index b9ba01026..392c47947 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.sql
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.defer-6.sql
@@ -1,7 +1,20 @@
select
__forums__."name" as "0",
- __forums__."id" as "1",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2"
+ array(
+ select array[
+ __messages__."body",
+ __messages__."author_id",
+ __messages__."id"
+ ]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ )::text as "1"
from app_public.forums as __forums__
where
(
@@ -11,19 +24,6 @@ where
)
order by __forums__."id" asc;
-select
- __messages__."body" as "0",
- __messages__."author_id" as "1",
- __messages__."id" as "2"
-from app_public.messages as __messages__
-where
- (
- __messages__."forum_id" = $1::"uuid"
- ) and (
- (__messages__.archived_at is null) = ($2::"timestamptz" is null)
- )
-order by __messages__."id" asc;
-
select __users_result__.*
from (select ids.ordinality - 1 as idx, (ids.value->>0)::"uuid" as "id0" from json_array_elements($1::json) with ordinality as ids) as __users_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.mermaid b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.mermaid
index f35fda655..a514aca0a 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.mermaid
@@ -12,7 +12,10 @@ graph TD
PgSelect8[["PgSelect[8∈0] ➊
ᐸforumsᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda12[["Lambda[12∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Object11 & Lambda12 --> PgSelect8
+ PgSelectInlineApply88["PgSelectInlineApply[88∈0] ➊"]:::plan
+ Object11 & Lambda12 & PgSelectInlineApply88 --> PgSelect8
+ Lambda25[["Lambda[25∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ Lambda25 --> PgSelectInlineApply88
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
@@ -20,13 +23,12 @@ graph TD
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access9
__Value2 --> Access10
- Constant88{{"Constant[88∈0] ➊
ᐸ'EXCLUSIVELY'ᐳ"}}:::plan
- Constant88 --> Lambda12
+ Constant92{{"Constant[92∈0] ➊
ᐸ'EXCLUSIVELY'ᐳ"}}:::plan
+ Constant92 --> Lambda12
PgSelectRows13[["PgSelectRows[13∈0] ➊"]]:::plan
PgSelect8 --> PgSelectRows13
- Lambda25[["Lambda[25∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Constant89{{"Constant[89∈0] ➊
ᐸ'INHERIT'ᐳ"}}:::plan
- Constant89 --> Lambda25
+ Constant93{{"Constant[93∈0] ➊
ᐸ'INHERIT'ᐳ"}}:::plan
+ Constant93 --> Lambda25
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
Constant26{{"Constant[26∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
Constant27{{"Constant[27∈0] ➊
ᐸtrueᐳ"}}:::plan
@@ -47,15 +49,16 @@ graph TD
PgSelect43[["PgSelect[43∈3@s]
ᐸmessagesᐳ"]]:::plan
PgSelectInlineApply82["PgSelectInlineApply[82∈3] ➊"]:::plan
Object11 & PgClassExpression18 & PgClassExpression24 & Lambda25 & Connection23 & PgSelectInlineApply82 --> PgSelect43
- PgSelect60[["PgSelect[60∈3]
ᐸmessages+1ᐳ"]]:::plan
- Object11 & PgClassExpression18 & PgClassExpression24 & Lambda25 & Connection23 --> PgSelect60
PgSelect71[["PgSelect[71∈3]
ᐸmessages(aggregate)ᐳ"]]:::plan
Object11 & PgClassExpression18 & PgClassExpression24 & Lambda25 & Connection23 --> PgSelect71
Object69{{"Object[69∈3]
ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
- Access63{{"Access[63∈3]
ᐸ60.hasMoreᐳ"}}:::plan
+ Access63{{"Access[63∈3]
ᐸ91.hasMoreᐳ"}}:::plan
Access63 --> Object69
Object64{{"Object[64∈3]
ᐸ{first,last,hasMore}ᐳ"}}:::plan
Access63 --> Object64
+ List90{{"List[90∈3]
ᐸ14,89ᐳ"}}:::plan
+ Access89{{"Access[89∈3] ➊
ᐸ8.m.subqueryDetailsFor60ᐳ"}}:::plan
+ __Item14 & Access89 --> List90
PgSelectSingle15 --> PgClassExpression18
PgSelectSingle15 --> PgClassExpression24
PgSelectRows29[["PgSelectRows[29∈3@s]"]]:::plan
@@ -64,7 +67,8 @@ graph TD
PgSelect43 --> PgSelectRows44
PgPageInfo61{{"PgPageInfo[61∈3] ➊"}}:::plan
Connection23 --> PgPageInfo61
- PgSelect60 --> Access63
+ Lambda91{{"Lambda[91∈3]"}}:::plan
+ Lambda91 --> Access63
Lambda65{{"Lambda[65∈3]
ᐸhasNextPageCbᐳ"}}:::plan
Object64 --> Lambda65
Lambda70{{"Lambda[70∈3]
ᐸhasPreviousPageCbᐳ"}}:::plan
@@ -77,6 +81,8 @@ graph TD
First72 --> PgSelectSingle74
PgClassExpression75{{"PgClassExpression[75∈3]
ᐸcount(*)ᐳ"}}:::plan
PgSelectSingle74 --> PgClassExpression75
+ PgSelect8 --> Access89
+ List90 --> Lambda91
__Item30[/"__Item[30∈4]
ᐸ29ᐳ"\]:::itemplan
PgSelectRows29 ==> __Item30
PgSelectSingle31{{"PgSelectSingle[31∈4]
ᐸmessagesᐳ"}}:::plan
@@ -129,18 +135,18 @@ graph TD
%% define steps
subgraph "Buckets for queries/conditions/archived-forum-inherited-messages.stream-2"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 26, 27, 77, 78, 83, 88, 89, 11, 23
2: Lambda[12], Lambda[25]
3: PgSelect[8]
4: PgSelectRows[13]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 26, 27, 77, 78, 83, 92, 93, 11, 23
2: Lambda[12], Lambda[25]
3: PgSelectInlineApply[88]
4: PgSelect[8]
5: PgSelectRows[13]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Connection23,Lambda25,Constant26,Constant27,Constant77,Constant78,Constant83,Constant88,Constant89 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 11, 25, 23, 6, 26, 27, 77, 78, 83
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Connection23,Lambda25,Constant26,Constant27,Constant77,Constant78,Constant83,PgSelectInlineApply88,Constant92,Constant93 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 11, 25, 23, 6, 8, 26, 27, 77, 78, 83
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item14,PgSelectSingle15 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 11, 25, 23, 6, 26, 27, 77, 78, 83
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 11, 25, 23, 6, 8, 14, 26, 27, 77, 78, 83
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,PgClassExpression16 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 15, 11, 25, 23, 6, 26, 27, 77, 78, 83
ROOT Connectionᐸ19ᐳ[23]
1: 76, 82
ᐳ: 18, 24, 61
2: 28, 43, 60, 71
ᐳ: 63, 64, 65, 69, 70
3: 29, 44, 73
ᐳ: 72, 74, 75"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 15, 11, 25, 23, 6, 8, 14, 26, 27, 77, 78, 83
ROOT Connectionᐸ19ᐳ[23]
1: 76, 82
ᐳ: 18, 24, 61, 89, 90, 91, 63, 64, 65, 69, 70
2: 28, 43, 71
3: 29, 44, 73
ᐳ: 72, 74, 75"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression18,PgClassExpression24,PgSelect28,PgSelectRows29,PgSelect43,PgSelectRows44,PgSelect60,PgPageInfo61,Access63,Object64,Lambda65,Object69,Lambda70,PgSelect71,First72,PgSelectRows73,PgSelectSingle74,PgClassExpression75,PgSelectInlineApply76,PgSelectInlineApply82 bucket3
+ class Bucket3,PgClassExpression18,PgClassExpression24,PgSelect28,PgSelectRows29,PgSelect43,PgSelectRows44,PgPageInfo61,Access63,Object64,Lambda65,Object69,Lambda70,PgSelect71,First72,PgSelectRows73,PgSelectSingle74,PgClassExpression75,PgSelectInlineApply76,PgSelectInlineApply82,Access89,List90,Lambda91 bucket3
Bucket4("Bucket 4 (listItem)
Deps: 77, 78
ROOT __Item{4}ᐸ29ᐳ[30]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item30,PgSelectSingle31 bucket4
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.sql b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.sql
index 9cfa8ab12..abee61bcd 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.sql
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/archived-forum-inherited-messages.stream-2.sql
@@ -1,7 +1,18 @@
select
__forums__."name" as "0",
__forums__."id" as "1",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2"
+ to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2",
+ array(
+ select array[null]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ )::text as "3"
from app_public.forums as __forums__
where
(
@@ -74,16 +85,6 @@ close __SNAPSHOT_CURSOR_1__
commit; /*fake*/
-select /* NOTHING?! */
-from app_public.messages as __messages__
-where
- (
- __messages__."forum_id" = $1::"uuid"
- ) and (
- (__messages__.archived_at is null) = ($2::"timestamptz" is null)
- )
-order by __messages__."id" asc;
-
select
(count(*))::text as "0"
from app_public.messages as __messages__
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/basics.mermaid b/grafast/dataplan-pg/__tests__/queries/conditions/basics.mermaid
index c209e525d..54ff379bd 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/basics.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/basics.mermaid
@@ -12,36 +12,38 @@ graph TD
PgSelect8[["PgSelect[8∈0] ➊
ᐸforumsᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda12[["Lambda[12∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Object11 & Lambda12 --> PgSelect8
+ PgSelectInlineApply30["PgSelectInlineApply[30∈0] ➊"]:::plan
+ Object11 & Lambda12 & PgSelectInlineApply30 --> PgSelect8
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
+ Constant35{{"Constant[35∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Lambda25[["Lambda[25∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ Constant35 & Lambda25 --> PgSelectInlineApply30
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access9
__Value2 --> Access10
- Constant30{{"Constant[30∈0] ➊
ᐸ'YES'ᐳ"}}:::plan
- Constant30 --> Lambda12
+ Constant34{{"Constant[34∈0] ➊
ᐸ'YES'ᐳ"}}:::plan
+ Constant34 --> Lambda12
PgSelectRows13[["PgSelectRows[13∈0] ➊"]]:::plan
PgSelect8 --> PgSelectRows13
- Lambda25[["Lambda[25∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
Constant18{{"Constant[18∈0] ➊
ᐸ'INHERIT'ᐳ"}}:::plan
Constant18 --> Lambda25
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- Constant31{{"Constant[31∈0] ➊
ᐸ2ᐳ"}}:::plan
__Item14[/"__Item[14∈1]
ᐸ13ᐳ"\]:::itemplan
PgSelectRows13 ==> __Item14
PgSelectSingle15{{"PgSelectSingle[15∈1]
ᐸforumsᐳ"}}:::plan
__Item14 --> PgSelectSingle15
- PgSelect20[["PgSelect[20∈2]
ᐸmessagesᐳ"]]:::plan
- PgClassExpression19{{"PgClassExpression[19∈2]
ᐸ__forums__.”id”ᐳ"}}:::plan
- PgClassExpression24{{"PgClassExpression[24∈2]
ᐸ__forums__...chived_at”ᐳ"}}:::plan
- Object11 & PgClassExpression19 & Constant31 & PgClassExpression24 & Lambda25 --> PgSelect20
+ List32{{"List[32∈2]
ᐸ14,31ᐳ"}}:::plan
+ Access31{{"Access[31∈2] ➊
ᐸ8.m.subqueryDetailsFor20ᐳ"}}:::plan
+ __Item14 & Access31 --> List32
PgClassExpression16{{"PgClassExpression[16∈2]
ᐸ__forums__.”name”ᐳ"}}:::plan
PgSelectSingle15 --> PgClassExpression16
- PgSelectSingle15 --> PgClassExpression19
- PgSelectSingle15 --> PgClassExpression24
PgSelectRows26[["PgSelectRows[26∈2]"]]:::plan
- PgSelect20 --> PgSelectRows26
+ Lambda33{{"Lambda[33∈2]"}}:::plan
+ Lambda33 --> PgSelectRows26
+ PgSelect8 --> Access31
+ List32 --> Lambda33
__Item27[/"__Item[27∈3]
ᐸ26ᐳ"\]:::itemplan
PgSelectRows26 ==> __Item27
PgSelectSingle28{{"PgSelectSingle[28∈3]
ᐸmessagesᐳ"}}:::plan
@@ -52,15 +54,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/conditions/basics"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 18, 30, 31, 11
2: Lambda[12], Lambda[25]
3: PgSelect[8]
4: PgSelectRows[13]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 18, 34, 35, 11
2: Lambda[12], Lambda[25]
3: PgSelectInlineApply[30]
4: PgSelect[8]
5: PgSelectRows[13]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Constant18,Lambda25,Constant30,Constant31 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 11, 31, 25
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Constant18,Lambda25,PgSelectInlineApply30,Constant34,Constant35 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 8
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item14,PgSelectSingle15 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 11, 31, 25
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]
1:
ᐳ: 16, 19, 24
2: PgSelect[20]
3: PgSelectRows[26]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 8, 14
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]
1:
ᐳ: 16, 31, 32, 33
2: PgSelectRows[26]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression16,PgClassExpression19,PgSelect20,PgClassExpression24,PgSelectRows26 bucket2
+ class Bucket2,PgClassExpression16,PgSelectRows26,Access31,List32,Lambda33 bucket2
Bucket3("Bucket 3 (listItem)
ROOT __Item{3}ᐸ26ᐳ[27]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item27,PgSelectSingle28 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/basics.sql b/grafast/dataplan-pg/__tests__/queries/conditions/basics.sql
index e5e2cb2aa..521b17744 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/basics.sql
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/basics.sql
@@ -1,26 +1,21 @@
select
__forums__."name" as "0",
- __forums__."id" as "1",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2"
+ array(
+ select array[
+ __messages__."body"
+ ]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ limit 2
+ )::text as "1"
from app_public.forums as __forums__
where (
true /* authorization checks */
)
order by __forums__."id" asc;
-
-select __messages_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"uuid" as "id0", (ids.value->>1)::"timestamptz" as "id1" from json_array_elements($1::json) with ordinality as ids) as __messages_identifiers__,
-lateral (
- select
- __messages__."body" as "0",
- __messages_identifiers__.idx as "1"
- from app_public.messages as __messages__
- where
- (
- __messages__."forum_id" = __messages_identifiers__."id0"
- ) and (
- (__messages__.archived_at is null) = (__messages_identifiers__."id1" is null)
- )
- order by __messages__."id" asc
- limit 2
-) as __messages_result__;
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.mermaid b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.mermaid
index 2bf3b7639..739a07dda 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.mermaid
@@ -13,7 +13,11 @@ graph TD
Object15{{"Object[15∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda16[["Lambda[16∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
ApplyInput17{{"ApplyInput[17∈0] ➊"}}:::plan
- Object15 & Lambda16 & ApplyInput17 --> PgSelect12
+ PgSelectInlineApply40["PgSelectInlineApply[40∈0] ➊"]:::plan
+ Object15 & Lambda16 & ApplyInput17 & PgSelectInlineApply40 --> PgSelect12
+ ApplyInput32{{"ApplyInput[32∈0] ➊"}}:::plan
+ Lambda34[["Lambda[34∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ ApplyInput32 & Lambda34 --> PgSelectInlineApply40
Access13{{"Access[13∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access14{{"Access[14∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access13 & Access14 --> Object15
@@ -38,25 +42,23 @@ graph TD
PgSelect12 --> PgSelectRows18
__Value0 --> Access23
__Value0 --> Access25
- ApplyInput32{{"ApplyInput[32∈0] ➊"}}:::plan
__InputObject22 --> ApplyInput32
- Lambda34[["Lambda[34∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
Constant7 --> Lambda34
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
__Item19[/"__Item[19∈1]
ᐸ18ᐳ"\]:::itemplan
PgSelectRows18 ==> __Item19
PgSelectSingle20{{"PgSelectSingle[20∈1]
ᐸforumsᐳ"}}:::plan
__Item19 --> PgSelectSingle20
- PgSelect28[["PgSelect[28∈2]
ᐸmessagesᐳ"]]:::plan
- PgClassExpression27{{"PgClassExpression[27∈2]
ᐸ__forums__.”id”ᐳ"}}:::plan
- PgClassExpression33{{"PgClassExpression[33∈2]
ᐸ__forums__...chived_at”ᐳ"}}:::plan
- Object15 & PgClassExpression27 & ApplyInput32 & PgClassExpression33 & Lambda34 --> PgSelect28
+ List42{{"List[42∈2]
ᐸ19,41ᐳ"}}:::plan
+ Access41{{"Access[41∈2] ➊
ᐸ12.m.subqueryDetailsFor28ᐳ"}}:::plan
+ __Item19 & Access41 --> List42
PgClassExpression21{{"PgClassExpression[21∈2]
ᐸ__forums__.”name”ᐳ"}}:::plan
PgSelectSingle20 --> PgClassExpression21
- PgSelectSingle20 --> PgClassExpression27
- PgSelectSingle20 --> PgClassExpression33
PgSelectRows35[["PgSelectRows[35∈2]"]]:::plan
- PgSelect28 --> PgSelectRows35
+ Lambda43{{"Lambda[43∈2]"}}:::plan
+ Lambda43 --> PgSelectRows35
+ PgSelect12 --> Access41
+ List42 --> Lambda43
__Item36[/"__Item[36∈3]
ᐸ35ᐳ"\]:::itemplan
PgSelectRows35 ==> __Item36
PgSelectSingle37{{"PgSelectSingle[37∈3]
ᐸmessagesᐳ"}}:::plan
@@ -69,15 +71,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/conditions/complex-filter-via-partial-variables"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 10, 13, 14, 23, 25, 9, 15, 22, 32, 8, 17
2: Lambda[16], Lambda[34]
3: PgSelect[12]
4: PgSelectRows[18]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 10, 13, 14, 23, 25, 9, 15, 22, 32, 8, 17
2: Lambda[16], Lambda[34]
3: PgSelectInlineApply[40]
4: PgSelect[12]
5: PgSelectRows[18]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value0,__Value2,__Value4,Constant7,__InputObject8,__InputObject9,Access10,PgSelect12,Access13,Access14,Object15,Lambda16,ApplyInput17,PgSelectRows18,__InputObject22,Access23,Access25,ApplyInput32,Lambda34 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 15, 6, 32, 34
ROOT __Item{1}ᐸ18ᐳ[19]"):::bucket
+ class Bucket0,__Value0,__Value2,__Value4,Constant7,__InputObject8,__InputObject9,Access10,PgSelect12,Access13,Access14,Object15,Lambda16,ApplyInput17,PgSelectRows18,__InputObject22,Access23,Access25,ApplyInput32,Lambda34,PgSelectInlineApply40 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 12
ROOT __Item{1}ᐸ18ᐳ[19]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item19,PgSelectSingle20 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 20, 15, 6, 32, 34
ROOT PgSelectSingle{1}ᐸforumsᐳ[20]
1:
ᐳ: 21, 27, 33
2: PgSelect[28]
3: PgSelectRows[35]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 20, 12, 19
ROOT PgSelectSingle{1}ᐸforumsᐳ[20]
1:
ᐳ: 21, 41, 42, 43
2: PgSelectRows[35]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression21,PgClassExpression27,PgSelect28,PgClassExpression33,PgSelectRows35 bucket2
+ class Bucket2,PgClassExpression21,PgSelectRows35,Access41,List42,Lambda43 bucket2
Bucket3("Bucket 3 (listItem)
ROOT __Item{3}ᐸ35ᐳ[36]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item36,PgSelectSingle37 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.sql b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.sql
index 64da1672e..fa586800a 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.sql
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-partial-variables.sql
@@ -1,7 +1,21 @@
select
__forums__."name" as "0",
- __forums__."id" as "1",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2"
+ array(
+ select array[
+ __messages__."body",
+ __messages__."featured"::text
+ ]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ __messages__.featured <> $1::"bool"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ )::text as "1"
from app_public.forums as __forums__
where
(
@@ -16,22 +30,8 @@ where
(
__forums__."id" = __messages_filter__."forum_id"
) and (
- __messages_filter__.featured = $1::"bool"
+ __messages_filter__.featured = $2::"bool"
)
)
)
order by __forums__."id" asc;
-
-select
- __messages__."body" as "0",
- __messages__."featured"::text as "1"
-from app_public.messages as __messages__
-where
- (
- __messages__."forum_id" = $1::"uuid"
- ) and (
- __messages__.featured <> $2::"bool"
- ) and (
- (__messages__.archived_at is null) = ($3::"timestamptz" is null)
- )
-order by __messages__."id" asc;
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.mermaid b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.mermaid
index dad3d8711..716f0838a 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.mermaid
@@ -13,7 +13,11 @@ graph TD
Object13{{"Object[13∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda14[["Lambda[14∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
ApplyInput15{{"ApplyInput[15∈0] ➊"}}:::plan
- Object13 & Lambda14 & ApplyInput15 --> PgSelect10
+ PgSelectInlineApply35["PgSelectInlineApply[35∈0] ➊"]:::plan
+ Object13 & Lambda14 & ApplyInput15 & PgSelectInlineApply35 --> PgSelect10
+ ApplyInput27{{"ApplyInput[27∈0] ➊"}}:::plan
+ Lambda29[["Lambda[29∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ ApplyInput27 & Lambda29 --> PgSelectInlineApply35
Access11{{"Access[11∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access12{{"Access[12∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access11 & Access12 --> Object13
@@ -30,25 +34,23 @@ graph TD
PgSelect10 --> PgSelectRows16
Access20{{"Access[20∈0] ➊
ᐸ0.messagesFilterᐳ"}}:::plan
__Value0 --> Access20
- ApplyInput27{{"ApplyInput[27∈0] ➊"}}:::plan
Access20 --> ApplyInput27
- Lambda29[["Lambda[29∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
Constant7 --> Lambda29
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
__Item17[/"__Item[17∈1]
ᐸ16ᐳ"\]:::itemplan
PgSelectRows16 ==> __Item17
PgSelectSingle18{{"PgSelectSingle[18∈1]
ᐸforumsᐳ"}}:::plan
__Item17 --> PgSelectSingle18
- PgSelect23[["PgSelect[23∈2]
ᐸmessagesᐳ"]]:::plan
- PgClassExpression22{{"PgClassExpression[22∈2]
ᐸ__forums__.”id”ᐳ"}}:::plan
- PgClassExpression28{{"PgClassExpression[28∈2]
ᐸ__forums__...chived_at”ᐳ"}}:::plan
- Object13 & PgClassExpression22 & ApplyInput27 & PgClassExpression28 & Lambda29 --> PgSelect23
+ List37{{"List[37∈2]
ᐸ17,36ᐳ"}}:::plan
+ Access36{{"Access[36∈2] ➊
ᐸ10.m.subqueryDetailsFor23ᐳ"}}:::plan
+ __Item17 & Access36 --> List37
PgClassExpression19{{"PgClassExpression[19∈2]
ᐸ__forums__.”name”ᐳ"}}:::plan
PgSelectSingle18 --> PgClassExpression19
- PgSelectSingle18 --> PgClassExpression22
- PgSelectSingle18 --> PgClassExpression28
PgSelectRows30[["PgSelectRows[30∈2]"]]:::plan
- PgSelect23 --> PgSelectRows30
+ Lambda38{{"Lambda[38∈2]"}}:::plan
+ Lambda38 --> PgSelectRows30
+ PgSelect10 --> Access36
+ List37 --> Lambda38
__Item31[/"__Item[31∈3]
ᐸ30ᐳ"\]:::itemplan
PgSelectRows30 ==> __Item31
PgSelectSingle32{{"PgSelectSingle[32∈3]
ᐸmessagesᐳ"}}:::plan
@@ -61,15 +63,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/conditions/complex-filter-via-variables"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 8, 11, 12, 20, 13, 15, 27
2: Lambda[14], Lambda[29]
3: PgSelect[10]
4: PgSelectRows[16]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 8, 11, 12, 20, 13, 15, 27
2: Lambda[14], Lambda[29]
3: PgSelectInlineApply[35]
4: PgSelect[10]
5: PgSelectRows[16]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value0,__Value2,__Value4,Constant7,Access8,PgSelect10,Access11,Access12,Object13,Lambda14,ApplyInput15,PgSelectRows16,Access20,ApplyInput27,Lambda29 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 13, 6, 27, 29
ROOT __Item{1}ᐸ16ᐳ[17]"):::bucket
+ class Bucket0,__Value0,__Value2,__Value4,Constant7,Access8,PgSelect10,Access11,Access12,Object13,Lambda14,ApplyInput15,PgSelectRows16,Access20,ApplyInput27,Lambda29,PgSelectInlineApply35 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 10
ROOT __Item{1}ᐸ16ᐳ[17]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item17,PgSelectSingle18 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 18, 13, 6, 27, 29
ROOT PgSelectSingle{1}ᐸforumsᐳ[18]
1:
ᐳ: 19, 22, 28
2: PgSelect[23]
3: PgSelectRows[30]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 18, 10, 17
ROOT PgSelectSingle{1}ᐸforumsᐳ[18]
1:
ᐳ: 19, 36, 37, 38
2: PgSelectRows[30]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression19,PgClassExpression22,PgSelect23,PgClassExpression28,PgSelectRows30 bucket2
+ class Bucket2,PgClassExpression19,PgSelectRows30,Access36,List37,Lambda38 bucket2
Bucket3("Bucket 3 (listItem)
ROOT __Item{3}ᐸ30ᐳ[31]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item31,PgSelectSingle32 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.sql b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.sql
index 64da1672e..fa586800a 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.sql
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter-via-variables.sql
@@ -1,7 +1,21 @@
select
__forums__."name" as "0",
- __forums__."id" as "1",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2"
+ array(
+ select array[
+ __messages__."body",
+ __messages__."featured"::text
+ ]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ __messages__.featured <> $1::"bool"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ )::text as "1"
from app_public.forums as __forums__
where
(
@@ -16,22 +30,8 @@ where
(
__forums__."id" = __messages_filter__."forum_id"
) and (
- __messages_filter__.featured = $1::"bool"
+ __messages_filter__.featured = $2::"bool"
)
)
)
order by __forums__."id" asc;
-
-select
- __messages__."body" as "0",
- __messages__."featured"::text as "1"
-from app_public.messages as __messages__
-where
- (
- __messages__."forum_id" = $1::"uuid"
- ) and (
- __messages__.featured <> $2::"bool"
- ) and (
- (__messages__.archived_at is null) = ($3::"timestamptz" is null)
- )
-order by __messages__."id" asc;
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.mermaid b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.mermaid
index 7dcfc9e3a..b79e3428f 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.mermaid
@@ -13,19 +13,23 @@ graph TD
Object16{{"Object[16∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda17[["Lambda[17∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
ApplyInput18{{"ApplyInput[18∈0] ➊"}}:::plan
- Object16 & Lambda17 & ApplyInput18 --> PgSelect13
+ PgSelectInlineApply39["PgSelectInlineApply[39∈0] ➊"]:::plan
+ Object16 & Lambda17 & ApplyInput18 & PgSelectInlineApply39 --> PgSelect13
+ ApplyInput31{{"ApplyInput[31∈0] ➊"}}:::plan
+ Lambda33[["Lambda[33∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ ApplyInput31 & Lambda33 --> PgSelectInlineApply39
__InputObject10{{"__InputObject[10∈0] ➊"}}:::plan
__InputObject11{{"__InputObject[11∈0] ➊"}}:::plan
__InputObject11 --> __InputObject10
- Constant39{{"Constant[39∈0] ➊
ᐸtrueᐳ"}}:::plan
- Constant39 --> __InputObject11
+ Constant43{{"Constant[43∈0] ➊
ᐸtrueᐳ"}}:::plan
+ Constant43 --> __InputObject11
Access14{{"Access[14∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access15{{"Access[15∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access14 & Access15 --> Object16
__InputObject23{{"__InputObject[23∈0] ➊"}}:::plan
__InputObject24{{"__InputObject[24∈0] ➊"}}:::plan
__InputObject24 --> __InputObject23
- Constant39 --> __InputObject24
+ Constant43 --> __InputObject24
__InputObject8{{"__InputObject[8∈0] ➊"}}:::plan
__InputObject9{{"__InputObject[9∈0] ➊"}}:::plan
__InputObject9 --> __InputObject8
@@ -38,25 +42,23 @@ graph TD
__InputObject8 --> ApplyInput18
PgSelectRows19[["PgSelectRows[19∈0] ➊"]]:::plan
PgSelect13 --> PgSelectRows19
- ApplyInput31{{"ApplyInput[31∈0] ➊"}}:::plan
__InputObject23 --> ApplyInput31
- Lambda33[["Lambda[33∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
Constant7 --> Lambda33
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
__Item20[/"__Item[20∈1]
ᐸ19ᐳ"\]:::itemplan
PgSelectRows19 ==> __Item20
PgSelectSingle21{{"PgSelectSingle[21∈1]
ᐸforumsᐳ"}}:::plan
__Item20 --> PgSelectSingle21
- PgSelect27[["PgSelect[27∈2]
ᐸmessagesᐳ"]]:::plan
- PgClassExpression26{{"PgClassExpression[26∈2]
ᐸ__forums__.”id”ᐳ"}}:::plan
- PgClassExpression32{{"PgClassExpression[32∈2]
ᐸ__forums__...chived_at”ᐳ"}}:::plan
- Object16 & PgClassExpression26 & ApplyInput31 & PgClassExpression32 & Lambda33 --> PgSelect27
+ List41{{"List[41∈2]
ᐸ20,40ᐳ"}}:::plan
+ Access40{{"Access[40∈2] ➊
ᐸ13.m.subqueryDetailsFor27ᐳ"}}:::plan
+ __Item20 & Access40 --> List41
PgClassExpression22{{"PgClassExpression[22∈2]
ᐸ__forums__.”name”ᐳ"}}:::plan
PgSelectSingle21 --> PgClassExpression22
- PgSelectSingle21 --> PgClassExpression26
- PgSelectSingle21 --> PgClassExpression32
PgSelectRows34[["PgSelectRows[34∈2]"]]:::plan
- PgSelect27 --> PgSelectRows34
+ Lambda42{{"Lambda[42∈2]"}}:::plan
+ Lambda42 --> PgSelectRows34
+ PgSelect13 --> Access40
+ List41 --> Lambda42
__Item35[/"__Item[35∈3]
ᐸ34ᐳ"\]:::itemplan
PgSelectRows34 ==> __Item35
PgSelectSingle36{{"PgSelectSingle[36∈3]
ᐸmessagesᐳ"}}:::plan
@@ -69,15 +71,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/conditions/complex-filter"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 14, 15, 39, 11, 16, 24, 10, 23, 31, 9, 8, 18
2: Lambda[17], Lambda[33]
3: PgSelect[13]
4: PgSelectRows[19]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 14, 15, 43, 11, 16, 24, 10, 23, 31, 9, 8, 18
2: Lambda[17], Lambda[33]
3: PgSelectInlineApply[39]
4: PgSelect[13]
5: PgSelectRows[19]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Constant7,__InputObject8,__InputObject9,__InputObject10,__InputObject11,PgSelect13,Access14,Access15,Object16,Lambda17,ApplyInput18,PgSelectRows19,__InputObject23,__InputObject24,ApplyInput31,Lambda33,Constant39 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 16, 6, 31, 33
ROOT __Item{1}ᐸ19ᐳ[20]"):::bucket
+ class Bucket0,__Value2,__Value4,Constant7,__InputObject8,__InputObject9,__InputObject10,__InputObject11,PgSelect13,Access14,Access15,Object16,Lambda17,ApplyInput18,PgSelectRows19,__InputObject23,__InputObject24,ApplyInput31,Lambda33,PgSelectInlineApply39,Constant43 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 13
ROOT __Item{1}ᐸ19ᐳ[20]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item20,PgSelectSingle21 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 21, 16, 6, 31, 33
ROOT PgSelectSingle{1}ᐸforumsᐳ[21]
1:
ᐳ: 22, 26, 32
2: PgSelect[27]
3: PgSelectRows[34]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 21, 13, 20
ROOT PgSelectSingle{1}ᐸforumsᐳ[21]
1:
ᐳ: 22, 40, 41, 42
2: PgSelectRows[34]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression22,PgClassExpression26,PgSelect27,PgClassExpression32,PgSelectRows34 bucket2
+ class Bucket2,PgClassExpression22,PgSelectRows34,Access40,List41,Lambda42 bucket2
Bucket3("Bucket 3 (listItem)
ROOT __Item{3}ᐸ34ᐳ[35]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item35,PgSelectSingle36 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.sql b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.sql
index 64da1672e..fa586800a 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.sql
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/complex-filter.sql
@@ -1,7 +1,21 @@
select
__forums__."name" as "0",
- __forums__."id" as "1",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2"
+ array(
+ select array[
+ __messages__."body",
+ __messages__."featured"::text
+ ]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ __messages__.featured <> $1::"bool"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ )::text as "1"
from app_public.forums as __forums__
where
(
@@ -16,22 +30,8 @@ where
(
__forums__."id" = __messages_filter__."forum_id"
) and (
- __messages_filter__.featured = $1::"bool"
+ __messages_filter__.featured = $2::"bool"
)
)
)
order by __forums__."id" asc;
-
-select
- __messages__."body" as "0",
- __messages__."featured"::text as "1"
-from app_public.messages as __messages__
-where
- (
- __messages__."forum_id" = $1::"uuid"
- ) and (
- __messages__.featured <> $2::"bool"
- ) and (
- (__messages__.archived_at is null) = ($3::"timestamptz" is null)
- )
-order by __messages__."id" asc;
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.mermaid b/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.mermaid
index ddb660a2f..f4f82997b 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.mermaid
@@ -12,13 +12,17 @@ graph TD
PgSelect8[["PgSelect[8∈0] ➊
ᐸforumsᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda12[["Lambda[12∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Object11 & Lambda12 --> PgSelect8
+ PgSelectInlineApply39["PgSelectInlineApply[39∈0] ➊"]:::plan
+ Object11 & Lambda12 & PgSelectInlineApply39 --> PgSelect8
+ Constant43{{"Constant[43∈0] ➊
ᐸ5ᐳ"}}:::plan
+ ApplyInput25{{"ApplyInput[25∈0] ➊"}}:::plan
+ Lambda27[["Lambda[27∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ Constant43 & ApplyInput25 & Lambda27 --> PgSelectInlineApply39
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
Connection24{{"Connection[24∈0] ➊
ᐸ20ᐳ"}}:::plan
- Constant39{{"Constant[39∈0] ➊
ᐸ5ᐳ"}}:::plan
- Constant39 --> Connection24
+ Constant43 --> Connection24
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access9
__Value2 --> Access10
@@ -27,31 +31,31 @@ graph TD
PgSelectRows13[["PgSelectRows[13∈0] ➊"]]:::plan
PgSelect8 --> PgSelectRows13
__InputObject17{{"__InputObject[17∈0] ➊"}}:::plan
- Constant40{{"Constant[40∈0] ➊
ᐸtrueᐳ"}}:::plan
- Constant40 --> __InputObject17
- ApplyInput25{{"ApplyInput[25∈0] ➊"}}:::plan
+ Constant44{{"Constant[44∈0] ➊
ᐸtrueᐳ"}}:::plan
+ Constant44 --> __InputObject17
__InputObject17 --> ApplyInput25
- Lambda27[["Lambda[27∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
Constant7 --> Lambda27
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
__Item14[/"__Item[14∈1]
ᐸ13ᐳ"\]:::itemplan
PgSelectRows13 ==> __Item14
PgSelectSingle15{{"PgSelectSingle[15∈1]
ᐸforumsᐳ"}}:::plan
__Item14 --> PgSelectSingle15
- PgSelect28[["PgSelect[28∈3]
ᐸmessages+1ᐳ"]]:::plan
+ PgSelect34[["PgSelect[34∈3]
ᐸmessages(aggregate)ᐳ"]]:::plan
PgClassExpression19{{"PgClassExpression[19∈3]
ᐸ__forums__.”id”ᐳ"}}:::plan
PgClassExpression26{{"PgClassExpression[26∈3]
ᐸ__forums__...chived_at”ᐳ"}}:::plan
- Object11 & PgClassExpression19 & ApplyInput25 & PgClassExpression26 & Lambda27 & Connection24 & Constant39 --> PgSelect28
- PgSelect34[["PgSelect[34∈3]
ᐸmessages(aggregate)ᐳ"]]:::plan
Object11 & PgClassExpression19 & ApplyInput25 & PgClassExpression26 & Lambda27 & Connection24 --> PgSelect34
Object32{{"Object[32∈3]
ᐸ{first,last,hasMore}ᐳ"}}:::plan
- Access31{{"Access[31∈3]
ᐸ28.hasMoreᐳ"}}:::plan
- Constant39 & Access31 --> Object32
+ Access31{{"Access[31∈3]
ᐸ42.hasMoreᐳ"}}:::plan
+ Constant43 & Access31 --> Object32
+ List41{{"List[41∈3]
ᐸ14,40ᐳ"}}:::plan
+ Access40{{"Access[40∈3] ➊
ᐸ8.m.subqueryDetailsFor28ᐳ"}}:::plan
+ __Item14 & Access40 --> List41
PgSelectSingle15 --> PgClassExpression19
PgSelectSingle15 --> PgClassExpression26
PgPageInfo29{{"PgPageInfo[29∈3] ➊"}}:::plan
Connection24 --> PgPageInfo29
- PgSelect28 --> Access31
+ Lambda42{{"Lambda[42∈3]"}}:::plan
+ Lambda42 --> Access31
Lambda33{{"Lambda[33∈3]
ᐸhasNextPageCbᐳ"}}:::plan
Object32 --> Lambda33
First35{{"First[35∈3]"}}:::plan
@@ -62,22 +66,24 @@ graph TD
First35 --> PgSelectSingle37
PgClassExpression38{{"PgClassExpression[38∈3]
ᐸcount(*)ᐳ"}}:::plan
PgSelectSingle37 --> PgClassExpression38
+ PgSelect8 --> Access40
+ List41 --> Lambda42
%% define steps
subgraph "Buckets for queries/conditions/condition-featured-messages-minimal"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 9, 10, 39, 40, 11, 17, 24, 25
2: Lambda[12], Lambda[27]
3: PgSelect[8]
4: PgSelectRows[13]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 9, 10, 43, 44, 11, 17, 24, 25
2: Lambda[12], Lambda[27]
3: PgSelectInlineApply[39]
4: PgSelect[8]
5: PgSelectRows[13]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Constant7,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,__InputObject17,Connection24,ApplyInput25,Lambda27,Constant39,Constant40 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 11, 25, 27, 24, 39, 6
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
+ class Bucket0,__Value2,__Value4,Constant7,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,__InputObject17,Connection24,ApplyInput25,Lambda27,PgSelectInlineApply39,Constant43,Constant44 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 24, 43, 6, 11, 25, 27, 8
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item14,PgSelectSingle15 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 11, 25, 27, 24, 39, 6
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 24, 43, 6, 11, 25, 27, 8, 14
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 15, 11, 25, 27, 24, 39, 6
ROOT Connectionᐸ20ᐳ[24]
1:
ᐳ: 19, 26, 29
2: PgSelect[28], PgSelect[34]
ᐳ: Access[31], Object[32], Lambda[33]
3: PgSelectRows[36]
ᐳ: 35, 37, 38"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 15, 24, 43, 6, 11, 25, 27, 8, 14
ROOT Connectionᐸ20ᐳ[24]
1:
ᐳ: 19, 26, 29, 40, 41, 42, 31, 32, 33
2: PgSelect[34]
3: PgSelectRows[36]
ᐳ: 35, 37, 38"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression19,PgClassExpression26,PgSelect28,PgPageInfo29,Access31,Object32,Lambda33,PgSelect34,First35,PgSelectRows36,PgSelectSingle37,PgClassExpression38 bucket3
+ class Bucket3,PgClassExpression19,PgClassExpression26,PgPageInfo29,Access31,Object32,Lambda33,PgSelect34,First35,PgSelectRows36,PgSelectSingle37,PgClassExpression38,Access40,List41,Lambda42 bucket3
Bucket0 --> Bucket1
Bucket1 --> Bucket2
Bucket2 --> Bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.sql b/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.sql
index 07a28df88..701d30062 100644
--- a/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.sql
+++ b/grafast/dataplan-pg/__tests__/queries/conditions/condition-featured-messages-minimal.sql
@@ -1,6 +1,20 @@
select
__forums__."id" as "0",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "1"
+ to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "1",
+ array(
+ select array[null]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ __messages__.featured = $1::"bool"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ limit 6
+ )::text as "2"
from app_public.forums as __forums__
where
(
@@ -10,24 +24,6 @@ where
)
order by __forums__."id" asc;
-select __messages_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"uuid" as "id0", (ids.value->>1)::"timestamptz" as "id1" from json_array_elements($2::json) with ordinality as ids) as __messages_identifiers__,
-lateral (
- select
- __messages_identifiers__.idx as "0"
- from app_public.messages as __messages__
- where
- (
- __messages__."forum_id" = __messages_identifiers__."id0"
- ) and (
- __messages__.featured = $1::"bool"
- ) and (
- (__messages__.archived_at is null) = (__messages_identifiers__."id1" is null)
- )
- order by __messages__."id" asc
- limit 6
-) as __messages_result__;
-
select __messages_result__.*
from (select ids.ordinality - 1 as idx, (ids.value->>0)::"uuid" as "id0", (ids.value->>1)::"timestamptz" as "id1" from json_array_elements($2::json) with ordinality as ids) as __messages_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/connections/empty.mermaid b/grafast/dataplan-pg/__tests__/queries/connections/empty.mermaid
index 8069094d5..90b55dc03 100644
--- a/grafast/dataplan-pg/__tests__/queries/connections/empty.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/connections/empty.mermaid
@@ -12,7 +12,10 @@ graph TD
PgSelect8[["PgSelect[8∈0] ➊
ᐸforumsᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda12[["Lambda[12∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Object11 & Lambda12 --> PgSelect8
+ PgSelectInlineApply36["PgSelectInlineApply[36∈0] ➊"]:::plan
+ Object11 & Lambda12 & PgSelectInlineApply36 --> PgSelect8
+ Lambda24[["Lambda[24∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
+ Lambda24 --> PgSelectInlineApply36
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
@@ -24,7 +27,6 @@ graph TD
Constant7 --> Lambda12
PgSelectRows13[["PgSelectRows[13∈0] ➊"]]:::plan
PgSelect8 --> PgSelectRows13
- Lambda24[["Lambda[24∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
Constant7 --> Lambda24
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
__Item14[/"__Item[14∈1]
ᐸ13ᐳ"\]:::itemplan
@@ -33,40 +35,40 @@ graph TD
__Item14 --> PgSelectSingle15
PgClassExpression16{{"PgClassExpression[16∈2]
ᐸ__forums__.”name”ᐳ"}}:::plan
PgSelectSingle15 --> PgClassExpression16
- PgSelect25[["PgSelect[25∈3]
ᐸmessages+1ᐳ"]]:::plan
- PgClassExpression17{{"PgClassExpression[17∈3]
ᐸ__forums__.”id”ᐳ"}}:::plan
- PgClassExpression23{{"PgClassExpression[23∈3]
ᐸ__forums__...chived_at”ᐳ"}}:::plan
- Object11 & PgClassExpression17 & PgClassExpression23 & Lambda24 & Connection22 --> PgSelect25
Object34{{"Object[34∈3]
ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
- Access28{{"Access[28∈3]
ᐸ25.hasMoreᐳ"}}:::plan
+ Access28{{"Access[28∈3]
ᐸ39.hasMoreᐳ"}}:::plan
Access28 --> Object34
Object29{{"Object[29∈3]
ᐸ{first,last,hasMore}ᐳ"}}:::plan
Access28 --> Object29
- PgSelectSingle15 --> PgClassExpression17
- PgSelectSingle15 --> PgClassExpression23
+ List38{{"List[38∈3]
ᐸ14,37ᐳ"}}:::plan
+ Access37{{"Access[37∈3] ➊
ᐸ8.m.subqueryDetailsFor25ᐳ"}}:::plan
+ __Item14 & Access37 --> List38
PgPageInfo26{{"PgPageInfo[26∈3] ➊"}}:::plan
Connection22 --> PgPageInfo26
- PgSelect25 --> Access28
+ Lambda39{{"Lambda[39∈3]"}}:::plan
+ Lambda39 --> Access28
Lambda30{{"Lambda[30∈3]
ᐸhasNextPageCbᐳ"}}:::plan
Object29 --> Lambda30
Lambda35{{"Lambda[35∈3]
ᐸhasPreviousPageCbᐳ"}}:::plan
Object34 --> Lambda35
+ PgSelect8 --> Access37
+ List38 --> Lambda39
%% define steps
subgraph "Buckets for queries/connections/empty"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 9, 10, 11, 22
2: Lambda[12], Lambda[24]
3: PgSelect[8]
4: PgSelectRows[13]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 9, 10, 11, 22
2: Lambda[12], Lambda[24]
3: PgSelectInlineApply[36]
4: PgSelect[8]
5: PgSelectRows[13]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Constant7,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Connection22,Lambda24 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 11, 24, 22, 6
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
+ class Bucket0,__Value2,__Value4,Constant7,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,Connection22,Lambda24,PgSelectInlineApply36 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 22, 6, 8
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item14,PgSelectSingle15 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 11, 24, 22, 6
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 22, 6, 8, 14
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,PgClassExpression16 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 15, 11, 24, 22, 6
ROOT Connectionᐸ18ᐳ[22]
1:
ᐳ: 17, 23, 26
2: PgSelect[25]
ᐳ: 28, 29, 30, 34, 35"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 22, 6, 8, 14
ROOT Connectionᐸ18ᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression17,PgClassExpression23,PgSelect25,PgPageInfo26,Access28,Object29,Lambda30,Object34,Lambda35 bucket3
+ class Bucket3,PgPageInfo26,Access28,Object29,Lambda30,Object34,Lambda35,Access37,List38,Lambda39 bucket3
Bucket0 --> Bucket1
Bucket1 --> Bucket2
Bucket2 --> Bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/connections/empty.sql b/grafast/dataplan-pg/__tests__/queries/connections/empty.sql
index 768d8ab9b..401821db0 100644
--- a/grafast/dataplan-pg/__tests__/queries/connections/empty.sql
+++ b/grafast/dataplan-pg/__tests__/queries/connections/empty.sql
@@ -1,7 +1,16 @@
select
__forums__."name" as "0",
- __forums__."id" as "1",
- to_char(__forums__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "2"
+ array(
+ select array[null]::text[]
+ from app_public.messages as __messages__
+ where
+ (
+ __messages__."forum_id" = __forums__."id"
+ ) and (
+ (__messages__.archived_at is null) = (__forums__."archived_at" is null)
+ )
+ order by __messages__."id" asc
+ )::text as "1"
from app_public.forums as __forums__
where
(
@@ -10,18 +19,3 @@ where
__forums__.archived_at is null
)
order by __forums__."id" asc;
-
-select __messages_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"uuid" as "id0", (ids.value->>1)::"timestamptz" as "id1" from json_array_elements($1::json) with ordinality as ids) as __messages_identifiers__,
-lateral (
- select
- __messages_identifiers__.idx as "0"
- from app_public.messages as __messages__
- where
- (
- __messages__."forum_id" = __messages_identifiers__."id0"
- ) and (
- (__messages__.archived_at is null) = (__messages_identifiers__."id1" is null)
- )
- order by __messages__."id" asc
-) as __messages_result__;
diff --git a/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.mermaid b/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.mermaid
index 0a533af74..85ada8ce8 100644
--- a/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.mermaid
@@ -12,7 +12,9 @@ graph TD
PgSelect8[["PgSelect[8∈0] ➊
ᐸforumsᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Lambda12[["Lambda[12∈0] ➊
ᐸincludeArchivedConditionᐳ"]]:::unbatchedplan
- Object11 & Lambda12 --> PgSelect8
+ PgFromExpression21{{"PgFromExpression[21∈0] ➊"}}:::plan
+ PgSelectInlineApply34["PgSelectInlineApply[34∈0] ➊"]:::plan
+ Object11 & Lambda12 & PgFromExpression21 & PgSelectInlineApply34 --> PgSelect8
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
@@ -24,19 +26,20 @@ graph TD
PgSelectRows13[["PgSelectRows[13∈0] ➊"]]:::plan
PgSelect8 --> PgSelectRows13
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- PgFromExpression21{{"PgFromExpression[21∈0] ➊"}}:::plan
__Item14[/"__Item[14∈1]
ᐸ13ᐳ"\]:::itemplan
PgSelectRows13 ==> __Item14
PgSelectSingle15{{"PgSelectSingle[15∈1]
ᐸforumsᐳ"}}:::plan
__Item14 --> PgSelectSingle15
- PgSelect17[["PgSelect[17∈2]
ᐸforums_messages_list_setᐳ"]]:::plan
- PgClassExpression16{{"PgClassExpression[16∈2]
ᐸ__forums__ᐳ"}}:::plan
- Object11 & PgClassExpression16 & PgFromExpression21 --> PgSelect17
__ListTransform22[["__ListTransform[22∈2]
ᐸpartitionByIndex1:17ᐳ"]]:::plan
PgSelectRows23[["PgSelectRows[23∈2]"]]:::plan
- PgSelectRows23 & PgSelect17 --> __ListTransform22
- PgSelectSingle15 --> PgClassExpression16
- PgSelect17 --> PgSelectRows23
+ Lambda37{{"Lambda[37∈2]"}}:::plan
+ PgSelectRows23 & Lambda37 --> __ListTransform22
+ List36{{"List[36∈2]
ᐸ14,35ᐳ"}}:::plan
+ Access35{{"Access[35∈2] ➊
ᐸ8.m.subqueryDetailsFor17ᐳ"}}:::plan
+ __Item14 & Access35 --> List36
+ Lambda37 --> PgSelectRows23
+ PgSelect8 --> Access35
+ List36 --> Lambda37
__Item24[/"__Item[24∈3]
ᐸ23ᐳ"\]:::itemplan
PgSelectRows23 -.-> __Item24
PgSelectSingle25{{"PgSelectSingle[25∈3]
ᐸforums_messages_list_setᐳ"}}:::plan
@@ -57,15 +60,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/functions/computed-column-forums-messages-list-set"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 7, 9, 10, 21, 11
2: Lambda[12]
3: PgSelect[8]
4: PgSelectRows[13]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[34]
ᐳ: 6, 7, 9, 10, 21, 11
2: Lambda[12]
3: PgSelect[8]
4: PgSelectRows[13]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Constant7,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,PgFromExpression21 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 11, 21
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
+ class Bucket0,__Value2,__Value4,Constant7,PgSelect8,Access9,Access10,Object11,Lambda12,PgSelectRows13,PgFromExpression21,PgSelectInlineApply34 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 8
ROOT __Item{1}ᐸ13ᐳ[14]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item14,PgSelectSingle15 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 15, 11, 21
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]
1:
ᐳ: PgClassExpression[16]
2: PgSelect[17]
3: PgSelectRows[23]
4: __ListTransform[22]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 8, 14, 15
ROOT PgSelectSingle{1}ᐸforumsᐳ[15]
1:
ᐳ: Access[35], List[36], Lambda[37]
2: PgSelectRows[23]
3: __ListTransform[22]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression16,PgSelect17,__ListTransform22,PgSelectRows23 bucket2
+ class Bucket2,__ListTransform22,PgSelectRows23,Access35,List36,Lambda37 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgClassExpression{3}ᐸ__forums_m..._set_idx__ᐳ[26]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item24,PgSelectSingle25,PgClassExpression26 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.sql b/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.sql
index 1de8e22be..ef0677e5a 100644
--- a/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.sql
+++ b/grafast/dataplan-pg/__tests__/queries/functions/computed-column-forums-messages-list-set.sql
@@ -1,6 +1,17 @@
select
- case when (__forums__) is not distinct from null then null::text else json_build_array(((__forums__)."id"), ((__forums__)."name"), to_char(((__forums__)."archived_at"), 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text))::text end as "0",
- __forums__."id" as "1"
+ __forums__."id" as "0",
+ array(
+ select array[
+ __forums_messages_list_set__."body",
+ __forums_messages_list_set__."featured"::text,
+ __forums_messages_list_set_idx__::text,
+ __forums_messages_list_set__."id"
+ ]::text[]
+ from app_public.forums_messages_list_set(__forums__) with ordinality as __forums_messages_list_set_tmp__ (arr, __forums_messages_list_set_idx__) cross join lateral unnest (__forums_messages_list_set_tmp__.arr) as __forums_messages_list_set__
+ where (
+ true /* authorization checks */
+ )
+ )::text as "1"
from app_public.forums as __forums__
where
(
@@ -9,18 +20,3 @@ where
__forums__.archived_at is null
)
order by __forums__."id" asc;
-
-select __forums_messages_list_set_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::app_public.forums as "id0" from json_array_elements($1::json) with ordinality as ids) as __forums_messages_list_set_identifiers__,
-lateral (
- select
- __forums_messages_list_set__."body" as "0",
- __forums_messages_list_set__."featured"::text as "1",
- __forums_messages_list_set_idx__::text as "2",
- __forums_messages_list_set__."id" as "3",
- __forums_messages_list_set_identifiers__.idx as "4"
- from app_public.forums_messages_list_set(__forums_messages_list_set_identifiers__."id0") with ordinality as __forums_messages_list_set_tmp__ (arr, __forums_messages_list_set_idx__) cross join lateral unnest (__forums_messages_list_set_tmp__.arr) as __forums_messages_list_set__
- where (
- true /* authorization checks */
- )
-) as __forums_messages_list_set_result__;
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.mermaid
index ae9aa0711..ec3029c13 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply71["PgSelectInlineApply[71∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply71 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸrelational_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda74{{"Lambda[74∈2]"}}:::plan
+ PgSelectRows20 & Lambda74 --> __ListTransform19
+ List73{{"List[73∈2]
ᐸ11,72ᐳ"}}:::plan
+ Access72{{"Access[72∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access72 --> List73
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda74 --> PgSelectRows20
+ PgSelect6 --> Access72
+ List73 --> Lambda74
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸrelational_itemsᐳ"}}:::plan
@@ -123,15 +126,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-relational/basics-with-fragments"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[71]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply71 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 72, 73, 74
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access72,List73,Lambda74 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸrelational_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.sql
index 5d52c444e..0fdeaffaf 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics-with-fragments.sql
@@ -1,35 +1,31 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __relational_items__."type"::text,
+ __relational_items__."id"::text,
+ __relational_items__."type2"::text,
+ __relational_items__."position"::text,
+ to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __relational_items__."is_explicitly_archived"::text,
+ to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text)
+ ]::text[]
+ from interfaces_and_unions.relational_items as __relational_items__
+ where
+ (
+ __relational_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __relational_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_id" asc;
-select __relational_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 __relational_items_identifiers__,
-lateral (
- select
- __relational_items__."type"::text as "0",
- __relational_items__."id"::text as "1",
- __relational_items__."type2"::text as "2",
- __relational_items__."position"::text as "3",
- to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "4",
- to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "5",
- __relational_items__."is_explicitly_archived"::text as "6",
- to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __relational_items_identifiers__.idx as "8"
- from interfaces_and_unions.relational_items as __relational_items__
- where
- (
- __relational_items__."author_id" = __relational_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __relational_items__."id" asc
-) as __relational_items_result__;
-
select __relational_topics_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 __relational_topics_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.mermaid
index f770cfdcb..d4d29bcc1 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply62["PgSelectInlineApply[62∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply62 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸrelational_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda65{{"Lambda[65∈2]"}}:::plan
+ PgSelectRows20 & Lambda65 --> __ListTransform19
+ List64{{"List[64∈2]
ᐸ11,63ᐳ"}}:::plan
+ Access63{{"Access[63∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access63 --> List64
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda65 --> PgSelectRows20
+ PgSelect6 --> Access63
+ List64 --> Lambda65
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸrelational_itemsᐳ"}}:::plan
@@ -105,15 +108,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-relational/basics"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[62]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply62 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 63, 64, 65
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access63,List64,Lambda65 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸrelational_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.sql
index 7169739a2..e4867b00f 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/basics.sql
@@ -1,35 +1,31 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __relational_items__."type"::text,
+ __relational_items__."id"::text,
+ __relational_items__."type2"::text,
+ __relational_items__."position"::text,
+ to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __relational_items__."is_explicitly_archived"::text,
+ to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text)
+ ]::text[]
+ from interfaces_and_unions.relational_items as __relational_items__
+ where
+ (
+ __relational_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __relational_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_id" asc;
-select __relational_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 __relational_items_identifiers__,
-lateral (
- select
- __relational_items__."type"::text as "0",
- __relational_items__."id"::text as "1",
- __relational_items__."type2"::text as "2",
- __relational_items__."position"::text as "3",
- to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "4",
- to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "5",
- __relational_items__."is_explicitly_archived"::text as "6",
- to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __relational_items_identifiers__.idx as "8"
- from interfaces_and_unions.relational_items as __relational_items__
- where
- (
- __relational_items__."author_id" = __relational_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __relational_items__."id" asc
-) as __relational_items_result__;
-
select __relational_topics_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 __relational_topics_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.mermaid
index ccb04ab34..4d64fcc98 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply405["PgSelectInlineApply[405∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply405 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸrelational_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda408{{"Lambda[408∈2]"}}:::plan
+ PgSelectRows20 & Lambda408 --> __ListTransform19
+ List407{{"List[407∈2]
ᐸ11,406ᐳ"}}:::plan
+ Access406{{"Access[406∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access406 --> List407
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda408 --> PgSelectRows20
+ PgSelect6 --> Access406
+ List407 --> Lambda408
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸrelational_itemsᐳ"}}:::plan
@@ -233,15 +236,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-relational/nested-more-fragments"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[405]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply405 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 406, 407, 408
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access406,List407,Lambda408 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸrelational_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.sql
index 0d1a359b3..ca84c57e7 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more-fragments.sql
@@ -1,37 +1,33 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __relational_items__."type"::text,
+ __relational_items__."id"::text,
+ __relational_items__."parent_id"::text,
+ __relational_items__."type2"::text,
+ __relational_items__."author_id"::text,
+ __relational_items__."position"::text,
+ to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __relational_items__."is_explicitly_archived"::text,
+ to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text)
+ ]::text[]
+ from interfaces_and_unions.relational_items as __relational_items__
+ where
+ (
+ __relational_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __relational_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_id" asc;
-select __relational_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 __relational_items_identifiers__,
-lateral (
- select
- __relational_items__."type"::text as "0",
- __relational_items__."id"::text as "1",
- __relational_items__."parent_id"::text as "2",
- __relational_items__."type2"::text as "3",
- __relational_items__."author_id"::text as "4",
- __relational_items__."position"::text as "5",
- to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "6",
- to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __relational_items__."is_explicitly_archived"::text as "8",
- to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "9",
- __relational_items_identifiers__.idx as "10"
- from interfaces_and_unions.relational_items as __relational_items__
- where
- (
- __relational_items__."author_id" = __relational_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __relational_items__."id" asc
-) as __relational_items_result__;
-
select __relational_topics_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 __relational_topics_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.mermaid
index bca7a32b2..ccabacd3b 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply387["PgSelectInlineApply[387∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply387 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸrelational_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda390{{"Lambda[390∈2]"}}:::plan
+ PgSelectRows20 & Lambda390 --> __ListTransform19
+ List389{{"List[389∈2]
ᐸ11,388ᐳ"}}:::plan
+ Access388{{"Access[388∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access388 --> List389
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda390 --> PgSelectRows20
+ PgSelect6 --> Access388
+ List389 --> Lambda390
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸrelational_itemsᐳ"}}:::plan
@@ -197,15 +200,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-relational/nested-more"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[387]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply387 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 388, 389, 390
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access388,List389,Lambda390 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸrelational_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.sql
index f044f56fc..835eb1d27 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested-more.sql
@@ -1,37 +1,33 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __relational_items__."type"::text,
+ __relational_items__."id"::text,
+ __relational_items__."parent_id"::text,
+ __relational_items__."type2"::text,
+ __relational_items__."author_id"::text,
+ __relational_items__."position"::text,
+ to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __relational_items__."is_explicitly_archived"::text,
+ to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text)
+ ]::text[]
+ from interfaces_and_unions.relational_items as __relational_items__
+ where
+ (
+ __relational_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __relational_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_id" asc;
-select __relational_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 __relational_items_identifiers__,
-lateral (
- select
- __relational_items__."type"::text as "0",
- __relational_items__."id"::text as "1",
- __relational_items__."parent_id"::text as "2",
- __relational_items__."type2"::text as "3",
- __relational_items__."author_id"::text as "4",
- __relational_items__."position"::text as "5",
- to_char(__relational_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "6",
- to_char(__relational_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __relational_items__."is_explicitly_archived"::text as "8",
- to_char(__relational_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "9",
- __relational_items_identifiers__.idx as "10"
- from interfaces_and_unions.relational_items as __relational_items__
- where
- (
- __relational_items__."author_id" = __relational_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __relational_items__."id" asc
-) as __relational_items_result__;
-
select __relational_topics_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 __relational_topics_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.mermaid
index 7131554b4..330d292a6 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply223["PgSelectInlineApply[223∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply223 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸrelational_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda226{{"Lambda[226∈2]"}}:::plan
+ PgSelectRows20 & Lambda226 --> __ListTransform19
+ List225{{"List[225∈2]
ᐸ11,224ᐳ"}}:::plan
+ Access224{{"Access[224∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access224 --> List225
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda226 --> PgSelectRows20
+ PgSelect6 --> Access224
+ List225 --> Lambda226
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸrelational_itemsᐳ"}}:::plan
@@ -153,15 +156,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-relational/nested"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[223]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply223 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 224, 225, 226
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access224,List225,Lambda226 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸrelational_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.sql
index ba76110b6..9cf75e3e0 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-relational/nested.sql
@@ -1,31 +1,27 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __relational_items__."type"::text,
+ __relational_items__."id"::text,
+ __relational_items__."parent_id"::text,
+ __relational_items__."type2"::text
+ ]::text[]
+ from interfaces_and_unions.relational_items as __relational_items__
+ where
+ (
+ __relational_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __relational_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_id" asc;
-select __relational_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 __relational_items_identifiers__,
-lateral (
- select
- __relational_items__."type"::text as "0",
- __relational_items__."id"::text as "1",
- __relational_items__."parent_id"::text as "2",
- __relational_items__."type2"::text as "3",
- __relational_items_identifiers__.idx as "4"
- from interfaces_and_unions.relational_items as __relational_items__
- where
- (
- __relational_items__."author_id" = __relational_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __relational_items__."id" asc
-) as __relational_items_result__;
-
select __relational_topics_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 __relational_topics_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.mermaid
index d6d62de70..f7f0803ea 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply40["PgSelectInlineApply[40∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply40 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸsingle_table_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda43{{"Lambda[43∈2]"}}:::plan
+ PgSelectRows20 & Lambda43 --> __ListTransform19
+ List42{{"List[42∈2]
ᐸ11,41ᐳ"}}:::plan
+ Access41{{"Access[41∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access41 --> List42
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda43 --> PgSelectRows20
+ PgSelect6 --> Access41
+ List42 --> Lambda43
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸsingle_table_itemsᐳ"}}:::plan
@@ -75,15 +78,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-single-table/basics-with-fragments"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[40]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply40 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 41, 42, 43
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access41,List42,Lambda43 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸsingle_table_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.sql
index 09696dc40..eb34225cd 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics-with-fragments.sql
@@ -1,35 +1,31 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __single_table_items__."type"::text,
+ __single_table_items__."id"::text,
+ __single_table_items__."type2"::text,
+ __single_table_items__."position"::text,
+ to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __single_table_items__."is_explicitly_archived"::text,
+ to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __single_table_items__."title",
+ __single_table_items__."description",
+ __single_table_items__."note",
+ __single_table_items__."color"
+ ]::text[]
+ from interfaces_and_unions.single_table_items as __single_table_items__
+ where
+ (
+ __single_table_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __single_table_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_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__."type"::text as "0",
- __single_table_items__."id"::text as "1",
- __single_table_items__."type2"::text as "2",
- __single_table_items__."position"::text as "3",
- to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "4",
- to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "5",
- __single_table_items__."is_explicitly_archived"::text as "6",
- to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __single_table_items__."title" as "8",
- __single_table_items__."description" as "9",
- __single_table_items__."note" as "10",
- __single_table_items__."color" as "11",
- __single_table_items_identifiers__.idx as "12"
- from interfaces_and_unions.single_table_items as __single_table_items__
- where
- (
- __single_table_items__."author_id" = __single_table_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __single_table_items__."id" asc
-) as __single_table_items_result__;
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.mermaid
index f9b88d3af..be7eafdab 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply36["PgSelectInlineApply[36∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply36 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸsingle_table_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda39{{"Lambda[39∈2]"}}:::plan
+ PgSelectRows20 & Lambda39 --> __ListTransform19
+ List38{{"List[38∈2]
ᐸ11,37ᐳ"}}:::plan
+ Access37{{"Access[37∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access37 --> List38
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda39 --> PgSelectRows20
+ PgSelect6 --> Access37
+ List38 --> Lambda39
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸsingle_table_itemsᐳ"}}:::plan
@@ -67,15 +70,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-single-table/basics"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[36]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply36 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 37, 38, 39
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access37,List38,Lambda39 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸsingle_table_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.sql
index 51ec4d7ed..1c7f72144 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/basics.sql
@@ -1,31 +1,27 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __single_table_items__."type"::text,
+ __single_table_items__."id"::text,
+ __single_table_items__."type2"::text,
+ __single_table_items__."position"::text,
+ to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __single_table_items__."is_explicitly_archived"::text,
+ to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text)
+ ]::text[]
+ from interfaces_and_unions.single_table_items as __single_table_items__
+ where
+ (
+ __single_table_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __single_table_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_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__."type"::text as "0",
- __single_table_items__."id"::text as "1",
- __single_table_items__."type2"::text as "2",
- __single_table_items__."position"::text as "3",
- to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "4",
- to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "5",
- __single_table_items__."is_explicitly_archived"::text as "6",
- to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __single_table_items_identifiers__.idx as "8"
- from interfaces_and_unions.single_table_items as __single_table_items__
- where
- (
- __single_table_items__."author_id" = __single_table_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __single_table_items__."id" asc
-) as __single_table_items_result__;
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.mermaid
index 4c2af22a2..e8b18d114 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply251["PgSelectInlineApply[251∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply251 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸsingle_table_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda254{{"Lambda[254∈2]"}}:::plan
+ PgSelectRows20 & Lambda254 --> __ListTransform19
+ List253{{"List[253∈2]
ᐸ11,252ᐳ"}}:::plan
+ Access252{{"Access[252∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access252 --> List253
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda254 --> PgSelectRows20
+ PgSelect6 --> Access252
+ List253 --> Lambda254
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸsingle_table_itemsᐳ"}}:::plan
@@ -135,15 +138,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-single-table/nested-more-fragments"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[251]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply251 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 252, 253, 254
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access252,List253,Lambda254 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸsingle_table_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.sql
index afca0589d..23d832c02 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more-fragments.sql
@@ -1,41 +1,37 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __single_table_items__."type"::text,
+ __single_table_items__."parent_id"::text,
+ __single_table_items__."id"::text,
+ __single_table_items__."type2"::text,
+ __single_table_items__."author_id"::text,
+ __single_table_items__."position"::text,
+ to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __single_table_items__."is_explicitly_archived"::text,
+ to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __single_table_items__."title",
+ __single_table_items__."description",
+ __single_table_items__."note",
+ __single_table_items__."color"
+ ]::text[]
+ from interfaces_and_unions.single_table_items as __single_table_items__
+ where
+ (
+ __single_table_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __single_table_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_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__."type"::text as "0",
- __single_table_items__."parent_id"::text as "1",
- __single_table_items__."id"::text as "2",
- __single_table_items__."type2"::text as "3",
- __single_table_items__."author_id"::text as "4",
- __single_table_items__."position"::text as "5",
- to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "6",
- to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __single_table_items__."is_explicitly_archived"::text as "8",
- to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "9",
- __single_table_items__."title" as "10",
- __single_table_items__."description" as "11",
- __single_table_items__."note" as "12",
- __single_table_items__."color" as "13",
- __single_table_items_identifiers__.idx as "14"
- from interfaces_and_unions.single_table_items as __single_table_items__
- where
- (
- __single_table_items__."author_id" = __single_table_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __single_table_items__."id" asc
-) as __single_table_items_result__;
-
select __people_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 __people_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.mermaid
index 24567a89d..732117970 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply243["PgSelectInlineApply[243∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply243 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸsingle_table_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda246{{"Lambda[246∈2]"}}:::plan
+ PgSelectRows20 & Lambda246 --> __ListTransform19
+ List245{{"List[245∈2]
ᐸ11,244ᐳ"}}:::plan
+ Access244{{"Access[244∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access244 --> List245
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda246 --> PgSelectRows20
+ PgSelect6 --> Access244
+ List245 --> Lambda246
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸsingle_table_itemsᐳ"}}:::plan
@@ -119,15 +122,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-single-table/nested-more"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[243]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply243 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 244, 245, 246
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access244,List245,Lambda246 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸsingle_table_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.sql
index 95c8b0a0e..fcd56b4f5 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested-more.sql
@@ -1,37 +1,33 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __single_table_items__."type"::text,
+ __single_table_items__."parent_id"::text,
+ __single_table_items__."id"::text,
+ __single_table_items__."type2"::text,
+ __single_table_items__."author_id"::text,
+ __single_table_items__."position"::text,
+ to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text),
+ __single_table_items__."is_explicitly_archived"::text,
+ to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text)
+ ]::text[]
+ from interfaces_and_unions.single_table_items as __single_table_items__
+ where
+ (
+ __single_table_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __single_table_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_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__."type"::text as "0",
- __single_table_items__."parent_id"::text as "1",
- __single_table_items__."id"::text as "2",
- __single_table_items__."type2"::text as "3",
- __single_table_items__."author_id"::text as "4",
- __single_table_items__."position"::text as "5",
- to_char(__single_table_items__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "6",
- to_char(__single_table_items__."updated_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "7",
- __single_table_items__."is_explicitly_archived"::text as "8",
- to_char(__single_table_items__."archived_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "9",
- __single_table_items_identifiers__.idx as "10"
- from interfaces_and_unions.single_table_items as __single_table_items__
- where
- (
- __single_table_items__."author_id" = __single_table_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- order by __single_table_items__."id" asc
-) as __single_table_items_result__;
-
select __people_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 __people_identifiers__,
lateral (
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.mermaid b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.mermaid
index ae78bff87..49114e960 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.mermaid
@@ -9,12 +9,13 @@ graph TD
%% plan dependencies
+ PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object9{{"Object[9∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ PgSelectInlineApply77["PgSelectInlineApply[77∈0] ➊"]:::plan
+ Object9 & PgSelectInlineApply77 --> PgSelect6
Access7{{"Access[7∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access7 & Access8 --> Object9
- PgSelect6[["PgSelect[6∈0] ➊
ᐸpeopleᐳ"]]:::plan
- Object9 --> PgSelect6
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access7
__Value2 --> Access8
@@ -25,16 +26,18 @@ graph TD
PgSelectRows10 ==> __Item11
PgSelectSingle12{{"PgSelectSingle[12∈1]
ᐸpeopleᐳ"}}:::plan
__Item11 --> PgSelectSingle12
- PgSelect15[["PgSelect[15∈2]
ᐸsingle_table_itemsᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈2]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object9 & PgClassExpression14 --> PgSelect15
__ListTransform19[["__ListTransform[19∈2]
ᐸeach:15ᐳ"]]:::plan
PgSelectRows20[["PgSelectRows[20∈2]"]]:::plan
- PgSelectRows20 & PgSelect15 --> __ListTransform19
+ Lambda80{{"Lambda[80∈2]"}}:::plan
+ PgSelectRows20 & Lambda80 --> __ListTransform19
+ List79{{"List[79∈2]
ᐸ11,78ᐳ"}}:::plan
+ Access78{{"Access[78∈2] ➊
ᐸ6.m.subqueryDetailsFor15ᐳ"}}:::plan
+ __Item11 & Access78 --> List79
PgClassExpression13{{"PgClassExpression[13∈2]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle12 --> PgClassExpression13
- PgSelectSingle12 --> PgClassExpression14
- PgSelect15 --> PgSelectRows20
+ Lambda80 --> PgSelectRows20
+ PgSelect6 --> Access78
+ List79 --> Lambda80
__Item21[/"__Item[21∈3]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 -.-> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈3]
ᐸsingle_table_itemsᐳ"}}:::plan
@@ -75,15 +78,15 @@ graph TD
%% define steps
subgraph "Buckets for queries/interfaces-single-table/nested"
- Bucket0("Bucket 0 (root)
1:
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[77]
ᐳ: Access[7], Access[8], Object[9]
2: PgSelect[6]
3: PgSelectRows[10]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect6,Access7,Access8,Object9,PgSelectRows10,PgSelectInlineApply77 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 6, 9
ROOT __Item{1}ᐸ10ᐳ[11]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item11,PgSelectSingle12 bucket1
- Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 14
2: PgSelect[15]
3: PgSelectRows[20]
4: __ListTransform[19]"):::bucket
+ Bucket2("Bucket 2 (nullableBoundary)
Deps: 12, 6, 11, 9
ROOT PgSelectSingle{1}ᐸpeopleᐳ[12]
1:
ᐳ: 13, 78, 79, 80
2: PgSelectRows[20]
3: __ListTransform[19]"):::bucket
classDef bucket2 stroke:#7f007f
- class Bucket2,PgClassExpression13,PgClassExpression14,PgSelect15,__ListTransform19,PgSelectRows20 bucket2
+ class Bucket2,PgClassExpression13,__ListTransform19,PgSelectRows20,Access78,List79,Lambda80 bucket2
Bucket3("Bucket 3 (subroutine)
ROOT PgSelectSingle{3}ᐸsingle_table_itemsᐳ[22]"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,__Item21,PgSelectSingle22 bucket3
diff --git a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.sql b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.sql
index 4c02db104..e5bc7317a 100644
--- a/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.sql
+++ b/grafast/dataplan-pg/__tests__/queries/interfaces-single-table/nested.sql
@@ -1,31 +1,27 @@
select
__people__."username" as "0",
- __people__."person_id"::text as "1"
+ array(
+ select array[
+ __single_table_items__."type"::text,
+ __single_table_items__."parent_id"::text,
+ __single_table_items__."id"::text,
+ __single_table_items__."type2"::text
+ ]::text[]
+ from interfaces_and_unions.single_table_items as __single_table_items__
+ where
+ (
+ __single_table_items__."author_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __single_table_items__."id" asc
+ )::text as "1"
from interfaces_and_unions.people as __people__
where (
true /* authorization checks */
)
order by __people__."person_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__."type"::text as "0",
- __single_table_items__."parent_id"::text as "1",
- __single_table_items__."id"::text as "2",
- __single_table_items__."type2"::text as "3",
- __single_table_items_identifiers__.idx as "4"
- from interfaces_and_unions.single_table_items as __single_table_items__
- where
- (
- __single_table_items__."author_id" = __single_table_items_identifiers__."id0"
- ) and (
- true /* authorization checks */
- )
- 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 (
diff --git a/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.mermaid b/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.mermaid
index fd81651cb..60e209105 100644
--- a/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.mermaid
+++ b/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.mermaid
@@ -11,8 +11,9 @@ graph TD
%% plan dependencies
PgSelect7[["PgSelect[7∈0] ➊
ᐸpeopleᐳ"]]:::plan
Object10{{"Object[10∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Constant83{{"Constant[83∈0] ➊
ᐸ2ᐳ"}}:::plan
- Object10 & Constant83 --> PgSelect7
+ Constant87{{"Constant[87∈0] ➊
ᐸ2ᐳ"}}:::plan
+ PgSelectInlineApply83["PgSelectInlineApply[83∈0] ➊"]:::plan
+ Object10 & Constant87 & PgSelectInlineApply83 --> PgSelect7
Access8{{"Access[8∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access9{{"Access[9∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access8 & Access9 --> Object10
@@ -26,14 +27,18 @@ graph TD
PgSelectSingle13{{"PgSelectSingle[13∈0] ➊
ᐸpeopleᐳ"}}:::plan
First11 --> PgSelectSingle13
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- PgSelect16[["PgSelect[16∈1] ➊
ᐸperson_bookmarksᐳ"]]:::plan
+ List85{{"List[85∈1] ➊
ᐸ11,84ᐳ"}}:::plan
+ Access84{{"Access[84∈1] ➊
ᐸ7.m.subqueryDetailsFor16ᐳ"}}:::plan
+ First11 & Access84 --> List85
PgClassExpression14{{"PgClassExpression[14∈1] ➊
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object10 & PgClassExpression14 --> PgSelect16
PgSelectSingle13 --> PgClassExpression14
PgClassExpression15{{"PgClassExpression[15∈1] ➊
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle13 --> PgClassExpression15
PgSelectRows20[["PgSelectRows[20∈1] ➊"]]:::plan
- PgSelect16 --> PgSelectRows20
+ Lambda86{{"Lambda[86∈1] ➊"}}:::plan
+ Lambda86 --> PgSelectRows20
+ PgSelect7 --> Access84
+ List85 --> Lambda86
__Item21[/"__Item[21∈2]
ᐸ20ᐳ"\]:::itemplan
PgSelectRows20 ==> __Item21
PgSelectSingle22{{"PgSelectSingle[22∈2]
ᐸperson_bookmarksᐳ"}}:::plan
@@ -140,12 +145,12 @@ graph TD
%% define steps
subgraph "Buckets for queries/unions-table/bookmarks"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 8, 9, 83, 10
2: PgSelect[7]
3: PgSelectRows[12]
ᐳ: First[11], PgSelectSingle[13]"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[83]
ᐳ: 8, 9, 87, 10
2: PgSelect[7]
3: PgSelectRows[12]
ᐳ: First[11], PgSelectSingle[13]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,First11,PgSelectRows12,PgSelectSingle13,Constant83 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 10
ROOT PgSelectSingleᐸpeopleᐳ[13]
1:
ᐳ: 14, 15
2: PgSelect[16]
3: PgSelectRows[20]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,First11,PgSelectRows12,PgSelectSingle13,PgSelectInlineApply83,Constant87 bucket0
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 7, 11, 10
ROOT PgSelectSingleᐸpeopleᐳ[13]
1:
ᐳ: 14, 15, 84, 85, 86
2: PgSelectRows[20]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgClassExpression14,PgClassExpression15,PgSelect16,PgSelectRows20 bucket1
+ class Bucket1,PgClassExpression14,PgClassExpression15,PgSelectRows20,Access84,List85,Lambda86 bucket1
Bucket2("Bucket 2 (listItem)
Deps: 10
ROOT __Item{2}ᐸ20ᐳ[21]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item21,PgSelectSingle22 bucket2
diff --git a/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.sql b/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.sql
index da4b804c1..2107aac6c 100644
--- a/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.sql
+++ b/grafast/dataplan-pg/__tests__/queries/unions-table/bookmarks.deopt.sql
@@ -1,6 +1,24 @@
select
__people__."person_id"::text as "0",
- __people__."username" as "1"
+ __people__."username" as "1",
+ array(
+ select array[
+ __person_bookmarks__."id"::text,
+ __person_bookmarks__."person_id"::text,
+ __person_bookmarks__."bookmarked_entity"::text,
+ ((__person_bookmarks__."bookmarked_entity")."person_id")::text,
+ ((__person_bookmarks__."bookmarked_entity")."post_id")::text,
+ ((__person_bookmarks__."bookmarked_entity")."comment_id")::text
+ ]::text[]
+ from interfaces_and_unions.person_bookmarks as __person_bookmarks__
+ where
+ (
+ __person_bookmarks__."person_id" = __people__."person_id"
+ ) and (
+ true /* authorization checks */
+ )
+ order by __person_bookmarks__."id" asc
+ )::text as "2"
from interfaces_and_unions.people as __people__
where
(
@@ -9,22 +27,6 @@ where
true /* authorization checks */
);
-select
- __person_bookmarks__."id"::text as "0",
- __person_bookmarks__."person_id"::text as "1",
- __person_bookmarks__."bookmarked_entity"::text as "2",
- ((__person_bookmarks__."bookmarked_entity")."person_id")::text as "3",
- ((__person_bookmarks__."bookmarked_entity")."post_id")::text as "4",
- ((__person_bookmarks__."bookmarked_entity")."comment_id")::text as "5"
-from interfaces_and_unions.person_bookmarks as __person_bookmarks__
-where
- (
- __person_bookmarks__."person_id" = $1::"int4"
- ) and (
- true /* authorization checks */
- )
-order by __person_bookmarks__."id" asc;
-
select __people_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 __people_identifiers__,
lateral (
diff --git a/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.mermaid b/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.mermaid
index 145d62110..b6d383d66 100644
--- a/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.mermaid
+++ b/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.mermaid
@@ -10,30 +10,30 @@ graph TD
%% plan dependencies
__InputObject6{{"__InputObject[6∈0] ➊"}}:::plan
- Constant317{{"Constant[317∈0] ➊
ᐸ10ᐳ"}}:::plan
- Constant318{{"Constant[318∈0] ➊
ᐸ5ᐳ"}}:::plan
- Constant317 & Constant318 --> __InputObject6
+ Constant321{{"Constant[321∈0] ➊
ᐸ10ᐳ"}}:::plan
+ Constant322{{"Constant[322∈0] ➊
ᐸ5ᐳ"}}:::plan
+ Constant321 & Constant322 --> __InputObject6
__InputObject47{{"__InputObject[47∈0] ➊"}}:::plan
- Constant319{{"Constant[319∈0] ➊
ᐸ1ᐳ"}}:::plan
- Constant320{{"Constant[320∈0] ➊
ᐸ'test'ᐳ"}}:::plan
- Constant319 & Constant320 --> __InputObject47
+ Constant323{{"Constant[323∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant324{{"Constant[324∈0] ➊
ᐸ'test'ᐳ"}}:::plan
+ Constant323 & Constant324 --> __InputObject47
__InputObject102{{"__InputObject[102∈0] ➊"}}:::plan
- Constant319 & Constant320 --> __InputObject102
+ Constant323 & Constant324 --> __InputObject102
Object13{{"Object[13∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Access11{{"Access[11∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access12{{"Access[12∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access11 & Access12 --> Object13
PgFromExpression14{{"PgFromExpression[14∈0] ➊"}}:::plan
- Constant317 & Constant318 --> PgFromExpression14
+ Constant321 & Constant322 --> PgFromExpression14
__InputObject21{{"__InputObject[21∈0] ➊"}}:::plan
- Constant317 --> __InputObject21
+ Constant321 --> __InputObject21
__InputObject168{{"__InputObject[168∈0] ➊"}}:::plan
- Constant317 --> __InputObject168
+ Constant321 --> __InputObject168
__InputObject288{{"__InputObject[288∈0] ➊"}}:::plan
- Constant321{{"Constant[321∈0] ➊
ᐸ20ᐳ"}}:::plan
- Constant321 --> __InputObject288
+ Constant325{{"Constant[325∈0] ➊
ᐸ20ᐳ"}}:::plan
+ Constant325 --> __InputObject288
__InputObject303{{"__InputObject[303∈0] ➊"}}:::plan
- Constant321 --> __InputObject303
+ Constant325 --> __InputObject303
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access11
__Value2 --> Access12
@@ -102,7 +102,7 @@ graph TD
Access25 & Access26 --> Object27
__Value2 --> Access25
__Value2 --> Access26
- Constant317 --> PgFromExpression28
+ Constant321 --> PgFromExpression28
First29{{"First[29∈3] ➊"}}:::plan
PgSelectRows30[["PgSelectRows[30∈3] ➊"]]:::plan
PgSelectRows30 --> First29
@@ -138,7 +138,7 @@ graph TD
Access52{{"Access[52∈7] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access53{{"Access[53∈7] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access52 & Access53 --> Object54
- Constant319 & Constant320 --> PgFromExpression55
+ Constant323 & Constant324 --> PgFromExpression55
__Value2 --> Access52
__Value2 --> Access53
First56{{"First[56∈7] ➊"}}:::plan
@@ -150,12 +150,13 @@ graph TD
Object59{{"Object[59∈7] ➊
ᐸ{result}ᐳ"}}:::plan
PgSelectSingle58 --> Object59
Connection92{{"Connection[92∈8] ➊
ᐸ88ᐳ"}}:::plan
+ PgSelect75[["PgSelect[75∈9] ➊
ᐸpersonᐳ"]]:::plan
+ PgFromExpression77{{"PgFromExpression[77∈9] ➊"}}:::plan
+ PgSelectInlineApply317["PgSelectInlineApply[317∈9] ➊"]:::plan
+ Object54 & PgFromExpression77 & PgSelectInlineApply317 --> PgSelect75
PgSelect63[["PgSelect[63∈9] ➊
ᐸfrmcdc_compoundTypeᐳ"]]:::plan
PgFromExpression67{{"PgFromExpression[67∈9] ➊"}}:::plan
Object54 & PgFromExpression67 --> PgSelect63
- PgSelect75[["PgSelect[75∈9] ➊
ᐸpersonᐳ"]]:::plan
- PgFromExpression77{{"PgFromExpression[77∈9] ➊"}}:::plan
- Object54 & PgFromExpression77 --> PgSelect75
PgClassExpression61{{"PgClassExpression[61∈9] ➊
ᐸ__mutation...plex__.”x”ᐳ"}}:::plan
PgSelectSingle58 --> PgClassExpression61
PgClassExpression62{{"PgClassExpression[62∈9] ➊
ᐸ__mutation...plex__.”y”ᐳ"}}:::plan
@@ -182,18 +183,22 @@ graph TD
PgSelectSingle70 --> PgClassExpression72
PgClassExpression73{{"PgClassExpression[73∈10] ➊
ᐸ__frmcdc_c...type__.”c”ᐳ"}}:::plan
PgSelectSingle70 --> PgClassExpression73
- PgSelect94[["PgSelect[94∈11] ➊
ᐸpostᐳ"]]:::plan
- PgClassExpression82{{"PgClassExpression[82∈11] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
- Object54 & PgClassExpression82 & Connection92 --> PgSelect94
List83{{"List[83∈11] ➊
ᐸ81,82ᐳ"}}:::plan
+ PgClassExpression82{{"PgClassExpression[82∈11] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
Constant81 & PgClassExpression82 --> List83
+ List319{{"List[319∈11] ➊
ᐸ78,318ᐳ"}}:::plan
+ Access318{{"Access[318∈11] ➊
ᐸ75.m.subqueryDetailsFor94ᐳ"}}:::plan
+ First78 & Access318 --> List319
PgSelectSingle80 --> PgClassExpression82
Lambda84{{"Lambda[84∈11] ➊
ᐸbase64JSONEncodeᐳ"}}:::plan
List83 --> Lambda84
PgClassExpression85{{"PgClassExpression[85∈11] ➊
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle80 --> PgClassExpression85
PgSelectRows95[["PgSelectRows[95∈11] ➊"]]:::plan
- PgSelect94 --> PgSelectRows95
+ Lambda320{{"Lambda[320∈11] ➊"}}:::plan
+ Lambda320 --> PgSelectRows95
+ PgSelect75 --> Access318
+ List319 --> Lambda320
__Item96[/"__Item[96∈12]
ᐸ95ᐳ"\]:::itemplan
PgSelectRows95 ==> __Item96
PgSelectSingle97{{"PgSelectSingle[97∈12]
ᐸpostᐳ"}}:::plan
@@ -211,7 +216,7 @@ graph TD
Access106{{"Access[106∈14] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access107{{"Access[107∈14] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access106 & Access107 --> Object108
- Constant319 & Constant320 --> PgFromExpression109
+ Constant323 & Constant324 --> PgFromExpression109
__Value2 --> Access106
__Value2 --> Access107
Object110{{"Object[110∈14] ➊
ᐸ{result}ᐳ"}}:::plan
@@ -304,7 +309,7 @@ graph TD
Access172 & Access173 --> Object174
__Value2 --> Access172
__Value2 --> Access173
- Constant317 --> PgFromExpression175
+ Constant321 --> PgFromExpression175
First176{{"First[176∈25] ➊"}}:::plan
PgSelectRows177[["PgSelectRows[177∈25] ➊"]]:::plan
PgSelectRows177 --> First176
@@ -484,7 +489,7 @@ graph TD
Access292 & Access293 --> Object294
__Value2 --> Access292
__Value2 --> Access293
- Constant321 --> PgFromExpression295
+ Constant325 --> PgFromExpression295
Object296{{"Object[296∈51] ➊
ᐸ{result}ᐳ"}}:::plan
PgSelect291 --> Object296
PgSelectRows298[["PgSelectRows[298∈52] ➊"]]:::plan
@@ -506,7 +511,7 @@ graph TD
Access307 & Access308 --> Object309
__Value2 --> Access307
__Value2 --> Access308
- Constant321 --> PgFromExpression310
+ Constant325 --> PgFromExpression310
Object311{{"Object[311∈55] ➊
ᐸ{result}ᐳ"}}:::plan
PgSelect306 --> Object311
PgSelectRows313[["PgSelectRows[313∈56] ➊"]]:::plan
@@ -523,14 +528,14 @@ graph TD
subgraph "Buckets for mutations/v4/mutation-return-types"
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,__InputObject6,Access11,Access12,Object13,PgFromExpression14,ApplyInput20,__InputObject21,ApplyInput34,__InputObject35,ApplyInput46,__InputObject47,ApplyInput60,Constant81,Constant98,__InputObject102,ApplyInput111,__InputObject156,ApplyInput165,__InputObject168,ApplyInput180,__InputObject194,ApplyInput201,__InputObject207,ApplyInput217,__InputObject220,ApplyInput227,__InputObject232,ApplyInput242,__InputObject247,ApplyInput254,__InputObject262,ApplyInput273,__InputObject274,ApplyInput284,__InputObject288,ApplyInput297,__InputObject303,ApplyInput312,Constant317,Constant318,Constant319,Constant320,Constant321 bucket0
+ class Bucket0,__Value2,__Value4,__InputObject6,Access11,Access12,Object13,PgFromExpression14,ApplyInput20,__InputObject21,ApplyInput34,__InputObject35,ApplyInput46,__InputObject47,ApplyInput60,Constant81,Constant98,__InputObject102,ApplyInput111,__InputObject156,ApplyInput165,__InputObject168,ApplyInput180,__InputObject194,ApplyInput201,__InputObject207,ApplyInput217,__InputObject220,ApplyInput227,__InputObject232,ApplyInput242,__InputObject247,ApplyInput254,__InputObject262,ApplyInput273,__InputObject274,ApplyInput284,__InputObject288,ApplyInput297,__InputObject303,ApplyInput312,Constant321,Constant322,Constant323,Constant324,Constant325 bucket0
Bucket1("Bucket 1 (mutationField)
Deps: 13, 14, 20
1: PgSelect[10]
2: PgSelectRows[16]
ᐳ: 15, 17, 18, 19"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,PgSelect10,First15,PgSelectRows16,PgSelectSingle17,PgClassExpression18,Object19 bucket1
Bucket2("Bucket 2 (nullableBoundary)
Deps: 19, 18
ROOT Object{1}ᐸ{result}ᐳ[19]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2 bucket2
- Bucket3("Bucket 3 (mutationField)
Deps: 34, 2, 317
1: Access[25]
2: Access[26]
3: Object[27]
4: PgFromExpression[28]
5: PgSelect[24]
6: PgSelectRows[30]
ᐳ: 29, 31, 32, 33"):::bucket
+ Bucket3("Bucket 3 (mutationField)
Deps: 34, 2, 321
1: Access[25]
2: Access[26]
3: Object[27]
4: PgFromExpression[28]
5: PgSelect[24]
6: PgSelectRows[30]
ᐳ: 29, 31, 32, 33"):::bucket
classDef bucket3 stroke:#ffa500
class Bucket3,PgSelect24,Access25,Access26,Object27,PgFromExpression28,First29,PgSelectRows30,PgSelectSingle31,PgClassExpression32,Object33 bucket3
Bucket4("Bucket 4 (nullableBoundary)
Deps: 33, 32
ROOT Object{3}ᐸ{result}ᐳ[33]"):::bucket
@@ -542,28 +547,28 @@ graph TD
Bucket6("Bucket 6 (nullableBoundary)
Deps: 45, 44
ROOT Object{5}ᐸ{result}ᐳ[45]"):::bucket
classDef bucket6 stroke:#ff1493
class Bucket6 bucket6
- Bucket7("Bucket 7 (mutationField)
Deps: 60, 2, 319, 320, 7, 81, 98
1: Access[52]
2: Access[53]
3: Object[54]
4: PgFromExpression[55]
5: PgSelect[51]
6: PgSelectRows[57]
ᐳ: 56, 58, 59"):::bucket
+ Bucket7("Bucket 7 (mutationField)
Deps: 60, 2, 323, 324, 7, 81, 98
1: Access[52]
2: Access[53]
3: Object[54]
4: PgFromExpression[55]
5: PgSelect[51]
6: PgSelectRows[57]
ᐳ: 56, 58, 59"):::bucket
classDef bucket7 stroke:#808000
class Bucket7,PgSelect51,Access52,Access53,Object54,PgFromExpression55,First56,PgSelectRows57,PgSelectSingle58,Object59 bucket7
Bucket8("Bucket 8 (nullableBoundary)
Deps: 7, 59, 58, 54, 81, 98
ROOT Object{7}ᐸ{result}ᐳ[59]"):::bucket
classDef bucket8 stroke:#dda0dd
class Bucket8,Connection92 bucket8
- Bucket9("Bucket 9 (nullableBoundary)
Deps: 58, 54, 81, 92, 7, 98
ROOT PgSelectSingle{7}ᐸmutation_out_complexᐳ[58]
1:
ᐳ: 61, 62, 74, 67, 77
2: PgSelect[63], PgSelect[75]
3: PgSelectRows[69], PgSelectRows[79]
ᐳ: 68, 70, 78, 80"):::bucket
+ Bucket9("Bucket 9 (nullableBoundary)
Deps: 58, 54, 7, 81, 98, 92
ROOT PgSelectSingle{7}ᐸmutation_out_complexᐳ[58]
1: PgSelectInlineApply[317]
ᐳ: 61, 62, 74, 67, 77
2: PgSelect[63], PgSelect[75]
3: PgSelectRows[69], PgSelectRows[79]
ᐳ: 68, 70, 78, 80"):::bucket
classDef bucket9 stroke:#ff0000
- class Bucket9,PgClassExpression61,PgClassExpression62,PgSelect63,PgFromExpression67,First68,PgSelectRows69,PgSelectSingle70,PgClassExpression74,PgSelect75,PgFromExpression77,First78,PgSelectRows79,PgSelectSingle80 bucket9
+ class Bucket9,PgClassExpression61,PgClassExpression62,PgSelect63,PgFromExpression67,First68,PgSelectRows69,PgSelectSingle70,PgClassExpression74,PgSelect75,PgFromExpression77,First78,PgSelectRows79,PgSelectSingle80,PgSelectInlineApply317 bucket9
Bucket10("Bucket 10 (nullableBoundary)
Deps: 70
ROOT PgSelectSingle{9}ᐸfrmcdc_compoundTypeᐳ[70]"):::bucket
classDef bucket10 stroke:#ffff00
class Bucket10,PgClassExpression71,PgClassExpression72,PgClassExpression73 bucket10
- Bucket11("Bucket 11 (nullableBoundary)
Deps: 80, 81, 54, 92, 7, 98
ROOT PgSelectSingle{9}ᐸpersonᐳ[80]
1:
ᐳ: 82, 85, 83, 84
2: PgSelect[94]
3: PgSelectRows[95]"):::bucket
+ Bucket11("Bucket 11 (nullableBoundary)
Deps: 80, 81, 75, 78, 98, 92
ROOT PgSelectSingle{9}ᐸpersonᐳ[80]
1:
ᐳ: 82, 85, 318, 83, 84, 319, 320
2: PgSelectRows[95]"):::bucket
classDef bucket11 stroke:#00ffff
- class Bucket11,PgClassExpression82,List83,Lambda84,PgClassExpression85,PgSelect94,PgSelectRows95 bucket11
+ class Bucket11,PgClassExpression82,List83,Lambda84,PgClassExpression85,PgSelectRows95,Access318,List319,Lambda320 bucket11
Bucket12("Bucket 12 (listItem)
Deps: 98
ROOT __Item{12}ᐸ95ᐳ[96]"):::bucket
classDef bucket12 stroke:#4169e1
class Bucket12,__Item96,PgSelectSingle97 bucket12
Bucket13("Bucket 13 (nullableBoundary)
Deps: 97, 98
ROOT PgSelectSingle{12}ᐸpostᐳ[97]"):::bucket
classDef bucket13 stroke:#3cb371
class Bucket13,PgClassExpression99,List100,Lambda101 bucket13
- Bucket14("Bucket 14 (mutationField)
Deps: 111, 2, 319, 320, 7, 81, 98
1: Access[106]
2: Access[107]
3: Object[108]
4: PgFromExpression[109]
5: PgSelect[105]
6:
ᐳ: Object[110]"):::bucket
+ Bucket14("Bucket 14 (mutationField)
Deps: 111, 2, 323, 324, 7, 81, 98
1: Access[106]
2: Access[107]
3: Object[108]
4: PgFromExpression[109]
5: PgSelect[105]
6:
ᐳ: Object[110]"):::bucket
classDef bucket14 stroke:#a52a2a
class Bucket14,PgSelect105,Access106,Access107,Object108,PgFromExpression109,Object110 bucket14
Bucket15("Bucket 15 (nullableBoundary)
Deps: 105, 7, 110, 108, 81, 98
ROOT Object{14}ᐸ{result}ᐳ[110]"):::bucket
@@ -596,7 +601,7 @@ graph TD
Bucket24("Bucket 24 (nullableBoundary)
Deps: 163
ROOT PgSelectSingle{22}ᐸmutation_out_outᐳ[163]"):::bucket
classDef bucket24 stroke:#808000
class Bucket24,PgClassExpression166,PgClassExpression167 bucket24
- Bucket25("Bucket 25 (mutationField)
Deps: 180, 2, 317
1: Access[172]
2: Access[173]
3: Object[174]
4: PgFromExpression[175]
5: PgSelect[171]
6: PgSelectRows[177]
ᐳ: 176, 178, 179"):::bucket
+ Bucket25("Bucket 25 (mutationField)
Deps: 180, 2, 321
1: Access[172]
2: Access[173]
3: Object[174]
4: PgFromExpression[175]
5: PgSelect[171]
6: PgSelectRows[177]
ᐳ: 176, 178, 179"):::bucket
classDef bucket25 stroke:#dda0dd
class Bucket25,PgSelect171,Access172,Access173,Object174,PgFromExpression175,First176,PgSelectRows177,PgSelectSingle178,Object179 bucket25
Bucket26("Bucket 26 (nullableBoundary)
Deps: 179, 178, 174
ROOT Object{25}ᐸ{result}ᐳ[179]"):::bucket
@@ -674,7 +679,7 @@ graph TD
Bucket50("Bucket 50 (nullableBoundary)
Deps: 282
ROOT PgSelectSingle{48}ᐸmutation_out_unnamed_out_out_unnamedᐳ[282]"):::bucket
classDef bucket50 stroke:#f5deb3
class Bucket50,PgClassExpression285,PgClassExpression286,PgClassExpression287 bucket50
- Bucket51("Bucket 51 (mutationField)
Deps: 297, 2, 321
1: Access[292]
2: Access[293]
3: Object[294]
4: PgFromExpression[295]
5: PgSelect[291]
6:
ᐳ: Object[296]"):::bucket
+ Bucket51("Bucket 51 (mutationField)
Deps: 297, 2, 325
1: Access[292]
2: Access[293]
3: Object[294]
4: PgFromExpression[295]
5: PgSelect[291]
6:
ᐳ: Object[296]"):::bucket
classDef bucket51 stroke:#696969
class Bucket51,PgSelect291,Access292,Access293,Object294,PgFromExpression295,Object296 bucket51
Bucket52("Bucket 52 (nullableBoundary)
Deps: 291, 296
ROOT Object{51}ᐸ{result}ᐳ[296]"):::bucket
@@ -686,7 +691,7 @@ graph TD
Bucket54("Bucket 54 (nullableBoundary)
Deps: 300
ROOT PgSelectSingle{53}ᐸmutation_returns_table_multi_colᐳ[300]"):::bucket
classDef bucket54 stroke:#ffa500
class Bucket54,PgClassExpression301,PgClassExpression302 bucket54
- Bucket55("Bucket 55 (mutationField)
Deps: 312, 2, 321
1: Access[307]
2: Access[308]
3: Object[309]
4: PgFromExpression[310]
5: PgSelect[306]
6:
ᐳ: Object[311]"):::bucket
+ Bucket55("Bucket 55 (mutationField)
Deps: 312, 2, 325
1: Access[307]
2: Access[308]
3: Object[309]
4: PgFromExpression[310]
5: PgSelect[306]
6:
ᐳ: Object[311]"):::bucket
classDef bucket55 stroke:#0000ff
class Bucket55,PgSelect306,Access307,Access308,Object309,PgFromExpression310,Object311 bucket55
Bucket56("Bucket 56 (nullableBoundary)
Deps: 306, 311
ROOT Object{55}ᐸ{result}ᐳ[311]"):::bucket
diff --git a/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.sql b/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.sql
index 2440bb715..42dca0d66 100644
--- a/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.sql
+++ b/postgraphile/postgraphile/__tests__/mutations/v4/mutation-return-types.sql
@@ -32,17 +32,19 @@ from (select ($1::"c"."compound_type").*) as __frmcdc_compound_type__;
select
__person__."id"::text as "0",
- __person__."person_full_name" as "1"
+ __person__."person_full_name" as "1",
+ array(
+ select array[
+ __post__."id"::text
+ ]::text[]
+ from "a"."post" as __post__
+ where (
+ __post__."author_id" = __person__."id"
+ )
+ order by __post__."id" asc
+ )::text as "2"
from (select ($1::"c"."person").*) as __person__;
-select
- __post__."id"::text as "0"
-from "a"."post" as __post__
-where (
- __post__."author_id" = $1::"int4"
-)
-order by __post__."id" asc;
-
select
__mutation_out_complex_setof__."x"::text as "0",
case when (__mutation_out_complex_setof__."y") is not distinct from null then null::text else json_build_array((((__mutation_out_complex_setof__."y")."a"))::text, ((__mutation_out_complex_setof__."y")."b"), (((__mutation_out_complex_setof__."y")."c"))::text, ((__mutation_out_complex_setof__."y")."d"), (((__mutation_out_complex_setof__."y")."e"))::text, (((__mutation_out_complex_setof__."y")."f"))::text, to_char(((__mutation_out_complex_setof__."y")."g"), 'YYYY_MM_DD_HH24_MI_SS.US'::text), (((__mutation_out_complex_setof__."y")."foo_bar"))::text)::text end as "1",
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.mermaid b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.mermaid
index 635a2905f..3734d228c 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.mermaid
@@ -10,9 +10,9 @@ graph TD
%% plan dependencies
Connection14{{"Connection[14∈0] ➊
ᐸ10ᐳ"}}:::plan
- Constant35{{"Constant[35∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Constant39{{"Constant[39∈0] ➊
ᐸ2ᐳ"}}:::plan
Lambda15{{"Lambda[15∈0] ➊
ᐸparseCursorᐳ"}}:::plan
- Constant35 & Lambda15 --> Connection14
+ Constant39 & Lambda15 --> Connection14
Object13{{"Object[13∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Access11{{"Access[11∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access12{{"Access[12∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
@@ -20,12 +20,14 @@ graph TD
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access11
__Value2 --> Access12
- Constant36{{"Constant[36∈0] ➊
ᐸ'WyI5NjdkZTdmYTdlIiwzXQ=='ᐳ"}}:::plan
- Constant36 --> Lambda15
+ Constant40{{"Constant[40∈0] ➊
ᐸ'WyI5NjdkZTdmYTdlIiwzXQ=='ᐳ"}}:::plan
+ Constant40 --> Lambda15
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- Constant37{{"Constant[37∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant41{{"Constant[41∈0] ➊
ᐸ1ᐳ"}}:::plan
PgSelect17[["PgSelect[17∈1] ➊
ᐸpeopleᐳ"]]:::plan
- Object13 & Connection14 & Lambda15 & Constant35 --> PgSelect17
+ PgSelectInlineApply35["PgSelectInlineApply[35∈1] ➊"]:::plan
+ Object13 & Connection14 & Lambda15 & Constant39 & PgSelectInlineApply35 --> PgSelect17
+ Constant41 --> PgSelectInlineApply35
PgSelectRows18[["PgSelectRows[18∈1] ➊"]]:::plan
PgSelect17 --> PgSelectRows18
Access33{{"Access[33∈1] ➊
ᐸ17.cursorDetailsᐳ"}}:::plan
@@ -34,16 +36,20 @@ graph TD
PgSelectRows18 ==> __Item19
PgSelectSingle20{{"PgSelectSingle[20∈2]
ᐸpeopleᐳ"}}:::plan
__Item19 --> PgSelectSingle20
- PgSelect23[["PgSelect[23∈3]
ᐸlog_entriesᐳ"]]:::plan
- PgClassExpression22{{"PgClassExpression[22∈3]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object13 & PgClassExpression22 & Constant37 --> PgSelect23
PgCursor34{{"PgCursor[34∈3]"}}:::plan
PgSelectSingle20 & Access33 --> PgCursor34
+ List37{{"List[37∈3]
ᐸ19,36ᐳ"}}:::plan
+ Access36{{"Access[36∈3] ➊
ᐸ17.m.subqueryDetailsFor23ᐳ"}}:::plan
+ __Item19 & Access36 --> List37
+ PgClassExpression22{{"PgClassExpression[22∈3]
ᐸ__people__.”person_id”ᐳ"}}:::plan
PgSelectSingle20 --> PgClassExpression22
PgSelectRows27[["PgSelectRows[27∈3]"]]:::plan
- PgSelect23 --> PgSelectRows27
+ Lambda38{{"Lambda[38∈3]"}}:::plan
+ Lambda38 --> PgSelectRows27
PgClassExpression32{{"PgClassExpression[32∈3]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle20 --> PgClassExpression32
+ PgSelect17 --> Access36
+ List37 --> Lambda38
__Item28[/"__Item[28∈4]
ᐸ27ᐳ"\]:::itemplan
PgSelectRows27 ==> __Item28
PgSelectSingle29{{"PgSelectSingle[29∈4]
ᐸlog_entriesᐳ"}}:::plan
@@ -58,16 +64,16 @@ graph TD
subgraph "Buckets for queries/polymorphic/person-log-entries.after-caroline"
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Access11,Access12,Object13,Connection14,Lambda15,Constant35,Constant36,Constant37 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 14, 15, 35, 7, 37
ROOT Connectionᐸ10ᐳ[14]
1: PgSelect[17]
ᐳ: Access[33]
2: PgSelectRows[18]"):::bucket
+ class Bucket0,__Value2,__Value4,Access11,Access12,Object13,Connection14,Lambda15,Constant39,Constant40,Constant41 bucket0
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 14, 15, 39, 7, 41
ROOT Connectionᐸ10ᐳ[14]
1: PgSelectInlineApply[35]
2: PgSelect[17]
ᐳ: Access[33]
3: PgSelectRows[18]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgSelect17,PgSelectRows18,Access33 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 13, 37, 7, 33
ROOT __Item{2}ᐸ18ᐳ[19]"):::bucket
+ class Bucket1,PgSelect17,PgSelectRows18,Access33,PgSelectInlineApply35 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 33, 17
ROOT __Item{2}ᐸ18ᐳ[19]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item19,PgSelectSingle20 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 20, 13, 37, 7, 33
ROOT PgSelectSingle{2}ᐸpeopleᐳ[20]
1:
ᐳ: 22, 32, 34
2: PgSelect[23]
3: PgSelectRows[27]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 20, 33, 17, 19
ROOT PgSelectSingle{2}ᐸpeopleᐳ[20]
1:
ᐳ: 22, 32, 34, 36, 37, 38
2: PgSelectRows[27]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression22,PgSelect23,PgSelectRows27,PgClassExpression32,PgCursor34 bucket3
+ class Bucket3,PgClassExpression22,PgSelectRows27,PgClassExpression32,PgCursor34,Access36,List37,Lambda38 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ27ᐳ[28]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item28,PgSelectSingle29,PgClassExpression30,PgClassExpression31 bucket4
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.sql b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.sql
index 599fa6304..eab2cdcd8 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.sql
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.after-caroline.sql
@@ -1,24 +1,21 @@
select
__people__."person_id"::text as "0",
- __people__."username" as "1"
+ __people__."username" as "1",
+ array(
+ select array[
+ __log_entries__."text",
+ __log_entries__."id"::text
+ ]::text[]
+ from "polymorphic"."log_entries" as __log_entries__
+ where (
+ __log_entries__."person_id" = __people__."person_id"
+ )
+ order by __log_entries__."id" asc
+ limit 1
+ )::text as "2"
from "polymorphic"."people" as __people__
where (
__people__."person_id" > $1::"int4"
)
order by __people__."person_id" asc
-limit 2;
-
-select __log_entries_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 __log_entries_identifiers__,
-lateral (
- select
- __log_entries__."text" as "0",
- __log_entries__."id"::text as "1",
- __log_entries_identifiers__.idx as "2"
- from "polymorphic"."log_entries" as __log_entries__
- where (
- __log_entries__."person_id" = __log_entries_identifiers__."id0"
- )
- order by __log_entries__."id" asc
- limit 1
-) as __log_entries_result__;
\ No newline at end of file
+limit 2;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.mermaid b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.mermaid
index 352439a06..2a58f1f23 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.mermaid
@@ -11,8 +11,8 @@ graph TD
%% plan dependencies
Connection14{{"Connection[14∈0] ➊
ᐸ10ᐳ"}}:::plan
__InputObject8{{"__InputObject[8∈0] ➊"}}:::plan
- Constant34{{"Constant[34∈0] ➊
ᐸ'Dave'ᐳ"}}:::plan
- Constant34 --> __InputObject8
+ Constant38{{"Constant[38∈0] ➊
ᐸ'Dave'ᐳ"}}:::plan
+ Constant38 --> __InputObject8
Object13{{"Object[13∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Access11{{"Access[11∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access12{{"Access[12∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
@@ -24,21 +24,26 @@ graph TD
__InputObject8 --> ApplyInput16
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
PgSelect17[["PgSelect[17∈1] ➊
ᐸpeopleᐳ"]]:::plan
- Object13 & ApplyInput16 & Connection14 --> PgSelect17
+ PgSelectInlineApply34["PgSelectInlineApply[34∈1] ➊"]:::plan
+ Object13 & ApplyInput16 & Connection14 & PgSelectInlineApply34 --> PgSelect17
PgSelectRows18[["PgSelectRows[18∈1] ➊"]]:::plan
PgSelect17 --> PgSelectRows18
__Item19[/"__Item[19∈2]
ᐸ18ᐳ"\]:::itemplan
PgSelectRows18 ==> __Item19
PgSelectSingle20{{"PgSelectSingle[20∈2]
ᐸpeopleᐳ"}}:::plan
__Item19 --> PgSelectSingle20
- PgSelect23[["PgSelect[23∈3]
ᐸlog_entriesᐳ"]]:::plan
+ List36{{"List[36∈3]
ᐸ19,35ᐳ"}}:::plan
+ Access35{{"Access[35∈3] ➊
ᐸ17.m.subqueryDetailsFor23ᐳ"}}:::plan
+ __Item19 & Access35 --> List36
PgClassExpression22{{"PgClassExpression[22∈3]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object13 & PgClassExpression22 --> PgSelect23
PgSelectSingle20 --> PgClassExpression22
PgSelectRows28[["PgSelectRows[28∈3]"]]:::plan
- PgSelect23 --> PgSelectRows28
+ Lambda37{{"Lambda[37∈3]"}}:::plan
+ Lambda37 --> PgSelectRows28
PgClassExpression33{{"PgClassExpression[33∈3]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle20 --> PgClassExpression33
+ PgSelect17 --> Access35
+ List36 --> Lambda37
__Item29[/"__Item[29∈4]
ᐸ28ᐳ"\]:::itemplan
PgSelectRows28 ==> __Item29
PgSelectSingle30{{"PgSelectSingle[30∈4]
ᐸlog_entriesᐳ"}}:::plan
@@ -53,16 +58,16 @@ graph TD
subgraph "Buckets for queries/polymorphic/person-log-entries.condition"
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,__InputObject8,Access11,Access12,Object13,Connection14,ApplyInput16,Constant34 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 16, 14, 6
ROOT Connectionᐸ10ᐳ[14]
1: PgSelect[17]
2: PgSelectRows[18]"):::bucket
+ class Bucket0,__Value2,__Value4,__InputObject8,Access11,Access12,Object13,Connection14,ApplyInput16,Constant38 bucket0
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 16, 14, 6
ROOT Connectionᐸ10ᐳ[14]
1: PgSelectInlineApply[34]
2: PgSelect[17]
3: PgSelectRows[18]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgSelect17,PgSelectRows18 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 13, 6
ROOT __Item{2}ᐸ18ᐳ[19]"):::bucket
+ class Bucket1,PgSelect17,PgSelectRows18,PgSelectInlineApply34 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 17
ROOT __Item{2}ᐸ18ᐳ[19]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item19,PgSelectSingle20 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 20, 13, 6
ROOT PgSelectSingle{2}ᐸpeopleᐳ[20]
1:
ᐳ: 22, 33
2: PgSelect[23]
3: PgSelectRows[28]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 20, 17, 19
ROOT PgSelectSingle{2}ᐸpeopleᐳ[20]
1:
ᐳ: 22, 33, 35, 36, 37
2: PgSelectRows[28]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression22,PgSelect23,PgSelectRows28,PgClassExpression33 bucket3
+ class Bucket3,PgClassExpression22,PgSelectRows28,PgClassExpression33,Access35,List36,Lambda37 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ28ᐳ[29]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item29,PgSelectSingle30,PgClassExpression31,PgClassExpression32 bucket4
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.sql b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.sql
index 43923197a..3368f1484 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.sql
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.condition.sql
@@ -1,17 +1,19 @@
select
__people__."person_id"::text as "0",
- __people__."username" as "1"
+ __people__."username" as "1",
+ array(
+ select array[
+ __log_entries__."text",
+ __log_entries__."id"::text
+ ]::text[]
+ from "polymorphic"."log_entries" as __log_entries__
+ where (
+ __log_entries__."person_id" = __people__."person_id"
+ )
+ order by __log_entries__."text" desc, __log_entries__."id" asc
+ )::text as "2"
from "polymorphic"."people" as __people__
where (
__people__."username" = $1::"text"
)
-order by __people__."person_id" asc;
-
-select
- __log_entries__."text" as "0",
- __log_entries__."id"::text as "1"
-from "polymorphic"."log_entries" as __log_entries__
-where (
- __log_entries__."person_id" = $1::"int4"
-)
-order by __log_entries__."text" desc, __log_entries__."id" asc;
\ No newline at end of file
+order by __people__."person_id" asc;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.mermaid b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.mermaid
index 8a5219e5c..2108927ff 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.mermaid
@@ -10,8 +10,8 @@ graph TD
%% plan dependencies
Connection13{{"Connection[13∈0] ➊
ᐸ9ᐳ"}}:::plan
- Constant33{{"Constant[33∈0] ➊
ᐸ5ᐳ"}}:::plan
- Constant33 --> Connection13
+ Constant37{{"Constant[37∈0] ➊
ᐸ5ᐳ"}}:::plan
+ Constant37 --> Connection13
Object12{{"Object[12∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access11{{"Access[11∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
@@ -20,23 +20,29 @@ graph TD
__Value2 --> Access10
__Value2 --> Access11
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- Constant34{{"Constant[34∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant38{{"Constant[38∈0] ➊
ᐸ1ᐳ"}}:::plan
PgSelect15[["PgSelect[15∈1] ➊
ᐸpeopleᐳ"]]:::plan
- Object12 & Connection13 & Constant33 --> PgSelect15
+ PgSelectInlineApply33["PgSelectInlineApply[33∈1] ➊"]:::plan
+ Object12 & Connection13 & Constant37 & PgSelectInlineApply33 --> PgSelect15
+ Constant38 --> PgSelectInlineApply33
PgSelectRows16[["PgSelectRows[16∈1] ➊"]]:::plan
PgSelect15 --> PgSelectRows16
__Item17[/"__Item[17∈2]
ᐸ16ᐳ"\]:::itemplan
PgSelectRows16 ==> __Item17
PgSelectSingle18{{"PgSelectSingle[18∈2]
ᐸpeopleᐳ"}}:::plan
__Item17 --> PgSelectSingle18
- PgSelect22[["PgSelect[22∈3]
ᐸlog_entriesᐳ"]]:::plan
+ List35{{"List[35∈3]
ᐸ17,34ᐳ"}}:::plan
+ Access34{{"Access[34∈3] ➊
ᐸ15.m.subqueryDetailsFor22ᐳ"}}:::plan
+ __Item17 & Access34 --> List35
PgClassExpression21{{"PgClassExpression[21∈3]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object12 & PgClassExpression21 & Constant34 --> PgSelect22
PgSelectSingle18 --> PgClassExpression21
PgSelectRows27[["PgSelectRows[27∈3]"]]:::plan
- PgSelect22 --> PgSelectRows27
+ Lambda36{{"Lambda[36∈3]"}}:::plan
+ Lambda36 --> PgSelectRows27
PgClassExpression32{{"PgClassExpression[32∈3]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle18 --> PgClassExpression32
+ PgSelect15 --> Access34
+ List35 --> Lambda36
__Item28[/"__Item[28∈4]
ᐸ27ᐳ"\]:::itemplan
PgSelectRows27 ==> __Item28
PgSelectSingle29{{"PgSelectSingle[29∈4]
ᐸlog_entriesᐳ"}}:::plan
@@ -51,16 +57,16 @@ graph TD
subgraph "Buckets for queries/polymorphic/person-log-entries.last-ordered"
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Access10,Access11,Object12,Connection13,Constant33,Constant34 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 12, 13, 6, 33, 34
ROOT Connectionᐸ9ᐳ[13]
1: PgSelect[15]
2: PgSelectRows[16]"):::bucket
+ class Bucket0,__Value2,__Value4,Access10,Access11,Object12,Connection13,Constant37,Constant38 bucket0
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 12, 13, 6, 37, 38
ROOT Connectionᐸ9ᐳ[13]
1: PgSelectInlineApply[33]
2: PgSelect[15]
3: PgSelectRows[16]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgSelect15,PgSelectRows16 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 12, 34, 6
ROOT __Item{2}ᐸ16ᐳ[17]"):::bucket
+ class Bucket1,PgSelect15,PgSelectRows16,PgSelectInlineApply33 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 15
ROOT __Item{2}ᐸ16ᐳ[17]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item17,PgSelectSingle18 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 18, 12, 34, 6
ROOT PgSelectSingle{2}ᐸpeopleᐳ[18]
1:
ᐳ: 21, 32
2: PgSelect[22]
3: PgSelectRows[27]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 18, 15, 17
ROOT PgSelectSingle{2}ᐸpeopleᐳ[18]
1:
ᐳ: 21, 32, 34, 35, 36
2: PgSelectRows[27]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression21,PgSelect22,PgSelectRows27,PgClassExpression32 bucket3
+ class Bucket3,PgClassExpression21,PgSelectRows27,PgClassExpression32,Access34,List35,Lambda36 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ27ᐳ[28]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item28,PgSelectSingle29,PgClassExpression30,PgClassExpression31 bucket4
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.sql b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.sql
index 15be56428..325fba0f1 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.sql
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.last-ordered.sql
@@ -1,21 +1,18 @@
select
__people__."person_id"::text as "0",
- __people__."username" as "1"
+ __people__."username" as "1",
+ array(
+ select array[
+ __log_entries__."text",
+ __log_entries__."id"::text
+ ]::text[]
+ from "polymorphic"."log_entries" as __log_entries__
+ where (
+ __log_entries__."person_id" = __people__."person_id"
+ )
+ order by __log_entries__."text" desc, __log_entries__."id" asc
+ limit 1
+ )::text as "2"
from "polymorphic"."people" as __people__
order by __people__."person_id" desc
-limit 5;
-
-select __log_entries_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 __log_entries_identifiers__,
-lateral (
- select
- __log_entries__."text" as "0",
- __log_entries__."id"::text as "1",
- __log_entries_identifiers__.idx as "2"
- from "polymorphic"."log_entries" as __log_entries__
- where (
- __log_entries__."person_id" = __log_entries_identifiers__."id0"
- )
- order by __log_entries__."text" desc, __log_entries__."id" asc
- limit 1
-) as __log_entries_result__;
\ No newline at end of file
+limit 5;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.mermaid b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.mermaid
index 6d5a8a76a..e4bb335d0 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.mermaid
@@ -19,7 +19,8 @@ graph TD
__Value2 --> Access10
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
PgSelect14[["PgSelect[14∈1] ➊
ᐸpeopleᐳ"]]:::plan
- Object11 & Connection12 --> PgSelect14
+ PgSelectInlineApply31["PgSelectInlineApply[31∈1] ➊"]:::plan
+ Object11 & Connection12 & PgSelectInlineApply31 --> PgSelect14
PgSelectRows15[["PgSelectRows[15∈1] ➊"]]:::plan
PgSelect14 --> PgSelectRows15
Access29{{"Access[29∈1] ➊
ᐸ14.cursorDetailsᐳ"}}:::plan
@@ -28,16 +29,20 @@ graph TD
PgSelectRows15 ==> __Item16
PgSelectSingle17{{"PgSelectSingle[17∈2]
ᐸpeopleᐳ"}}:::plan
__Item16 --> PgSelectSingle17
- PgSelect19[["PgSelect[19∈3]
ᐸlog_entriesᐳ"]]:::plan
- PgClassExpression18{{"PgClassExpression[18∈3]
ᐸ__people__.”person_id”ᐳ"}}:::plan
- Object11 & PgClassExpression18 --> PgSelect19
PgCursor30{{"PgCursor[30∈3]"}}:::plan
PgSelectSingle17 & Access29 --> PgCursor30
+ List33{{"List[33∈3]
ᐸ16,32ᐳ"}}:::plan
+ Access32{{"Access[32∈3] ➊
ᐸ14.m.subqueryDetailsFor19ᐳ"}}:::plan
+ __Item16 & Access32 --> List33
+ PgClassExpression18{{"PgClassExpression[18∈3]
ᐸ__people__.”person_id”ᐳ"}}:::plan
PgSelectSingle17 --> PgClassExpression18
PgSelectRows23[["PgSelectRows[23∈3]"]]:::plan
- PgSelect19 --> PgSelectRows23
+ Lambda34{{"Lambda[34∈3]"}}:::plan
+ Lambda34 --> PgSelectRows23
PgClassExpression28{{"PgClassExpression[28∈3]
ᐸ__people__.”username”ᐳ"}}:::plan
PgSelectSingle17 --> PgClassExpression28
+ PgSelect14 --> Access32
+ List33 --> Lambda34
__Item24[/"__Item[24∈4]
ᐸ23ᐳ"\]:::itemplan
PgSelectRows23 ==> __Item24
PgSelectSingle25{{"PgSelectSingle[25∈4]
ᐸlog_entriesᐳ"}}:::plan
@@ -53,15 +58,15 @@ graph TD
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
class Bucket0,__Value2,__Value4,Access9,Access10,Object11,Connection12 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 11, 12, 6
ROOT Connectionᐸ8ᐳ[12]
1: PgSelect[14]
ᐳ: Access[29]
2: PgSelectRows[15]"):::bucket
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 11, 12, 6
ROOT Connectionᐸ8ᐳ[12]
1: PgSelectInlineApply[31]
2: PgSelect[14]
ᐳ: Access[29]
3: PgSelectRows[15]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgSelect14,PgSelectRows15,Access29 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 11, 6, 29
ROOT __Item{2}ᐸ15ᐳ[16]"):::bucket
+ class Bucket1,PgSelect14,PgSelectRows15,Access29,PgSelectInlineApply31 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 29, 14
ROOT __Item{2}ᐸ15ᐳ[16]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item16,PgSelectSingle17 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 17, 11, 6, 29
ROOT PgSelectSingle{2}ᐸpeopleᐳ[17]
1:
ᐳ: 18, 28, 30
2: PgSelect[19]
3: PgSelectRows[23]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 17, 29, 14, 16
ROOT PgSelectSingle{2}ᐸpeopleᐳ[17]
1:
ᐳ: 18, 28, 30, 32, 33, 34
2: PgSelectRows[23]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression18,PgSelect19,PgSelectRows23,PgClassExpression28,PgCursor30 bucket3
+ class Bucket3,PgClassExpression18,PgSelectRows23,PgClassExpression28,PgCursor30,Access32,List33,Lambda34 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ23ᐳ[24]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item24,PgSelectSingle25,PgClassExpression26,PgClassExpression27 bucket4
diff --git a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.sql b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.sql
index 7d38d39f5..767869186 100644
--- a/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.sql
+++ b/postgraphile/postgraphile/__tests__/queries/polymorphic/person-log-entries.sql
@@ -1,19 +1,16 @@
select
__people__."person_id"::text as "0",
- __people__."username" as "1"
+ __people__."username" as "1",
+ array(
+ select array[
+ __log_entries__."text",
+ __log_entries__."id"::text
+ ]::text[]
+ from "polymorphic"."log_entries" as __log_entries__
+ where (
+ __log_entries__."person_id" = __people__."person_id"
+ )
+ order by __log_entries__."id" asc
+ )::text as "2"
from "polymorphic"."people" as __people__
-order by __people__."person_id" asc;
-
-select __log_entries_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 __log_entries_identifiers__,
-lateral (
- select
- __log_entries__."text" as "0",
- __log_entries__."id"::text as "1",
- __log_entries_identifiers__.idx as "2"
- from "polymorphic"."log_entries" as __log_entries__
- where (
- __log_entries__."person_id" = __log_entries_identifiers__."id0"
- )
- order by __log_entries__."id" asc
-) as __log_entries_result__;
\ No newline at end of file
+order by __people__."person_id" asc;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/arrays.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/arrays.mermaid
index 4cfe4b683..3ef401661 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/arrays.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/arrays.mermaid
@@ -11,7 +11,11 @@ graph TD
%% plan dependencies
PgSelect7[["PgSelect[7∈0] ➊
ᐸlistsᐳ"]]:::plan
Object10{{"Object[10∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Object10 --> PgSelect7
+ PgFromExpression36{{"PgFromExpression[36∈0] ➊"}}:::plan
+ PgSelectInlineApply65["PgSelectInlineApply[65∈0] ➊"]:::plan
+ PgFromExpression50{{"PgFromExpression[50∈0] ➊"}}:::plan
+ PgSelectInlineApply69["PgSelectInlineApply[69∈0] ➊"]:::plan
+ Object10 & PgFromExpression36 & PgSelectInlineApply65 & PgFromExpression50 & PgSelectInlineApply69 --> PgSelect7
Access8{{"Access[8∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access9{{"Access[9∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access8 & Access9 --> Object10
@@ -21,15 +25,13 @@ graph TD
PgSelectRows11[["PgSelectRows[11∈0] ➊"]]:::plan
PgSelect7 --> PgSelectRows11
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- PgFromExpression36{{"PgFromExpression[36∈0] ➊"}}:::plan
- PgFromExpression50{{"PgFromExpression[50∈0] ➊"}}:::plan
- PgSelect32[["PgSelect[32∈1]
ᐸfrmcdc_compoundTypeᐳ"]]:::plan
- PgClassExpression31{{"PgClassExpression[31∈1]
ᐸ__lists__....ype_array”ᐳ"}}:::plan
- Object10 & PgClassExpression31 & PgFromExpression36 --> PgSelect32
- PgSelect48[["PgSelect[48∈1]
ᐸfrmcdc_compoundTypeᐳ"]]:::plan
- PgClassExpression47{{"PgClassExpression[47∈1]
ᐸ__lists__...._array_nn”ᐳ"}}:::plan
- Object10 & PgClassExpression47 & PgFromExpression50 --> PgSelect48
+ List67{{"List[67∈1]
ᐸ12,66ᐳ"}}:::plan
__Item12[/"__Item[12∈1]
ᐸ11ᐳ"\]:::itemplan
+ Access66{{"Access[66∈1] ➊
ᐸ7.m.subqueryDetailsFor32ᐳ"}}:::plan
+ __Item12 & Access66 --> List67
+ List71{{"List[71∈1]
ᐸ12,70ᐳ"}}:::plan
+ Access70{{"Access[70∈1] ➊
ᐸ7.m.subqueryDetailsFor48ᐳ"}}:::plan
+ __Item12 & Access70 --> List71
PgSelectRows11 ==> __Item12
PgSelectSingle13{{"PgSelectSingle[13∈1]
ᐸlistsᐳ"}}:::plan
__Item12 --> PgSelectSingle13
@@ -51,16 +53,20 @@ graph TD
PgSelectSingle13 --> PgClassExpression27
PgClassExpression29{{"PgClassExpression[29∈1]
ᐸ__lists__...._array_nn”ᐳ"}}:::plan
PgSelectSingle13 --> PgClassExpression29
- PgSelectSingle13 --> PgClassExpression31
PgSelectRows37[["PgSelectRows[37∈1]"]]:::plan
- PgSelect32 --> PgSelectRows37
- PgSelectSingle13 --> PgClassExpression47
+ Lambda68{{"Lambda[68∈1]"}}:::plan
+ Lambda68 --> PgSelectRows37
PgSelectRows51[["PgSelectRows[51∈1]"]]:::plan
- PgSelect48 --> PgSelectRows51
+ Lambda72{{"Lambda[72∈1]"}}:::plan
+ Lambda72 --> PgSelectRows51
PgClassExpression61{{"PgClassExpression[61∈1]
ᐸ__lists__.”bytea_array”ᐳ"}}:::plan
PgSelectSingle13 --> PgClassExpression61
PgClassExpression63{{"PgClassExpression[63∈1]
ᐸ__lists__...._array_nn”ᐳ"}}:::plan
PgSelectSingle13 --> PgClassExpression63
+ PgSelect7 --> Access66
+ List67 --> Lambda68
+ PgSelect7 --> Access70
+ List71 --> Lambda72
__Item16[/"__Item[16∈2]
ᐸ15ᐳ"\]:::itemplan
PgClassExpression15 ==> __Item16
__Item18[/"__Item[18∈3]
ᐸ17ᐳ"\]:::itemplan
@@ -121,12 +127,12 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/arrays"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 8, 9, 36, 50, 10
2: PgSelect[7]
3: PgSelectRows[11]"):::bucket
+ Bucket0("Bucket 0 (root)
1: 65, 69
ᐳ: 6, 8, 9, 36, 50, 10
2: PgSelect[7]
3: PgSelectRows[11]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,PgSelectRows11,PgFromExpression36,PgFromExpression50 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 10, 36, 50
ROOT __Item{1}ᐸ11ᐳ[12]
1:
ᐳ: 13, 14, 15, 17, 19, 21, 23, 25, 27, 29, 31, 47, 61, 63
2: PgSelect[32], PgSelect[48]
3: PgSelectRows[37], PgSelectRows[51]"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,PgSelectRows11,PgFromExpression36,PgFromExpression50,PgSelectInlineApply65,PgSelectInlineApply69 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 7
ROOT __Item{1}ᐸ11ᐳ[12]
1:
ᐳ: 13, 66, 70, 14, 15, 17, 19, 21, 23, 25, 27, 29, 61, 63, 67, 68, 71, 72
2: PgSelectRows[37], PgSelectRows[51]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,__Item12,PgSelectSingle13,PgClassExpression14,PgClassExpression15,PgClassExpression17,PgClassExpression19,PgClassExpression21,PgClassExpression23,PgClassExpression25,PgClassExpression27,PgClassExpression29,PgClassExpression31,PgSelect32,PgSelectRows37,PgClassExpression47,PgSelect48,PgSelectRows51,PgClassExpression61,PgClassExpression63 bucket1
+ class Bucket1,__Item12,PgSelectSingle13,PgClassExpression14,PgClassExpression15,PgClassExpression17,PgClassExpression19,PgClassExpression21,PgClassExpression23,PgClassExpression25,PgClassExpression27,PgClassExpression29,PgSelectRows37,PgSelectRows51,PgClassExpression61,PgClassExpression63,Access66,List67,Lambda68,Access70,List71,Lambda72 bucket1
Bucket2("Bucket 2 (listItem)
ROOT __Item{2}ᐸ15ᐳ[16]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item16 bucket2
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/arrays.sql b/postgraphile/postgraphile/__tests__/queries/v4/arrays.sql
index e5ef379cc..7703325ee 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/arrays.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/arrays.sql
@@ -20,31 +20,33 @@ select
select to_char(__entry_4, 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text)
from unnest(__lists__."timestamptz_array_nn") __entry_4
)::text as "8",
- (case when (__lists__."compound_type_array") is not distinct from null then null::text else array(
- select case when (__compound_type__) is not distinct from null then null::text else json_build_array((((__compound_type__)."a"))::text, ((__compound_type__)."b"), (((__compound_type__)."c"))::text, ((__compound_type__)."d"), (((__compound_type__)."e"))::text, (((__compound_type__)."f"))::text, to_char(((__compound_type__)."g"), 'YYYY_MM_DD_HH24_MI_SS.US'::text), (((__compound_type__)."foo_bar"))::text)::text end
- from unnest(__lists__."compound_type_array") __compound_type__
- )::text end) as "9",
+ __lists__."bytea_array"::text as "9",
+ __lists__."bytea_array_nn"::text as "10",
array(
- select case when (__compound_type_2) is not distinct from null then null::text else json_build_array((((__compound_type_2)."a"))::text, ((__compound_type_2)."b"), (((__compound_type_2)."c"))::text, ((__compound_type_2)."d"), (((__compound_type_2)."e"))::text, (((__compound_type_2)."f"))::text, to_char(((__compound_type_2)."g"), 'YYYY_MM_DD_HH24_MI_SS.US'::text), (((__compound_type_2)."foo_bar"))::text)::text end
- from unnest(__lists__."compound_type_array_nn") __compound_type_2
- )::text as "10",
- __lists__."bytea_array"::text as "11",
- __lists__."bytea_array_nn"::text as "12"
+ select array[
+ __frmcdc_compound_type__."a"::text,
+ __frmcdc_compound_type__."b",
+ __frmcdc_compound_type__."c"::text,
+ __frmcdc_compound_type__."d",
+ __frmcdc_compound_type__."e"::text,
+ __frmcdc_compound_type__."f"::text,
+ __frmcdc_compound_type__."foo_bar"::text,
+ (not (__frmcdc_compound_type__ is null))::text
+ ]::text[]
+ from unnest(__lists__."compound_type_array") as __frmcdc_compound_type__
+ )::text as "11",
+ array(
+ select array[
+ __frmcdc_compound_type_2."a"::text,
+ __frmcdc_compound_type_2."b",
+ __frmcdc_compound_type_2."c"::text,
+ __frmcdc_compound_type_2."d",
+ __frmcdc_compound_type_2."e"::text,
+ __frmcdc_compound_type_2."f"::text,
+ __frmcdc_compound_type_2."foo_bar"::text,
+ (not (__frmcdc_compound_type_2 is null))::text
+ ]::text[]
+ from unnest(__lists__."compound_type_array_nn") as __frmcdc_compound_type_2
+ )::text as "12"
from "b"."lists" as __lists__
-order by __lists__."id" asc;
-
-select __frmcdc_compound_type_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"c"."compound_type"[] as "id0" from json_array_elements($1::json) with ordinality as ids) as __frmcdc_compound_type_identifiers__,
-lateral (
- select
- __frmcdc_compound_type__."a"::text as "0",
- __frmcdc_compound_type__."b" as "1",
- __frmcdc_compound_type__."c"::text as "2",
- __frmcdc_compound_type__."d" as "3",
- __frmcdc_compound_type__."e"::text as "4",
- __frmcdc_compound_type__."f"::text as "5",
- __frmcdc_compound_type__."foo_bar"::text as "6",
- (not (__frmcdc_compound_type__ is null))::text as "7",
- __frmcdc_compound_type_identifiers__.idx as "8"
- from unnest(__frmcdc_compound_type_identifiers__."id0") as __frmcdc_compound_type__
-) as __frmcdc_compound_type_result__;
\ No newline at end of file
+order by __lists__."id" asc;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.mermaid
index eeff9025d..396325569 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.mermaid
@@ -26,19 +26,20 @@ graph TD
Constant69{{"Constant[69∈0] ➊
ᐸfalseᐳ"}}:::plan
PgSelect14[["PgSelect[14∈1] ➊
ᐸpostsᐳ"]]:::plan
PgSelectInlineApply67["PgSelectInlineApply[67∈1] ➊"]:::plan
- Object11 & Connection12 & PgFromExpression25 & PgSelectInlineApply67 --> PgSelect14
+ PgSelectInlineApply73["PgSelectInlineApply[73∈1] ➊"]:::plan
+ Object11 & Connection12 & PgFromExpression25 & PgSelectInlineApply67 & PgFromExpression47 & PgSelectInlineApply73 --> PgSelect14
PgSelectRows15[["PgSelectRows[15∈1] ➊"]]:::plan
PgSelect14 --> PgSelectRows15
__Item16[/"__Item[16∈2]
ᐸ15ᐳ"\]:::itemplan
PgSelectRows15 ==> __Item16
PgSelectSingle17{{"PgSelectSingle[17∈2]
ᐸpostsᐳ"}}:::plan
__Item16 --> PgSelectSingle17
- PgSelect45[["PgSelect[45∈3]
ᐸfrmcdc_userUpdateContentᐳ"]]:::plan
- PgClassExpression44{{"PgClassExpression[44∈3]
ᐸ__posts__....d_content”ᐳ"}}:::plan
- Object11 & PgClassExpression44 & PgFromExpression47 --> PgSelect45
Object72{{"Object[72∈3]
ᐸ{m,hasMore,items}ᐳ"}}:::plan
List71{{"List[71∈3]
ᐸ70ᐳ"}}:::plan
Constant68 & Constant69 & List71 --> Object72
+ List75{{"List[75∈3]
ᐸ16,74ᐳ"}}:::plan
+ Access74{{"Access[74∈3] ➊
ᐸ14.m.subqueryDetailsFor45ᐳ"}}:::plan
+ __Item16 & Access74 --> List75
PgClassExpression18{{"PgClassExpression[18∈3]
ᐸ__posts__.”id”ᐳ"}}:::plan
PgSelectSingle17 --> PgClassExpression18
PgClassExpression19{{"PgClassExpression[19∈3]
ᐸ__posts__.”user_id”ᐳ"}}:::plan
@@ -53,14 +54,16 @@ graph TD
PgSelectSingle28 --> PgClassExpression29
PgClassExpression30{{"PgClassExpression[30∈3]
ᐸ__frmcdc_u...__.”lines”ᐳ"}}:::plan
PgSelectSingle28 --> PgClassExpression30
- PgSelectSingle17 --> PgClassExpression44
PgSelectRows48[["PgSelectRows[48∈3]"]]:::plan
- PgSelect45 --> PgSelectRows48
+ Lambda76{{"Lambda[76∈3]"}}:::plan
+ Lambda76 --> PgSelectRows48
PgClassExpression66{{"PgClassExpression[66∈3]
ᐸ__posts__.”created_at”ᐳ"}}:::plan
PgSelectSingle17 --> PgClassExpression66
RemapKeys70{{"RemapKeys[70∈3]
ᐸ17:{”0”:2,”1”:3,”2”:4}ᐳ"}}:::plan
PgSelectSingle17 --> RemapKeys70
RemapKeys70 --> List71
+ PgSelect14 --> Access74
+ List75 --> Lambda76
PgSelect34[["PgSelect[34∈5]
ᐸfrmcdc_userUpdateContentLineNodeᐳ"]]:::plan
__Item33[/"__Item[33∈5]
ᐸ30ᐳ"\]:::itemplan
Object11 & __Item33 & PgFromExpression38 --> PgSelect34
@@ -104,15 +107,15 @@ graph TD
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
class Bucket0,__Value2,__Value4,Access9,Access10,Object11,Connection12,PgFromExpression25,PgFromExpression38,PgFromExpression47,PgFromExpression60,Constant68,Constant69 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 11, 12, 6, 25, 47, 68, 69, 38, 60
ROOT Connectionᐸ8ᐳ[12]
1: PgSelectInlineApply[67]
2: PgSelect[14]
3: PgSelectRows[15]"):::bucket
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 11, 12, 6, 25, 47, 68, 69, 38, 60
ROOT Connectionᐸ8ᐳ[12]
1: 67, 73
2: PgSelect[14]
3: PgSelectRows[15]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgSelect14,PgSelectRows15,PgSelectInlineApply67 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 11, 47, 68, 69, 38, 60
ROOT __Item{2}ᐸ15ᐳ[16]"):::bucket
+ class Bucket1,PgSelect14,PgSelectRows15,PgSelectInlineApply67,PgSelectInlineApply73 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 68, 69, 14, 11, 38, 60
ROOT __Item{2}ᐸ15ᐳ[16]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item16,PgSelectSingle17 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 17, 11, 47, 68, 69, 38, 60
ROOT PgSelectSingle{2}ᐸpostsᐳ[17]
1:
ᐳ: 18, 19, 44, 66, 70, 71, 72
2: PgSelectRows[27], PgSelect[45]
ᐳ: 26, 28, 29, 30
3: PgSelectRows[48]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 17, 68, 69, 14, 16, 11, 38, 60
ROOT PgSelectSingle{2}ᐸpostsᐳ[17]
1:
ᐳ: 18, 19, 66, 70, 74, 71, 72, 75, 76
2: PgSelectRows[27], PgSelectRows[48]
ᐳ: 26, 28, 29, 30"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression18,PgClassExpression19,First26,PgSelectRows27,PgSelectSingle28,PgClassExpression29,PgClassExpression30,PgClassExpression44,PgSelect45,PgSelectRows48,PgClassExpression66,RemapKeys70,List71,Object72 bucket3
+ class Bucket3,PgClassExpression18,PgClassExpression19,First26,PgSelectRows27,PgSelectSingle28,PgClassExpression29,PgClassExpression30,PgSelectRows48,PgClassExpression66,RemapKeys70,List71,Object72,Access74,List75,Lambda76 bucket3
Bucket5("Bucket 5 (listItem)
Deps: 11, 38
ROOT __Item{5}ᐸ30ᐳ[33]
1: PgSelect[34]
2: PgSelectRows[39]"):::bucket
classDef bucket5 stroke:#7fff00
class Bucket5,__Item33,PgSelect34,PgSelectRows39 bucket5
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.sql b/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.sql
index eceb704d6..79b2c3edb 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/composite_domains.sql
@@ -10,34 +10,26 @@ select
from unnest(__frmcdc_user_update_content__."lines") __user_update_content_line_node_array_item__
)::text end) as "3",
(not (__frmcdc_user_update_content__ is null))::text as "4",
- (case when (__posts__."thread_content") is not distinct from null then null::text else array(
- select case when (__base_user_update_content__) is not distinct from null then null::text else json_build_array((case when (((__base_user_update_content__)."lines")) is not distinct from null then null::text else array(
- select array(
- select case when (__base_user_update_content_line_node_2) is not distinct from null then null::text else json_build_array((((__base_user_update_content_line_node_2)."line_node_type"))::text, ((__base_user_update_content_line_node_2)."line_node_text"))::text end
- from unnest(__user_update_content_line_node_array_item_2) __base_user_update_content_line_node_2
- )::text
- from unnest(((__base_user_update_content__)."lines")) __user_update_content_line_node_array_item_2
- )::text end), ((__base_user_update_content__)."img_url"))::text end
- from unnest(__posts__."thread_content") __base_user_update_content__
- )::text end) as "5",
- to_char(__posts__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "6"
+ to_char(__posts__."created_at", 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text) as "5",
+ array(
+ select array[
+ __frmcdc_user_update_content_2."img_url",
+ (case when (__frmcdc_user_update_content_2."lines") is not distinct from null then null::text else array(
+ select array(
+ select case when (__base_user_update_content_line_node_2) is not distinct from null then null::text else json_build_array((((__base_user_update_content_line_node_2)."line_node_type"))::text, ((__base_user_update_content_line_node_2)."line_node_text"))::text end
+ from unnest(__user_update_content_line_node_array_item_2) __base_user_update_content_line_node_2
+ )::text
+ from unnest(__frmcdc_user_update_content_2."lines") __user_update_content_line_node_array_item_2
+ )::text end),
+ (not (__frmcdc_user_update_content_2 is null))::text
+ ]::text[]
+ from unnest(__posts__."thread_content") as __frmcdc_user_update_content_2
+ )::text as "6"
from "composite_domains"."posts" as __posts__
left outer join lateral (select (__posts__."content").*) as __frmcdc_user_update_content__
on TRUE
order by __posts__."id" asc;
-select
- __frmcdc_user_update_content__."img_url" as "0",
- (case when (__frmcdc_user_update_content__."lines") is not distinct from null then null::text else array(
- select array(
- select case when (__base_user_update_content_line_node__) is not distinct from null then null::text else json_build_array((((__base_user_update_content_line_node__)."line_node_type"))::text, ((__base_user_update_content_line_node__)."line_node_text"))::text end
- from unnest(__user_update_content_line_node_array_item__) __base_user_update_content_line_node__
- )::text
- from unnest(__frmcdc_user_update_content__."lines") __user_update_content_line_node_array_item__
- )::text end) as "1",
- (not (__frmcdc_user_update_content__ is null))::text as "2"
-from unnest($1::"composite_domains"."user_update_content"[]) as __frmcdc_user_update_content__;
-
select __frmcdc_user_update_content_line_node_result__.*
from (select ids.ordinality - 1 as idx, (ids.value->>0)::"composite_domains"."user_update_content_line_node"[] as "id0" from json_array_elements($1::json) with ordinality as ids) as __frmcdc_user_update_content_line_node_identifiers__,
lateral (
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.mermaid
index 041c8bd5a..b4fa2c252 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.mermaid
@@ -19,19 +19,19 @@ graph TD
Connection255{{"Connection[255∈0] ➊
ᐸ252ᐳ"}}:::plan
PgSelect267[["PgSelect[267∈0] ➊
ᐸpersonᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Constant573{{"Constant[573∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant581{{"Constant[581∈0] ➊
ᐸ1ᐳ"}}:::plan
PgFromExpression358{{"PgFromExpression[358∈0] ➊"}}:::plan
- Object11 & Constant573 & PgFromExpression358 --> PgSelect267
+ Object11 & Constant581 & PgFromExpression358 --> PgSelect267
Connection318{{"Connection[318∈0] ➊
ᐸ314ᐳ"}}:::plan
PgFromExpression386{{"PgFromExpression[386∈0] ➊"}}:::plan
- Constant576{{"Constant[576∈0] ➊
ᐸ42ᐳ"}}:::plan
- Constant577{{"Constant[577∈0] ➊
ᐸ'Hi'ᐳ"}}:::plan
- Constant576 & Constant573 & Constant577 --> PgFromExpression386
+ Constant584{{"Constant[584∈0] ➊
ᐸ42ᐳ"}}:::plan
+ Constant585{{"Constant[585∈0] ➊
ᐸ'Hi'ᐳ"}}:::plan
+ Constant584 & Constant581 & Constant585 --> PgFromExpression386
PgFromExpression459{{"PgFromExpression[459∈0] ➊"}}:::plan
- Constant578{{"Constant[578∈0] ➊
ᐸ999999999ᐳ"}}:::plan
- Constant579{{"Constant[579∈0] ➊
ᐸ”Don't fail me now...”ᐳ"}}:::plan
- Constant579 --> PgFromExpression459
- Constant578 -- 2 --> PgFromExpression459
+ Constant586{{"Constant[586∈0] ➊
ᐸ999999999ᐳ"}}:::plan
+ Constant587{{"Constant[587∈0] ➊
ᐸ”Don't fail me now...”ᐳ"}}:::plan
+ Constant587 --> PgFromExpression459
+ Constant586 -- 2 --> PgFromExpression459
PgSelect527[["PgSelect[527∈0] ➊
ᐸsearch_test_summariesᐳ"]]:::plan
Object11 --> PgSelect527
PgSelect8[["PgSelect[8∈0] ➊
ᐸfunc_in_inoutᐳ"]]:::plan
@@ -40,25 +40,25 @@ graph TD
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
- Constant571{{"Constant[571∈0] ➊
ᐸ10ᐳ"}}:::plan
- Constant572{{"Constant[572∈0] ➊
ᐸ5ᐳ"}}:::plan
- Constant571 & Constant572 --> PgFromExpression12
+ Constant579{{"Constant[579∈0] ➊
ᐸ10ᐳ"}}:::plan
+ Constant580{{"Constant[580∈0] ➊
ᐸ5ᐳ"}}:::plan
+ Constant579 & Constant580 --> PgFromExpression12
PgSelect18[["PgSelect[18∈0] ➊
ᐸfunc_in_outᐳ"]]:::plan
PgFromExpression20{{"PgFromExpression[20∈0] ➊"}}:::plan
Object11 & PgFromExpression20 --> PgSelect18
PgSelect33[["PgSelect[33∈0] ➊
ᐸfunc_out_complexᐳ"]]:::plan
PgFromExpression35{{"PgFromExpression[35∈0] ➊"}}:::plan
Object11 & PgFromExpression35 --> PgSelect33
- Constant574{{"Constant[574∈0] ➊
ᐸ'test'ᐳ"}}:::plan
- Constant573 & Constant574 --> PgFromExpression35
+ Constant582{{"Constant[582∈0] ➊
ᐸ'test'ᐳ"}}:::plan
+ Constant581 & Constant582 --> PgFromExpression35
PgFromExpression84{{"PgFromExpression[84∈0] ➊"}}:::plan
- Constant573 & Constant574 --> PgFromExpression84
+ Constant581 & Constant582 --> PgFromExpression84
PgSelect143[["PgSelect[143∈0] ➊
ᐸfunc_out_out_compound_typeᐳ"]]:::plan
PgFromExpression145{{"PgFromExpression[145∈0] ➊"}}:::plan
Object11 & PgFromExpression145 --> PgSelect143
PgFromExpression238{{"PgFromExpression[238∈0] ➊"}}:::plan
- Constant575{{"Constant[575∈0] ➊
ᐸ20ᐳ"}}:::plan
- Constant575 --> PgFromExpression238
+ Constant583{{"Constant[583∈0] ➊
ᐸ20ᐳ"}}:::plan
+ Constant583 --> PgFromExpression238
PgSelect384[["PgSelect[384∈0] ➊
ᐸquery_output_two_rowsᐳ"]]:::plan
Object11 & PgFromExpression386 --> PgSelect384
PgSelect457[["PgSelect[457∈0] ➊
ᐸquery_output_two_rowsᐳ"]]:::plan
@@ -74,7 +74,7 @@ graph TD
First13 --> PgSelectSingle15
PgClassExpression16{{"PgClassExpression[16∈0] ➊
ᐸ__func_in_inout__.vᐳ"}}:::plan
PgSelectSingle15 --> PgClassExpression16
- Constant571 --> PgFromExpression20
+ Constant579 --> PgFromExpression20
First21{{"First[21∈0] ➊"}}:::plan
PgSelectRows22[["PgSelectRows[22∈0] ➊"]]:::plan
PgSelectRows22 --> First21
@@ -107,7 +107,7 @@ graph TD
PgSelect135 --> PgSelectRows138
PgSelectSingle139{{"PgSelectSingle[139∈0] ➊
ᐸfunc_out_outᐳ"}}:::plan
First137 --> PgSelectSingle139
- Constant571 --> PgFromExpression145
+ Constant579 --> PgFromExpression145
First146{{"First[146∈0] ➊"}}:::plan
PgSelectRows147[["PgSelectRows[147∈0] ➊"]]:::plan
PgSelectRows147 --> First146
@@ -149,14 +149,14 @@ graph TD
PgSelectSingle231{{"PgSelectSingle[231∈0] ➊
ᐸfunc_out_unnamed_out_out_unnamedᐳ"}}:::plan
First229 --> PgSelectSingle231
PgFromExpression254{{"PgFromExpression[254∈0] ➊"}}:::plan
- Constant575 --> PgFromExpression254
+ Constant583 --> PgFromExpression254
First269{{"First[269∈0] ➊"}}:::plan
PgSelectRows270[["PgSelectRows[270∈0] ➊"]]:::plan
PgSelectRows270 --> First269
PgSelect267 --> PgSelectRows270
PgSelectSingle271{{"PgSelectSingle[271∈0] ➊
ᐸpersonᐳ"}}:::plan
First269 --> PgSelectSingle271
- Constant574 --> PgFromExpression358
+ Constant582 --> PgFromExpression358
First387{{"First[387∈0] ➊"}}:::plan
PgSelectRows388[["PgSelectRows[388∈0] ➊"]]:::plan
PgSelectRows388 --> First387
@@ -176,19 +176,20 @@ graph TD
Constant76{{"Constant[76∈0] ➊
ᐸ'posts'ᐳ"}}:::plan
PgFromExpression96{{"PgFromExpression[96∈0] ➊"}}:::plan
PgFromExpression106{{"PgFromExpression[106∈0] ➊"}}:::plan
- Constant537{{"Constant[537∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
- Constant538{{"Constant[538∈0] ➊
ᐸfalseᐳ"}}:::plan
- Constant543{{"Constant[543∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
- Constant548{{"Constant[548∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
- Constant554{{"Constant[554∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
- Constant560{{"Constant[560∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
- Constant566{{"Constant[566∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ Constant541{{"Constant[541∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ Constant542{{"Constant[542∈0] ➊
ᐸfalseᐳ"}}:::plan
+ Constant547{{"Constant[547∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ Constant556{{"Constant[556∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ Constant562{{"Constant[562∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ Constant568{{"Constant[568∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ Constant574{{"Constant[574∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ PgSelect53[["PgSelect[53∈1] ➊
ᐸpersonᐳ"]]:::plan
+ PgFromExpression55{{"PgFromExpression[55∈1] ➊"}}:::plan
+ PgSelectInlineApply536["PgSelectInlineApply[536∈1] ➊"]:::plan
+ Object11 & PgFromExpression55 & PgSelectInlineApply536 --> PgSelect53
PgSelect41[["PgSelect[41∈1] ➊
ᐸfrmcdc_compoundTypeᐳ"]]:::plan
PgFromExpression45{{"PgFromExpression[45∈1] ➊"}}:::plan
Object11 & PgFromExpression45 --> PgSelect41
- PgSelect53[["PgSelect[53∈1] ➊
ᐸpersonᐳ"]]:::plan
- PgFromExpression55{{"PgFromExpression[55∈1] ➊"}}:::plan
- Object11 & PgFromExpression55 --> PgSelect53
PgClassExpression39{{"PgClassExpression[39∈1] ➊
ᐸ__func_out...plex__.”x”ᐳ"}}:::plan
PgSelectSingle38 --> PgClassExpression39
PgClassExpression40{{"PgClassExpression[40∈1] ➊
ᐸ__func_out...plex__.”y”ᐳ"}}:::plan
@@ -215,18 +216,22 @@ graph TD
PgSelectSingle48 --> PgClassExpression50
PgClassExpression51{{"PgClassExpression[51∈2] ➊
ᐸ__frmcdc_c...type__.”c”ᐳ"}}:::plan
PgSelectSingle48 --> PgClassExpression51
- PgSelect72[["PgSelect[72∈3] ➊
ᐸpostᐳ"]]:::plan
- PgClassExpression60{{"PgClassExpression[60∈3] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
- Object11 & PgClassExpression60 & Connection70 --> PgSelect72
List61{{"List[61∈3] ➊
ᐸ59,60ᐳ"}}:::plan
+ PgClassExpression60{{"PgClassExpression[60∈3] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
Constant59 & PgClassExpression60 --> List61
+ List538{{"List[538∈3] ➊
ᐸ56,537ᐳ"}}:::plan
+ Access537{{"Access[537∈3] ➊
ᐸ53.m.subqueryDetailsFor72ᐳ"}}:::plan
+ First56 & Access537 --> List538
PgSelectSingle58 --> PgClassExpression60
Lambda62{{"Lambda[62∈3] ➊
ᐸbase64JSONEncodeᐳ"}}:::plan
List61 --> Lambda62
PgClassExpression63{{"PgClassExpression[63∈3] ➊
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle58 --> PgClassExpression63
PgSelectRows73[["PgSelectRows[73∈3] ➊"]]:::plan
- PgSelect72 --> PgSelectRows73
+ Lambda539{{"Lambda[539∈3] ➊"}}:::plan
+ Lambda539 --> PgSelectRows73
+ PgSelect53 --> Access537
+ List538 --> Lambda539
__Item74[/"__Item[74∈4]
ᐸ73ᐳ"\]:::itemplan
PgSelectRows73 ==> __Item74
PgSelectSingle75{{"PgSelectSingle[75∈4]
ᐸpostᐳ"}}:::plan
@@ -238,9 +243,9 @@ graph TD
Lambda79{{"Lambda[79∈5]
ᐸbase64JSONEncodeᐳ"}}:::plan
List78 --> Lambda79
PgSelect86[["PgSelect[86∈6] ➊
ᐸfunc_out_complex_setofᐳ"]]:::plan
- PgSelectInlineApply536["PgSelectInlineApply[536∈6] ➊"]:::plan
- PgSelectInlineApply542["PgSelectInlineApply[542∈6] ➊"]:::plan
- Object11 & PgFromExpression84 & Connection85 & PgFromExpression96 & PgSelectInlineApply536 & PgFromExpression106 & PgSelectInlineApply542 --> PgSelect86
+ PgSelectInlineApply540["PgSelectInlineApply[540∈6] ➊"]:::plan
+ PgSelectInlineApply546["PgSelectInlineApply[546∈6] ➊"]:::plan
+ Object11 & PgFromExpression84 & Connection85 & PgFromExpression96 & PgSelectInlineApply540 & PgFromExpression106 & PgSelectInlineApply546 --> PgSelect86
PgSelect130[["PgSelect[130∈6] ➊
ᐸfunc_out_complex_setof(aggregate)ᐳ"]]:::plan
Object11 & PgFromExpression84 & Connection85 --> PgSelect130
PgSelectRows87[["PgSelectRows[87∈6] ➊"]]:::plan
@@ -257,32 +262,32 @@ graph TD
PgSelectRows87 ==> __Item88
PgSelectSingle89{{"PgSelectSingle[89∈7]
ᐸfunc_out_complex_setofᐳ"}}:::plan
__Item88 --> PgSelectSingle89
- Object541{{"Object[541∈8]
ᐸ{m,hasMore,items}ᐳ"}}:::plan
- List540{{"List[540∈8]
ᐸ539ᐳ"}}:::plan
- Constant537 & Constant538 & List540 --> Object541
- Object546{{"Object[546∈8]
ᐸ{m,hasMore,items}ᐳ"}}:::plan
- List545{{"List[545∈8]
ᐸ544ᐳ"}}:::plan
- Constant543 & Constant538 & List545 --> Object546
+ Object545{{"Object[545∈8]
ᐸ{m,hasMore,items}ᐳ"}}:::plan
+ List544{{"List[544∈8]
ᐸ543ᐳ"}}:::plan
+ Constant541 & Constant542 & List544 --> Object545
+ Object550{{"Object[550∈8]
ᐸ{m,hasMore,items}ᐳ"}}:::plan
+ List549{{"List[549∈8]
ᐸ548ᐳ"}}:::plan
+ Constant547 & Constant542 & List549 --> Object550
PgClassExpression90{{"PgClassExpression[90∈8]
ᐸ__func_out...etof__.”x”ᐳ"}}:::plan
PgSelectSingle89 --> PgClassExpression90
First97{{"First[97∈8]"}}:::plan
PgSelectRows98[["PgSelectRows[98∈8]"]]:::plan
PgSelectRows98 --> First97
- Object541 --> PgSelectRows98
+ Object545 --> PgSelectRows98
PgSelectSingle99{{"PgSelectSingle[99∈8]
ᐸfrmcdc_compoundTypeᐳ"}}:::plan
First97 --> PgSelectSingle99
First107{{"First[107∈8]"}}:::plan
PgSelectRows108[["PgSelectRows[108∈8]"]]:::plan
PgSelectRows108 --> First107
- Object546 --> PgSelectRows108
+ Object550 --> PgSelectRows108
PgSelectSingle109{{"PgSelectSingle[109∈8]
ᐸpersonᐳ"}}:::plan
First107 --> PgSelectSingle109
- RemapKeys539{{"RemapKeys[539∈8]
ᐸ89:{”0”:1,”1”:2,”2”:3,”3”:4}ᐳ"}}:::plan
- PgSelectSingle89 --> RemapKeys539
- RemapKeys539 --> List540
- RemapKeys544{{"RemapKeys[544∈8]
ᐸ89:{”0”:5,”1”:6}ᐳ"}}:::plan
- PgSelectSingle89 --> RemapKeys544
- RemapKeys544 --> List545
+ RemapKeys543{{"RemapKeys[543∈8]
ᐸ89:{”0”:1,”1”:2,”2”:3,”3”:4}ᐳ"}}:::plan
+ PgSelectSingle89 --> RemapKeys543
+ RemapKeys543 --> List544
+ RemapKeys548{{"RemapKeys[548∈8]
ᐸ89:{”0”:5,”1”:6}ᐳ"}}:::plan
+ PgSelectSingle89 --> RemapKeys548
+ RemapKeys548 --> List549
PgClassExpression100{{"PgClassExpression[100∈9]
ᐸ__frmcdc_c...type__.”a”ᐳ"}}:::plan
PgSelectSingle99 --> PgClassExpression100
PgClassExpression101{{"PgClassExpression[101∈9]
ᐸ__frmcdc_c...type__.”b”ᐳ"}}:::plan
@@ -461,7 +466,7 @@ graph TD
PgSelectSingle259 --> PgClassExpression260
PgFromExpression284{{"PgFromExpression[284∈32] ➊"}}:::plan
PgClassExpression279{{"PgClassExpression[279∈32] ➊
ᐸ__person__ᐳ"}}:::plan
- PgClassExpression279 & Constant573 & Constant574 --> PgFromExpression284
+ PgClassExpression279 & Constant581 & Constant582 --> PgFromExpression284
List274{{"List[274∈32] ➊
ᐸ59,273ᐳ"}}:::plan
PgClassExpression273{{"PgClassExpression[273∈32] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
Constant59 & PgClassExpression273 --> List274
@@ -476,7 +481,7 @@ graph TD
PgSelect362[["PgSelect[362∈32] ➊
ᐸperson_computed_inout_outᐳ"]]:::plan
PgFromExpression364{{"PgFromExpression[364∈32] ➊"}}:::plan
Object11 & PgFromExpression364 --> PgSelect362
- PgClassExpression279 & Constant574 --> PgFromExpression364
+ PgClassExpression279 & Constant582 --> PgFromExpression364
PgSelect373[["PgSelect[373∈32] ➊
ᐸperson_computed_out_outᐳ"]]:::plan
PgFromExpression375{{"PgFromExpression[375∈32] ➊"}}:::plan
Object11 & PgFromExpression375 --> PgSelect373
@@ -523,12 +528,13 @@ graph TD
PgSelect373 --> PgSelectRows377
PgSelectSingle378{{"PgSelectSingle[378∈32] ➊
ᐸperson_computed_out_outᐳ"}}:::plan
First376 --> PgSelectSingle378
+ PgSelect302[["PgSelect[302∈33] ➊
ᐸpersonᐳ"]]:::plan
+ PgFromExpression304{{"PgFromExpression[304∈33] ➊"}}:::plan
+ PgSelectInlineApply551["PgSelectInlineApply[551∈33] ➊"]:::plan
+ Object11 & PgFromExpression304 & PgSelectInlineApply551 --> PgSelect302
PgSelect290[["PgSelect[290∈33] ➊
ᐸfrmcdc_compoundTypeᐳ"]]:::plan
PgFromExpression294{{"PgFromExpression[294∈33] ➊"}}:::plan
Object11 & PgFromExpression294 --> PgSelect290
- PgSelect302[["PgSelect[302∈33] ➊
ᐸpersonᐳ"]]:::plan
- PgFromExpression304{{"PgFromExpression[304∈33] ➊"}}:::plan
- Object11 & PgFromExpression304 --> PgSelect302
PgClassExpression288{{"PgClassExpression[288∈33] ➊
ᐸ__person_c...plex__.”x”ᐳ"}}:::plan
PgSelectSingle287 --> PgClassExpression288
PgClassExpression289{{"PgClassExpression[289∈33] ➊
ᐸ__person_c...plex__.”y”ᐳ"}}:::plan
@@ -555,18 +561,22 @@ graph TD
PgSelectSingle297 --> PgClassExpression299
PgClassExpression300{{"PgClassExpression[300∈34] ➊
ᐸ__frmcdc_c...type__.”c”ᐳ"}}:::plan
PgSelectSingle297 --> PgClassExpression300
- PgSelect320[["PgSelect[320∈35] ➊
ᐸpostᐳ"]]:::plan
- PgClassExpression309{{"PgClassExpression[309∈35] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
- Object11 & PgClassExpression309 & Connection318 --> PgSelect320
List310{{"List[310∈35] ➊
ᐸ59,309ᐳ"}}:::plan
+ PgClassExpression309{{"PgClassExpression[309∈35] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
Constant59 & PgClassExpression309 --> List310
+ List553{{"List[553∈35] ➊
ᐸ305,552ᐳ"}}:::plan
+ Access552{{"Access[552∈35] ➊
ᐸ302.m.subqueryDetailsFor320ᐳ"}}:::plan
+ First305 & Access552 --> List553
PgSelectSingle307 --> PgClassExpression309
Lambda311{{"Lambda[311∈35] ➊
ᐸbase64JSONEncodeᐳ"}}:::plan
List310 --> Lambda311
PgClassExpression312{{"PgClassExpression[312∈35] ➊
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle307 --> PgClassExpression312
PgSelectRows321[["PgSelectRows[321∈35] ➊"]]:::plan
- PgSelect320 --> PgSelectRows321
+ Lambda554{{"Lambda[554∈35] ➊"}}:::plan
+ Lambda554 --> PgSelectRows321
+ PgSelect302 --> Access552
+ List553 --> Lambda554
__Item322[/"__Item[322∈36]
ᐸ321ᐳ"\]:::itemplan
PgSelectRows321 ==> __Item322
PgSelectSingle323{{"PgSelectSingle[323∈36]
ᐸpostᐳ"}}:::plan
@@ -635,8 +645,8 @@ graph TD
PgSelectSingle389 --> PgClassExpression453
PgSelect403[["PgSelect[403∈44] ➊
ᐸpersonᐳ"]]:::plan
PgClassExpression402{{"PgClassExpression[402∈44] ➊
ᐸ__left_arm...person_id”ᐳ"}}:::plan
- PgSelectInlineApply547["PgSelectInlineApply[547∈44] ➊"]:::plan
- Object11 & PgClassExpression402 & PgSelectInlineApply547 --> PgSelect403
+ PgSelectInlineApply555["PgSelectInlineApply[555∈44] ➊"]:::plan
+ Object11 & PgClassExpression402 & PgSelectInlineApply555 --> PgSelect403
PgClassExpression399{{"PgClassExpression[399∈44] ➊
ᐸ__left_arm__.”id”ᐳ"}}:::plan
PgSelectSingle398 --> PgClassExpression399
PgClassExpression400{{"PgClassExpression[400∈44] ➊
ᐸ__left_arm...in_metres”ᐳ"}}:::plan
@@ -650,26 +660,26 @@ graph TD
PgSelect403 --> PgSelectRows408
PgSelectSingle409{{"PgSelectSingle[409∈44] ➊
ᐸpersonᐳ"}}:::plan
First407 --> PgSelectSingle409
- Object552{{"Object[552∈45] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
- List551{{"List[551∈45] ➊
ᐸ550ᐳ"}}:::plan
- Constant548 & Constant538 & List551 --> Object552
+ Object560{{"Object[560∈45] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
+ List559{{"List[559∈45] ➊
ᐸ558ᐳ"}}:::plan
+ Constant556 & Constant542 & List559 --> Object560
PgClassExpression410{{"PgClassExpression[410∈45] ➊
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle409 --> PgClassExpression410
First416{{"First[416∈45] ➊"}}:::plan
PgSelectRows417[["PgSelectRows[417∈45] ➊"]]:::plan
PgSelectRows417 --> First416
- Object552 --> PgSelectRows417
+ Object560 --> PgSelectRows417
PgSelectSingle418{{"PgSelectSingle[418∈45] ➊
ᐸperson_secretᐳ"}}:::plan
First416 --> PgSelectSingle418
- RemapKeys550{{"RemapKeys[550∈45] ➊
ᐸ409:{”0”:1,”1”:2}ᐳ"}}:::plan
- PgSelectSingle409 --> RemapKeys550
- RemapKeys550 --> List551
+ RemapKeys558{{"RemapKeys[558∈45] ➊
ᐸ409:{”0”:1,”1”:2}ᐳ"}}:::plan
+ PgSelectSingle409 --> RemapKeys558
+ RemapKeys558 --> List559
PgClassExpression419{{"PgClassExpression[419∈46] ➊
ᐸ__person_s..._.”sekrit”ᐳ"}}:::plan
PgSelectSingle418 --> PgClassExpression419
PgSelect436[["PgSelect[436∈47] ➊
ᐸpersonᐳ"]]:::plan
PgClassExpression435{{"PgClassExpression[435∈47] ➊
ᐸ__post__.”author_id”ᐳ"}}:::plan
- PgSelectInlineApply553["PgSelectInlineApply[553∈47] ➊"]:::plan
- Object11 & PgClassExpression435 & PgSelectInlineApply553 --> PgSelect436
+ PgSelectInlineApply561["PgSelectInlineApply[561∈47] ➊"]:::plan
+ Object11 & PgClassExpression435 & PgSelectInlineApply561 --> PgSelect436
PgClassExpression433{{"PgClassExpression[433∈47] ➊
ᐸ__post__.”id”ᐳ"}}:::plan
PgSelectSingle432 --> PgClassExpression433
PgClassExpression434{{"PgClassExpression[434∈47] ➊
ᐸ__post__.”headline”ᐳ"}}:::plan
@@ -681,20 +691,20 @@ graph TD
PgSelect436 --> PgSelectRows441
PgSelectSingle442{{"PgSelectSingle[442∈47] ➊
ᐸpersonᐳ"}}:::plan
First440 --> PgSelectSingle442
- Object558{{"Object[558∈48] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
- List557{{"List[557∈48] ➊
ᐸ556ᐳ"}}:::plan
- Constant554 & Constant538 & List557 --> Object558
+ Object566{{"Object[566∈48] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
+ List565{{"List[565∈48] ➊
ᐸ564ᐳ"}}:::plan
+ Constant562 & Constant542 & List565 --> Object566
PgClassExpression443{{"PgClassExpression[443∈48] ➊
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle442 --> PgClassExpression443
First449{{"First[449∈48] ➊"}}:::plan
PgSelectRows450[["PgSelectRows[450∈48] ➊"]]:::plan
PgSelectRows450 --> First449
- Object558 --> PgSelectRows450
+ Object566 --> PgSelectRows450
PgSelectSingle451{{"PgSelectSingle[451∈48] ➊
ᐸperson_secretᐳ"}}:::plan
First449 --> PgSelectSingle451
- RemapKeys556{{"RemapKeys[556∈48] ➊
ᐸ442:{”0”:1,”1”:2}ᐳ"}}:::plan
- PgSelectSingle442 --> RemapKeys556
- RemapKeys556 --> List557
+ RemapKeys564{{"RemapKeys[564∈48] ➊
ᐸ442:{”0”:1,”1”:2}ᐳ"}}:::plan
+ PgSelectSingle442 --> RemapKeys564
+ RemapKeys564 --> List565
PgClassExpression452{{"PgClassExpression[452∈49] ➊
ᐸ__person_s..._.”sekrit”ᐳ"}}:::plan
PgSelectSingle451 --> PgClassExpression452
PgSelect464[["PgSelect[464∈50] ➊
ᐸleft_armᐳ"]]:::plan
@@ -725,8 +735,8 @@ graph TD
PgSelectSingle462 --> PgClassExpression526
PgSelect476[["PgSelect[476∈51] ➊
ᐸpersonᐳ"]]:::plan
PgClassExpression475{{"PgClassExpression[475∈51] ➊
ᐸ__left_arm...person_id”ᐳ"}}:::plan
- PgSelectInlineApply559["PgSelectInlineApply[559∈51] ➊"]:::plan
- Object11 & PgClassExpression475 & PgSelectInlineApply559 --> PgSelect476
+ PgSelectInlineApply567["PgSelectInlineApply[567∈51] ➊"]:::plan
+ Object11 & PgClassExpression475 & PgSelectInlineApply567 --> PgSelect476
PgClassExpression472{{"PgClassExpression[472∈51] ➊
ᐸ__left_arm__.”id”ᐳ"}}:::plan
PgSelectSingle471 --> PgClassExpression472
PgClassExpression473{{"PgClassExpression[473∈51] ➊
ᐸ__left_arm...in_metres”ᐳ"}}:::plan
@@ -740,26 +750,26 @@ graph TD
PgSelect476 --> PgSelectRows481
PgSelectSingle482{{"PgSelectSingle[482∈51] ➊
ᐸpersonᐳ"}}:::plan
First480 --> PgSelectSingle482
- Object564{{"Object[564∈52] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
- List563{{"List[563∈52] ➊
ᐸ562ᐳ"}}:::plan
- Constant560 & Constant538 & List563 --> Object564
+ Object572{{"Object[572∈52] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
+ List571{{"List[571∈52] ➊
ᐸ570ᐳ"}}:::plan
+ Constant568 & Constant542 & List571 --> Object572
PgClassExpression483{{"PgClassExpression[483∈52] ➊
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle482 --> PgClassExpression483
First489{{"First[489∈52] ➊"}}:::plan
PgSelectRows490[["PgSelectRows[490∈52] ➊"]]:::plan
PgSelectRows490 --> First489
- Object564 --> PgSelectRows490
+ Object572 --> PgSelectRows490
PgSelectSingle491{{"PgSelectSingle[491∈52] ➊
ᐸperson_secretᐳ"}}:::plan
First489 --> PgSelectSingle491
- RemapKeys562{{"RemapKeys[562∈52] ➊
ᐸ482:{”0”:1,”1”:2}ᐳ"}}:::plan
- PgSelectSingle482 --> RemapKeys562
- RemapKeys562 --> List563
+ RemapKeys570{{"RemapKeys[570∈52] ➊
ᐸ482:{”0”:1,”1”:2}ᐳ"}}:::plan
+ PgSelectSingle482 --> RemapKeys570
+ RemapKeys570 --> List571
PgClassExpression492{{"PgClassExpression[492∈53] ➊
ᐸ__person_s..._.”sekrit”ᐳ"}}:::plan
PgSelectSingle491 --> PgClassExpression492
PgSelect509[["PgSelect[509∈54] ➊
ᐸpersonᐳ"]]:::plan
PgClassExpression508{{"PgClassExpression[508∈54] ➊
ᐸ__post__.”author_id”ᐳ"}}:::plan
- PgSelectInlineApply565["PgSelectInlineApply[565∈54] ➊"]:::plan
- Object11 & PgClassExpression508 & PgSelectInlineApply565 --> PgSelect509
+ PgSelectInlineApply573["PgSelectInlineApply[573∈54] ➊"]:::plan
+ Object11 & PgClassExpression508 & PgSelectInlineApply573 --> PgSelect509
PgClassExpression506{{"PgClassExpression[506∈54] ➊
ᐸ__post__.”id”ᐳ"}}:::plan
PgSelectSingle505 --> PgClassExpression506
PgClassExpression507{{"PgClassExpression[507∈54] ➊
ᐸ__post__.”headline”ᐳ"}}:::plan
@@ -771,20 +781,20 @@ graph TD
PgSelect509 --> PgSelectRows514
PgSelectSingle515{{"PgSelectSingle[515∈54] ➊
ᐸpersonᐳ"}}:::plan
First513 --> PgSelectSingle515
- Object570{{"Object[570∈55] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
- List569{{"List[569∈55] ➊
ᐸ568ᐳ"}}:::plan
- Constant566 & Constant538 & List569 --> Object570
+ Object578{{"Object[578∈55] ➊
ᐸ{m,hasMore,items}ᐳ"}}:::plan
+ List577{{"List[577∈55] ➊
ᐸ576ᐳ"}}:::plan
+ Constant574 & Constant542 & List577 --> Object578
PgClassExpression516{{"PgClassExpression[516∈55] ➊
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle515 --> PgClassExpression516
First522{{"First[522∈55] ➊"}}:::plan
PgSelectRows523[["PgSelectRows[523∈55] ➊"]]:::plan
PgSelectRows523 --> First522
- Object570 --> PgSelectRows523
+ Object578 --> PgSelectRows523
PgSelectSingle524{{"PgSelectSingle[524∈55] ➊
ᐸperson_secretᐳ"}}:::plan
First522 --> PgSelectSingle524
- RemapKeys568{{"RemapKeys[568∈55] ➊
ᐸ515:{”0”:1,”1”:2}ᐳ"}}:::plan
- PgSelectSingle515 --> RemapKeys568
- RemapKeys568 --> List569
+ RemapKeys576{{"RemapKeys[576∈55] ➊
ᐸ515:{”0”:1,”1”:2}ᐳ"}}:::plan
+ PgSelectSingle515 --> RemapKeys576
+ RemapKeys576 --> List577
PgClassExpression525{{"PgClassExpression[525∈56] ➊
ᐸ__person_s..._.”sekrit”ᐳ"}}:::plan
PgSelectSingle524 --> PgClassExpression525
__Item530[/"__Item[530∈57]
ᐸ529ᐳ"\]:::itemplan
@@ -799,33 +809,33 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/function-return-types"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 9, 10, 59, 64, 76, 96, 106, 537, 538, 543, 548, 554, 560, 566, 571, 572, 573, 574, 575, 576, 577, 578, 579, 11, 12, 20, 35, 70, 84, 85, 120, 145, 164, 185, 207, 238, 239, 254, 255, 318, 358, 386, 459
2: 8, 18, 25, 33, 135, 143, 176, 196, 221, 227, 267, 384, 457, 527
3: 14, 22, 28, 37, 138, 147, 179, 199, 224, 230, 270, 388, 461, 529
ᐳ: 13, 15, 16, 21, 23, 24, 27, 29, 30, 36, 38, 137, 139, 146, 148, 178, 180, 198, 200, 223, 225, 226, 229, 231, 269, 271, 387, 389, 460, 462"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 9, 10, 59, 64, 76, 96, 106, 541, 542, 547, 556, 562, 568, 574, 579, 580, 581, 582, 583, 584, 585, 586, 587, 11, 12, 20, 35, 70, 84, 85, 120, 145, 164, 185, 207, 238, 239, 254, 255, 318, 358, 386, 459
2: 8, 18, 25, 33, 135, 143, 176, 196, 221, 227, 267, 384, 457, 527
3: 14, 22, 28, 37, 138, 147, 179, 199, 224, 230, 270, 388, 461, 529
ᐳ: 13, 15, 16, 21, 23, 24, 27, 29, 30, 36, 38, 137, 139, 146, 148, 178, 180, 198, 200, 223, 225, 226, 229, 231, 269, 271, 387, 389, 460, 462"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,PgFromExpression12,First13,PgSelectRows14,PgSelectSingle15,PgClassExpression16,PgSelect18,PgFromExpression20,First21,PgSelectRows22,PgSelectSingle23,PgClassExpression24,PgSelect25,First27,PgSelectRows28,PgSelectSingle29,PgClassExpression30,PgSelect33,PgFromExpression35,First36,PgSelectRows37,PgSelectSingle38,Constant59,Connection70,Constant76,PgFromExpression84,Connection85,PgFromExpression96,PgFromExpression106,Connection120,PgSelect135,First137,PgSelectRows138,PgSelectSingle139,PgSelect143,PgFromExpression145,First146,PgSelectRows147,PgSelectSingle148,Connection164,PgSelect176,First178,PgSelectRows179,PgSelectSingle180,Connection185,PgSelect196,First198,PgSelectRows199,PgSelectSingle200,Connection207,PgSelect221,First223,PgSelectRows224,PgSelectSingle225,PgClassExpression226,PgSelect227,First229,PgSelectRows230,PgSelectSingle231,PgFromExpression238,Connection239,PgFromExpression254,Connection255,PgSelect267,First269,PgSelectRows270,PgSelectSingle271,Connection318,PgFromExpression358,PgSelect384,PgFromExpression386,First387,PgSelectRows388,PgSelectSingle389,PgSelect457,PgFromExpression459,First460,PgSelectRows461,PgSelectSingle462,PgSelect527,PgSelectRows529,Constant537,Constant538,Constant543,Constant548,Constant554,Constant560,Constant566,Constant571,Constant572,Constant573,Constant574,Constant575,Constant576,Constant577,Constant578,Constant579 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 38, 11, 59, 70, 64, 76
ROOT PgSelectSingleᐸfunc_out_complexᐳ[38]
1:
ᐳ: 39, 40, 52, 45, 55
2: PgSelect[41], PgSelect[53]
3: PgSelectRows[47], PgSelectRows[57]
ᐳ: 46, 48, 56, 58"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,PgFromExpression12,First13,PgSelectRows14,PgSelectSingle15,PgClassExpression16,PgSelect18,PgFromExpression20,First21,PgSelectRows22,PgSelectSingle23,PgClassExpression24,PgSelect25,First27,PgSelectRows28,PgSelectSingle29,PgClassExpression30,PgSelect33,PgFromExpression35,First36,PgSelectRows37,PgSelectSingle38,Constant59,Connection70,Constant76,PgFromExpression84,Connection85,PgFromExpression96,PgFromExpression106,Connection120,PgSelect135,First137,PgSelectRows138,PgSelectSingle139,PgSelect143,PgFromExpression145,First146,PgSelectRows147,PgSelectSingle148,Connection164,PgSelect176,First178,PgSelectRows179,PgSelectSingle180,Connection185,PgSelect196,First198,PgSelectRows199,PgSelectSingle200,Connection207,PgSelect221,First223,PgSelectRows224,PgSelectSingle225,PgClassExpression226,PgSelect227,First229,PgSelectRows230,PgSelectSingle231,PgFromExpression238,Connection239,PgFromExpression254,Connection255,PgSelect267,First269,PgSelectRows270,PgSelectSingle271,Connection318,PgFromExpression358,PgSelect384,PgFromExpression386,First387,PgSelectRows388,PgSelectSingle389,PgSelect457,PgFromExpression459,First460,PgSelectRows461,PgSelectSingle462,PgSelect527,PgSelectRows529,Constant541,Constant542,Constant547,Constant556,Constant562,Constant568,Constant574,Constant579,Constant580,Constant581,Constant582,Constant583,Constant584,Constant585,Constant586,Constant587 bucket0
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 38, 11, 64, 59, 76, 70
ROOT PgSelectSingleᐸfunc_out_complexᐳ[38]
1: PgSelectInlineApply[536]
ᐳ: 39, 40, 52, 45, 55
2: PgSelect[41], PgSelect[53]
3: PgSelectRows[47], PgSelectRows[57]
ᐳ: 46, 48, 56, 58"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgClassExpression39,PgClassExpression40,PgSelect41,PgFromExpression45,First46,PgSelectRows47,PgSelectSingle48,PgClassExpression52,PgSelect53,PgFromExpression55,First56,PgSelectRows57,PgSelectSingle58 bucket1
+ class Bucket1,PgClassExpression39,PgClassExpression40,PgSelect41,PgFromExpression45,First46,PgSelectRows47,PgSelectSingle48,PgClassExpression52,PgSelect53,PgFromExpression55,First56,PgSelectRows57,PgSelectSingle58,PgSelectInlineApply536 bucket1
Bucket2("Bucket 2 (nullableBoundary)
Deps: 48
ROOT PgSelectSingle{1}ᐸfrmcdc_compoundTypeᐳ[48]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,PgClassExpression49,PgClassExpression50,PgClassExpression51 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 58, 59, 11, 70, 64, 76
ROOT PgSelectSingle{1}ᐸpersonᐳ[58]
1:
ᐳ: 60, 63, 61, 62
2: PgSelect[72]
3: PgSelectRows[73]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 58, 59, 53, 56, 76, 70
ROOT PgSelectSingle{1}ᐸpersonᐳ[58]
1:
ᐳ: 60, 63, 537, 61, 62, 538, 539
2: PgSelectRows[73]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression60,List61,Lambda62,PgClassExpression63,PgSelect72,PgSelectRows73 bucket3
+ class Bucket3,PgClassExpression60,List61,Lambda62,PgClassExpression63,PgSelectRows73,Access537,List538,Lambda539 bucket3
Bucket4("Bucket 4 (listItem)
Deps: 76
ROOT __Item{4}ᐸ73ᐳ[74]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item74,PgSelectSingle75 bucket4
Bucket5("Bucket 5 (nullableBoundary)
Deps: 75, 76
ROOT PgSelectSingle{4}ᐸpostᐳ[75]"):::bucket
classDef bucket5 stroke:#7fff00
class Bucket5,PgClassExpression77,List78,Lambda79 bucket5
- Bucket6("Bucket 6 (nullableBoundary)
Deps: 11, 84, 85, 64, 96, 106, 537, 538, 543, 59, 120, 76
ROOT Connectionᐸ82ᐳ[85]
1: 130, 536, 542
2: PgSelect[86], PgSelectRows[132]
ᐳ: 131, 133, 134
3: PgSelectRows[87]"):::bucket
+ Bucket6("Bucket 6 (nullableBoundary)
Deps: 11, 84, 85, 64, 96, 106, 541, 542, 547, 59, 120, 76
ROOT Connectionᐸ82ᐳ[85]
1: 130, 540, 546
2: PgSelect[86], PgSelectRows[132]
ᐳ: 131, 133, 134
3: PgSelectRows[87]"):::bucket
classDef bucket6 stroke:#ff1493
- class Bucket6,PgSelect86,PgSelectRows87,PgSelect130,First131,PgSelectRows132,PgSelectSingle133,PgClassExpression134,PgSelectInlineApply536,PgSelectInlineApply542 bucket6
- Bucket7("Bucket 7 (listItem)
Deps: 537, 538, 543, 59, 11, 120, 64, 76
ROOT __Item{7}ᐸ87ᐳ[88]"):::bucket
+ class Bucket6,PgSelect86,PgSelectRows87,PgSelect130,First131,PgSelectRows132,PgSelectSingle133,PgClassExpression134,PgSelectInlineApply540,PgSelectInlineApply546 bucket6
+ Bucket7("Bucket 7 (listItem)
Deps: 541, 542, 547, 59, 11, 120, 64, 76
ROOT __Item{7}ᐸ87ᐳ[88]"):::bucket
classDef bucket7 stroke:#808000
class Bucket7,__Item88,PgSelectSingle89 bucket7
- Bucket8("Bucket 8 (nullableBoundary)
Deps: 89, 537, 538, 543, 59, 11, 120, 64, 76
ROOT PgSelectSingle{7}ᐸfunc_out_complex_setofᐳ[89]
1:
ᐳ: 90, 539, 544, 540, 541, 545, 546
2: PgSelectRows[98], PgSelectRows[108]
ᐳ: 97, 99, 107, 109"):::bucket
+ Bucket8("Bucket 8 (nullableBoundary)
Deps: 89, 541, 542, 547, 59, 11, 120, 64, 76
ROOT PgSelectSingle{7}ᐸfunc_out_complex_setofᐳ[89]
1:
ᐳ: 90, 543, 548, 544, 545, 549, 550
2: PgSelectRows[98], PgSelectRows[108]
ᐳ: 97, 99, 107, 109"):::bucket
classDef bucket8 stroke:#dda0dd
- class Bucket8,PgClassExpression90,First97,PgSelectRows98,PgSelectSingle99,First107,PgSelectRows108,PgSelectSingle109,RemapKeys539,List540,Object541,RemapKeys544,List545,Object546 bucket8
+ class Bucket8,PgClassExpression90,First97,PgSelectRows98,PgSelectSingle99,First107,PgSelectRows108,PgSelectSingle109,RemapKeys543,List544,Object545,RemapKeys548,List549,Object550 bucket8
Bucket9("Bucket 9 (nullableBoundary)
Deps: 99
ROOT PgSelectSingle{8}ᐸfrmcdc_compoundTypeᐳ[99]"):::bucket
classDef bucket9 stroke:#ff0000
class Bucket9,PgClassExpression100,PgClassExpression101,PgClassExpression102 bucket9
@@ -895,18 +905,18 @@ graph TD
Bucket31("Bucket 31 (listItem)
ROOT __Item{31}ᐸ257ᐳ[258]"):::bucket
classDef bucket31 stroke:#a52a2a
class Bucket31,__Item258,PgSelectSingle259,PgClassExpression260 bucket31
- Bucket32("Bucket 32 (nullableBoundary)
Deps: 271, 59, 11, 573, 574, 318, 64, 76
ROOT PgSelectSingleᐸpersonᐳ[271]
1:
ᐳ: 273, 276, 279, 359, 371, 274, 275, 284, 331, 340, 364, 375
2: 280, 329, 338, 362, 373
3: 286, 333, 342, 366, 377
ᐳ: 285, 287, 332, 334, 341, 343, 365, 367, 376, 378"):::bucket
+ Bucket32("Bucket 32 (nullableBoundary)
Deps: 271, 59, 11, 581, 582, 64, 76, 318
ROOT PgSelectSingleᐸpersonᐳ[271]
1:
ᐳ: 273, 276, 279, 359, 371, 274, 275, 284, 331, 340, 364, 375
2: 280, 329, 338, 362, 373
3: 286, 333, 342, 366, 377
ᐳ: 285, 287, 332, 334, 341, 343, 365, 367, 376, 378"):::bucket
classDef bucket32 stroke:#ff00ff
class Bucket32,PgClassExpression273,List274,Lambda275,PgClassExpression276,PgClassExpression279,PgSelect280,PgFromExpression284,First285,PgSelectRows286,PgSelectSingle287,PgSelect329,PgFromExpression331,First332,PgSelectRows333,PgSelectSingle334,PgSelect338,PgFromExpression340,First341,PgSelectRows342,PgSelectSingle343,PgClassExpression359,PgSelect362,PgFromExpression364,First365,PgSelectRows366,PgSelectSingle367,PgClassExpression371,PgSelect373,PgFromExpression375,First376,PgSelectRows377,PgSelectSingle378 bucket32
- Bucket33("Bucket 33 (nullableBoundary)
Deps: 287, 11, 59, 318, 64, 76
ROOT PgSelectSingle{32}ᐸperson_computed_complexᐳ[287]
1:
ᐳ: 288, 289, 301, 294, 304
2: PgSelect[290], PgSelect[302]
3: PgSelectRows[296], PgSelectRows[306]
ᐳ: 295, 297, 305, 307"):::bucket
+ Bucket33("Bucket 33 (nullableBoundary)
Deps: 287, 11, 64, 59, 76, 318
ROOT PgSelectSingle{32}ᐸperson_computed_complexᐳ[287]
1: PgSelectInlineApply[551]
ᐳ: 288, 289, 301, 294, 304
2: PgSelect[290], PgSelect[302]
3: PgSelectRows[296], PgSelectRows[306]
ᐳ: 295, 297, 305, 307"):::bucket
classDef bucket33 stroke:#f5deb3
- class Bucket33,PgClassExpression288,PgClassExpression289,PgSelect290,PgFromExpression294,First295,PgSelectRows296,PgSelectSingle297,PgClassExpression301,PgSelect302,PgFromExpression304,First305,PgSelectRows306,PgSelectSingle307 bucket33
+ class Bucket33,PgClassExpression288,PgClassExpression289,PgSelect290,PgFromExpression294,First295,PgSelectRows296,PgSelectSingle297,PgClassExpression301,PgSelect302,PgFromExpression304,First305,PgSelectRows306,PgSelectSingle307,PgSelectInlineApply551 bucket33
Bucket34("Bucket 34 (nullableBoundary)
Deps: 297
ROOT PgSelectSingle{33}ᐸfrmcdc_compoundTypeᐳ[297]"):::bucket
classDef bucket34 stroke:#696969
class Bucket34,PgClassExpression298,PgClassExpression299,PgClassExpression300 bucket34
- Bucket35("Bucket 35 (nullableBoundary)
Deps: 307, 59, 11, 318, 64, 76
ROOT PgSelectSingle{33}ᐸpersonᐳ[307]
1:
ᐳ: 309, 312, 310, 311
2: PgSelect[320]
3: PgSelectRows[321]"):::bucket
+ Bucket35("Bucket 35 (nullableBoundary)
Deps: 307, 59, 302, 305, 76, 318
ROOT PgSelectSingle{33}ᐸpersonᐳ[307]
1:
ᐳ: 309, 312, 552, 310, 311, 553, 554
2: PgSelectRows[321]"):::bucket
classDef bucket35 stroke:#00bfff
- class Bucket35,PgClassExpression309,List310,Lambda311,PgClassExpression312,PgSelect320,PgSelectRows321 bucket35
+ class Bucket35,PgClassExpression309,List310,Lambda311,PgClassExpression312,PgSelectRows321,Access552,List553,Lambda554 bucket35
Bucket36("Bucket 36 (listItem)
Deps: 76
ROOT __Item{36}ᐸ321ᐳ[322]"):::bucket
classDef bucket36 stroke:#7f007f
class Bucket36,__Item322,PgSelectSingle323 bucket36
@@ -928,45 +938,45 @@ graph TD
Bucket42("Bucket 42 (nullableBoundary)
Deps: 378
ROOT PgSelectSingle{32}ᐸperson_computed_out_outᐳ[378]"):::bucket
classDef bucket42 stroke:#dda0dd
class Bucket42,PgClassExpression379,PgClassExpression380 bucket42
- Bucket43("Bucket 43 (nullableBoundary)
Deps: 389, 11, 548, 538, 554
ROOT PgSelectSingleᐸquery_output_two_rowsᐳ[389]
1:
ᐳ: 390, 426, 453, 395, 429
2: PgSelect[391], PgSelect[427]
3: PgSelectRows[397], PgSelectRows[431]
ᐳ: 396, 398, 430, 432"):::bucket
+ Bucket43("Bucket 43 (nullableBoundary)
Deps: 389, 11, 556, 542, 562
ROOT PgSelectSingleᐸquery_output_two_rowsᐳ[389]
1:
ᐳ: 390, 426, 453, 395, 429
2: PgSelect[391], PgSelect[427]
3: PgSelectRows[397], PgSelectRows[431]
ᐳ: 396, 398, 430, 432"):::bucket
classDef bucket43 stroke:#ff0000
class Bucket43,PgClassExpression390,PgSelect391,PgFromExpression395,First396,PgSelectRows397,PgSelectSingle398,PgClassExpression426,PgSelect427,PgFromExpression429,First430,PgSelectRows431,PgSelectSingle432,PgClassExpression453 bucket43
- Bucket44("Bucket 44 (nullableBoundary)
Deps: 398, 11, 548, 538
ROOT PgSelectSingle{43}ᐸleft_armᐳ[398]
1: PgSelectInlineApply[547]
ᐳ: 399, 400, 401, 402
2: PgSelect[403]
3: PgSelectRows[408]
ᐳ: First[407], PgSelectSingle[409]"):::bucket
+ Bucket44("Bucket 44 (nullableBoundary)
Deps: 398, 11, 556, 542
ROOT PgSelectSingle{43}ᐸleft_armᐳ[398]
1: PgSelectInlineApply[555]
ᐳ: 399, 400, 401, 402
2: PgSelect[403]
3: PgSelectRows[408]
ᐳ: First[407], PgSelectSingle[409]"):::bucket
classDef bucket44 stroke:#ffff00
- class Bucket44,PgClassExpression399,PgClassExpression400,PgClassExpression401,PgClassExpression402,PgSelect403,First407,PgSelectRows408,PgSelectSingle409,PgSelectInlineApply547 bucket44
- Bucket45("Bucket 45 (nullableBoundary)
Deps: 409, 548, 538
ROOT PgSelectSingle{44}ᐸpersonᐳ[409]
1:
ᐳ: 410, 550, 551, 552
2: PgSelectRows[417]
ᐳ: First[416], PgSelectSingle[418]"):::bucket
+ class Bucket44,PgClassExpression399,PgClassExpression400,PgClassExpression401,PgClassExpression402,PgSelect403,First407,PgSelectRows408,PgSelectSingle409,PgSelectInlineApply555 bucket44
+ Bucket45("Bucket 45 (nullableBoundary)
Deps: 409, 556, 542
ROOT PgSelectSingle{44}ᐸpersonᐳ[409]
1:
ᐳ: 410, 558, 559, 560
2: PgSelectRows[417]
ᐳ: First[416], PgSelectSingle[418]"):::bucket
classDef bucket45 stroke:#00ffff
- class Bucket45,PgClassExpression410,First416,PgSelectRows417,PgSelectSingle418,RemapKeys550,List551,Object552 bucket45
+ class Bucket45,PgClassExpression410,First416,PgSelectRows417,PgSelectSingle418,RemapKeys558,List559,Object560 bucket45
Bucket46("Bucket 46 (nullableBoundary)
Deps: 418
ROOT PgSelectSingle{45}ᐸperson_secretᐳ[418]"):::bucket
classDef bucket46 stroke:#4169e1
class Bucket46,PgClassExpression419 bucket46
- Bucket47("Bucket 47 (nullableBoundary)
Deps: 432, 11, 554, 538
ROOT PgSelectSingle{43}ᐸpostᐳ[432]
1: PgSelectInlineApply[553]
ᐳ: 433, 434, 435
2: PgSelect[436]
3: PgSelectRows[441]
ᐳ: First[440], PgSelectSingle[442]"):::bucket
+ Bucket47("Bucket 47 (nullableBoundary)
Deps: 432, 11, 562, 542
ROOT PgSelectSingle{43}ᐸpostᐳ[432]
1: PgSelectInlineApply[561]
ᐳ: 433, 434, 435
2: PgSelect[436]
3: PgSelectRows[441]
ᐳ: First[440], PgSelectSingle[442]"):::bucket
classDef bucket47 stroke:#3cb371
- class Bucket47,PgClassExpression433,PgClassExpression434,PgClassExpression435,PgSelect436,First440,PgSelectRows441,PgSelectSingle442,PgSelectInlineApply553 bucket47
- Bucket48("Bucket 48 (nullableBoundary)
Deps: 442, 554, 538
ROOT PgSelectSingle{47}ᐸpersonᐳ[442]
1:
ᐳ: 443, 556, 557, 558
2: PgSelectRows[450]
ᐳ: First[449], PgSelectSingle[451]"):::bucket
+ class Bucket47,PgClassExpression433,PgClassExpression434,PgClassExpression435,PgSelect436,First440,PgSelectRows441,PgSelectSingle442,PgSelectInlineApply561 bucket47
+ Bucket48("Bucket 48 (nullableBoundary)
Deps: 442, 562, 542
ROOT PgSelectSingle{47}ᐸpersonᐳ[442]
1:
ᐳ: 443, 564, 565, 566
2: PgSelectRows[450]
ᐳ: First[449], PgSelectSingle[451]"):::bucket
classDef bucket48 stroke:#a52a2a
- class Bucket48,PgClassExpression443,First449,PgSelectRows450,PgSelectSingle451,RemapKeys556,List557,Object558 bucket48
+ class Bucket48,PgClassExpression443,First449,PgSelectRows450,PgSelectSingle451,RemapKeys564,List565,Object566 bucket48
Bucket49("Bucket 49 (nullableBoundary)
Deps: 451
ROOT PgSelectSingle{48}ᐸperson_secretᐳ[451]"):::bucket
classDef bucket49 stroke:#ff00ff
class Bucket49,PgClassExpression452 bucket49
- Bucket50("Bucket 50 (nullableBoundary)
Deps: 462, 11, 560, 538, 566
ROOT PgSelectSingleᐸquery_output_two_rowsᐳ[462]
1:
ᐳ: 463, 499, 526, 468, 502
2: PgSelect[464], PgSelect[500]
3: PgSelectRows[470], PgSelectRows[504]
ᐳ: 469, 471, 503, 505"):::bucket
+ Bucket50("Bucket 50 (nullableBoundary)
Deps: 462, 11, 568, 542, 574
ROOT PgSelectSingleᐸquery_output_two_rowsᐳ[462]
1:
ᐳ: 463, 499, 526, 468, 502
2: PgSelect[464], PgSelect[500]
3: PgSelectRows[470], PgSelectRows[504]
ᐳ: 469, 471, 503, 505"):::bucket
classDef bucket50 stroke:#f5deb3
class Bucket50,PgClassExpression463,PgSelect464,PgFromExpression468,First469,PgSelectRows470,PgSelectSingle471,PgClassExpression499,PgSelect500,PgFromExpression502,First503,PgSelectRows504,PgSelectSingle505,PgClassExpression526 bucket50
- Bucket51("Bucket 51 (nullableBoundary)
Deps: 471, 11, 560, 538
ROOT PgSelectSingle{50}ᐸleft_armᐳ[471]
1: PgSelectInlineApply[559]
ᐳ: 472, 473, 474, 475
2: PgSelect[476]
3: PgSelectRows[481]
ᐳ: First[480], PgSelectSingle[482]"):::bucket
+ Bucket51("Bucket 51 (nullableBoundary)
Deps: 471, 11, 568, 542
ROOT PgSelectSingle{50}ᐸleft_armᐳ[471]
1: PgSelectInlineApply[567]
ᐳ: 472, 473, 474, 475
2: PgSelect[476]
3: PgSelectRows[481]
ᐳ: First[480], PgSelectSingle[482]"):::bucket
classDef bucket51 stroke:#696969
- class Bucket51,PgClassExpression472,PgClassExpression473,PgClassExpression474,PgClassExpression475,PgSelect476,First480,PgSelectRows481,PgSelectSingle482,PgSelectInlineApply559 bucket51
- Bucket52("Bucket 52 (nullableBoundary)
Deps: 482, 560, 538
ROOT PgSelectSingle{51}ᐸpersonᐳ[482]
1:
ᐳ: 483, 562, 563, 564
2: PgSelectRows[490]
ᐳ: First[489], PgSelectSingle[491]"):::bucket
+ class Bucket51,PgClassExpression472,PgClassExpression473,PgClassExpression474,PgClassExpression475,PgSelect476,First480,PgSelectRows481,PgSelectSingle482,PgSelectInlineApply567 bucket51
+ Bucket52("Bucket 52 (nullableBoundary)
Deps: 482, 568, 542
ROOT PgSelectSingle{51}ᐸpersonᐳ[482]
1:
ᐳ: 483, 570, 571, 572
2: PgSelectRows[490]
ᐳ: First[489], PgSelectSingle[491]"):::bucket
classDef bucket52 stroke:#00bfff
- class Bucket52,PgClassExpression483,First489,PgSelectRows490,PgSelectSingle491,RemapKeys562,List563,Object564 bucket52
+ class Bucket52,PgClassExpression483,First489,PgSelectRows490,PgSelectSingle491,RemapKeys570,List571,Object572 bucket52
Bucket53("Bucket 53 (nullableBoundary)
Deps: 491
ROOT PgSelectSingle{52}ᐸperson_secretᐳ[491]"):::bucket
classDef bucket53 stroke:#7f007f
class Bucket53,PgClassExpression492 bucket53
- Bucket54("Bucket 54 (nullableBoundary)
Deps: 505, 11, 566, 538
ROOT PgSelectSingle{50}ᐸpostᐳ[505]
1: PgSelectInlineApply[565]
ᐳ: 506, 507, 508
2: PgSelect[509]
3: PgSelectRows[514]
ᐳ: First[513], PgSelectSingle[515]"):::bucket
+ Bucket54("Bucket 54 (nullableBoundary)
Deps: 505, 11, 574, 542
ROOT PgSelectSingle{50}ᐸpostᐳ[505]
1: PgSelectInlineApply[573]
ᐳ: 506, 507, 508
2: PgSelect[509]
3: PgSelectRows[514]
ᐳ: First[513], PgSelectSingle[515]"):::bucket
classDef bucket54 stroke:#ffa500
- class Bucket54,PgClassExpression506,PgClassExpression507,PgClassExpression508,PgSelect509,First513,PgSelectRows514,PgSelectSingle515,PgSelectInlineApply565 bucket54
- Bucket55("Bucket 55 (nullableBoundary)
Deps: 515, 566, 538
ROOT PgSelectSingle{54}ᐸpersonᐳ[515]
1:
ᐳ: 516, 568, 569, 570
2: PgSelectRows[523]
ᐳ: First[522], PgSelectSingle[524]"):::bucket
+ class Bucket54,PgClassExpression506,PgClassExpression507,PgClassExpression508,PgSelect509,First513,PgSelectRows514,PgSelectSingle515,PgSelectInlineApply573 bucket54
+ Bucket55("Bucket 55 (nullableBoundary)
Deps: 515, 574, 542
ROOT PgSelectSingle{54}ᐸpersonᐳ[515]
1:
ᐳ: 516, 576, 577, 578
2: PgSelectRows[523]
ᐳ: First[522], PgSelectSingle[524]"):::bucket
classDef bucket55 stroke:#0000ff
- class Bucket55,PgClassExpression516,First522,PgSelectRows523,PgSelectSingle524,RemapKeys568,List569,Object570 bucket55
+ class Bucket55,PgClassExpression516,First522,PgSelectRows523,PgSelectSingle524,RemapKeys576,List577,Object578 bucket55
Bucket56("Bucket 56 (nullableBoundary)
Deps: 524
ROOT PgSelectSingle{55}ᐸperson_secretᐳ[524]"):::bucket
classDef bucket56 stroke:#7fff00
class Bucket56,PgClassExpression525 bucket56
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.sql b/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.sql
index f253a4951..45d710f14 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/function-return-types.sql
@@ -113,7 +113,17 @@ from (select ($1::"c"."compound_type").*) as __frmcdc_compound_type__;
select
__person__."id"::text as "0",
- __person__."person_full_name" as "1"
+ __person__."person_full_name" as "1",
+ array(
+ select array[
+ __post__."id"::text
+ ]::text[]
+ from "a"."post" as __post__
+ where (
+ __post__."author_id" = __person__."id"
+ )
+ order by __post__."id" asc
+ )::text as "2"
from (select ($1::"c"."person").*) as __person__;
select
@@ -230,14 +240,6 @@ select
__post__."author_id"::text as "2"
from (select ($1::"a"."post").*) as __post__;
-select
- __post__."id"::text as "0"
-from "a"."post" as __post__
-where (
- __post__."author_id" = $1::"int4"
-)
-order by __post__."id" asc;
-
select
__func_out_complex_setof__."x"::text as "0",
__frmcdc_compound_type__."a"::text as "1",
@@ -256,6 +258,11 @@ on TRUE
left outer join lateral (select (__func_out_complex_setof__."z").*) as __person__
on TRUE;
+select
+ __person__."id"::text as "0",
+ __person__."person_full_name" as "1"
+from (select ($1::"c"."person").*) as __person__;
+
select
__person__."person_full_name" as "0",
__person_secret__."sekrit" as "1",
@@ -282,4 +289,12 @@ on (
))
where (
__person__."id" = $1::"int4"
-);
\ No newline at end of file
+);
+
+select
+ __post__."id"::text as "0"
+from "a"."post" as __post__
+where (
+ __post__."author_id" = $1::"int4"
+)
+order by __post__."id" asc;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.mermaid
index c98c2faf1..966f71688 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.mermaid
@@ -11,17 +11,18 @@ graph TD
%% plan dependencies
PgSelect7[["PgSelect[7∈0] ➊
ᐸmachineᐳ"]]:::plan
Object10{{"Object[10∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Constant80{{"Constant[80∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant84{{"Constant[84∈0] ➊
ᐸ1ᐳ"}}:::plan
PgSelectInlineApply74["PgSelectInlineApply[74∈0] ➊"]:::plan
- Object10 & Constant80 & PgSelectInlineApply74 --> PgSelect7
+ Object10 & Constant84 & PgSelectInlineApply74 --> PgSelect7
+ PgSelect26[["PgSelect[26∈0] ➊
ᐸbuildingᐳ"]]:::plan
+ Constant85{{"Constant[85∈0] ➊
ᐸ2ᐳ"}}:::plan
+ PgSelectInlineApply80["PgSelectInlineApply[80∈0] ➊"]:::plan
+ Object10 & Constant85 & PgSelectInlineApply80 --> PgSelect26
Connection38{{"Connection[38∈0] ➊
ᐸ34ᐳ"}}:::plan
Connection51{{"Connection[51∈0] ➊
ᐸ49ᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access9{{"Access[9∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access8 & Access9 --> Object10
- PgSelect26[["PgSelect[26∈0] ➊
ᐸbuildingᐳ"]]:::plan
- Constant81{{"Constant[81∈0] ➊
ᐸ2ᐳ"}}:::plan
- Object10 & Constant81 --> PgSelect26
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access8
__Value2 --> Access9
@@ -58,14 +59,16 @@ graph TD
PgSelectSingle21 --> PgClassExpression22
PgClassExpression23{{"PgClassExpression[23∈2] ➊
ᐸ__building...nstructor”ᐳ"}}:::plan
PgSelectSingle21 --> PgClassExpression23
- PgSelect40[["PgSelect[40∈3] ➊
ᐸmachineᐳ"]]:::plan
- PgClassExpression33{{"PgClassExpression[33∈3] ➊
ᐸ__building...nstructor”ᐳ"}}:::plan
- Object10 & PgClassExpression33 & Connection38 --> PgSelect40
- PgSelectSingle30 --> PgClassExpression33
+ List82{{"List[82∈3] ➊
ᐸ28,81ᐳ"}}:::plan
+ Access81{{"Access[81∈3] ➊
ᐸ26.m.subqueryDetailsFor40ᐳ"}}:::plan
+ First28 & Access81 --> List82
PgSelectRows41[["PgSelectRows[41∈3] ➊"]]:::plan
- PgSelect40 --> PgSelectRows41
+ Lambda83{{"Lambda[83∈3] ➊"}}:::plan
+ Lambda83 --> PgSelectRows41
PgClassExpression47{{"PgClassExpression[47∈3] ➊
ᐸ__building__.”name”ᐳ"}}:::plan
PgSelectSingle30 --> PgClassExpression47
+ PgSelect26 --> Access81
+ List82 --> Lambda83
__Item42[/"__Item[42∈4]
ᐸ41ᐳ"\]:::itemplan
PgSelectRows41 ==> __Item42
PgSelectSingle43{{"PgSelectSingle[43∈4]
ᐸmachineᐳ"}}:::plan
@@ -114,18 +117,18 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/js-reserved-keywords"
- Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[74]
ᐳ: 8, 9, 31, 75, 76, 80, 81, 10, 38, 51
2: PgSelect[7], PgSelect[26]
3: PgSelectRows[12], PgSelectRows[29]
ᐳ: 11, 13, 28, 30"):::bucket
+ Bucket0("Bucket 0 (root)
1: PgSelectInlineApply[74]
ᐳ: 8, 9, 31, 75, 76, 84, 85, 10, 38, 51
2: PgSelect[7], PgSelectInlineApply[80]
3: PgSelectRows[12], PgSelect[26]
ᐳ: First[11], PgSelectSingle[13]
4: PgSelectRows[29]
ᐳ: First[28], PgSelectSingle[30]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,First11,PgSelectRows12,PgSelectSingle13,PgSelect26,First28,PgSelectRows29,PgSelectSingle30,Connection38,Connection51,PgSelectInlineApply74,Constant75,Constant76,Constant80,Constant81 bucket0
+ class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,First11,PgSelectRows12,PgSelectSingle13,PgSelect26,First28,PgSelectRows29,PgSelectSingle30,Connection38,Connection51,PgSelectInlineApply74,Constant75,Constant76,PgSelectInlineApply80,Constant84,Constant85 bucket0
Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 75, 76
ROOT PgSelectSingleᐸmachineᐳ[13]
1:
ᐳ: 14, 24, 78, 79
2: PgSelectRows[20]
ᐳ: First[19], PgSelectSingle[21]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,PgClassExpression14,First19,PgSelectRows20,PgSelectSingle21,PgClassExpression24,List78,Object79 bucket1
Bucket2("Bucket 2 (nullableBoundary)
Deps: 21
ROOT PgSelectSingle{1}ᐸbuildingᐳ[21]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,PgClassExpression22,PgClassExpression23 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 30, 10, 38, 31
ROOT PgSelectSingleᐸbuildingᐳ[30]
1:
ᐳ: 33, 47
2: PgSelect[40]
3: PgSelectRows[41]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 30, 26, 28, 38
ROOT PgSelectSingleᐸbuildingᐳ[30]
1:
ᐳ: 47, 81, 82, 83
2: PgSelectRows[41]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression33,PgSelect40,PgSelectRows41,PgClassExpression47 bucket3
+ class Bucket3,PgSelectRows41,PgClassExpression47,Access81,List82,Lambda83 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ41ᐳ[42]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item42,PgSelectSingle43 bucket4
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.sql b/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.sql
index 6f3759d25..5371fd907 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/js-reserved-keywords.sql
@@ -15,24 +15,25 @@ where (
);
select
- __building__."constructor" as "0",
- __building__."name" as "1",
- __building__."id"::text as "2"
+ __building__."name" as "0",
+ __building__."id"::text as "1",
+ array(
+ select array[
+ __machine__."id"::text,
+ __machine__."constructor",
+ __machine__."input"
+ ]::text[]
+ from "js_reserved"."machine" as __machine__
+ where (
+ __machine__."constructor" = __building__."constructor"
+ )
+ order by __machine__."id" asc
+ )::text as "2"
from "js_reserved"."building" as __building__
where (
__building__."id" = $1::"int4"
);
-select
- __machine__."id"::text as "0",
- __machine__."constructor" as "1",
- __machine__."input" as "2"
-from "js_reserved"."machine" as __machine__
-where (
- __machine__."constructor" = $1::"text"
-)
-order by __machine__."id" asc;
-
select
__relational_items__."id"::text as "0",
__relational_items__."constructor" as "1",
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.mermaid
index 3fa250d0b..fd83eb7da 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.mermaid
@@ -10,340 +10,346 @@ graph TD
%% plan dependencies
Connection13{{"Connection[13∈0] ➊
ᐸ9ᐳ"}}:::plan
- Constant445{{"Constant[445∈0] ➊
ᐸ1ᐳ"}}:::plan
- Constant445 --> Connection13
+ Constant449{{"Constant[449∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant449 --> Connection13
Connection26{{"Connection[26∈0] ➊
ᐸ22ᐳ"}}:::plan
- Constant445 --> Connection26
+ Constant449 --> Connection26
Object12{{"Object[12∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access11{{"Access[11∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access10 & Access11 --> Object12
PgFromExpression35{{"PgFromExpression[35∈0] ➊"}}:::plan
- Constant445 --> PgFromExpression35
+ Constant449 --> PgFromExpression35
PgFromExpression39{{"PgFromExpression[39∈0] ➊"}}:::plan
- Constant446{{"Constant[446∈0] ➊
ᐸ2ᐳ"}}:::plan
- Constant446 --> PgFromExpression39
+ Constant450{{"Constant[450∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Constant450 --> PgFromExpression39
PgFromExpression43{{"PgFromExpression[43∈0] ➊"}}:::plan
- Constant447{{"Constant[447∈0] ➊
ᐸ3ᐳ"}}:::plan
- Constant447 --> PgFromExpression43
+ Constant451{{"Constant[451∈0] ➊
ᐸ3ᐳ"}}:::plan
+ Constant451 --> PgFromExpression43
PgFromExpression47{{"PgFromExpression[47∈0] ➊"}}:::plan
- Constant448{{"Constant[448∈0] ➊
ᐸ4ᐳ"}}:::plan
- Constant448 --> PgFromExpression47
+ Constant452{{"Constant[452∈0] ➊
ᐸ4ᐳ"}}:::plan
+ Constant452 --> PgFromExpression47
PgFromExpression51{{"PgFromExpression[51∈0] ➊"}}:::plan
- Constant449{{"Constant[449∈0] ➊
ᐸ5ᐳ"}}:::plan
- Constant449 --> PgFromExpression51
+ Constant453{{"Constant[453∈0] ➊
ᐸ5ᐳ"}}:::plan
+ Constant453 --> PgFromExpression51
PgFromExpression55{{"PgFromExpression[55∈0] ➊"}}:::plan
- Constant450{{"Constant[450∈0] ➊
ᐸ6ᐳ"}}:::plan
- Constant450 --> PgFromExpression55
+ Constant454{{"Constant[454∈0] ➊
ᐸ6ᐳ"}}:::plan
+ Constant454 --> PgFromExpression55
PgFromExpression59{{"PgFromExpression[59∈0] ➊"}}:::plan
- Constant451{{"Constant[451∈0] ➊
ᐸ7ᐳ"}}:::plan
- Constant451 --> PgFromExpression59
+ Constant455{{"Constant[455∈0] ➊
ᐸ7ᐳ"}}:::plan
+ Constant455 --> PgFromExpression59
PgFromExpression63{{"PgFromExpression[63∈0] ➊"}}:::plan
- Constant452{{"Constant[452∈0] ➊
ᐸ8ᐳ"}}:::plan
- Constant452 --> PgFromExpression63
+ Constant456{{"Constant[456∈0] ➊
ᐸ8ᐳ"}}:::plan
+ Constant456 --> PgFromExpression63
PgFromExpression67{{"PgFromExpression[67∈0] ➊"}}:::plan
- Constant453{{"Constant[453∈0] ➊
ᐸ9ᐳ"}}:::plan
- Constant453 --> PgFromExpression67
+ Constant457{{"Constant[457∈0] ➊
ᐸ9ᐳ"}}:::plan
+ Constant457 --> PgFromExpression67
PgFromExpression71{{"PgFromExpression[71∈0] ➊"}}:::plan
- Constant454{{"Constant[454∈0] ➊
ᐸ10ᐳ"}}:::plan
- Constant454 --> PgFromExpression71
+ Constant458{{"Constant[458∈0] ➊
ᐸ10ᐳ"}}:::plan
+ Constant458 --> PgFromExpression71
PgFromExpression75{{"PgFromExpression[75∈0] ➊"}}:::plan
- Constant455{{"Constant[455∈0] ➊
ᐸ11ᐳ"}}:::plan
- Constant455 --> PgFromExpression75
+ Constant459{{"Constant[459∈0] ➊
ᐸ11ᐳ"}}:::plan
+ Constant459 --> PgFromExpression75
PgFromExpression79{{"PgFromExpression[79∈0] ➊"}}:::plan
- Constant456{{"Constant[456∈0] ➊
ᐸ12ᐳ"}}:::plan
- Constant456 --> PgFromExpression79
+ Constant460{{"Constant[460∈0] ➊
ᐸ12ᐳ"}}:::plan
+ Constant460 --> PgFromExpression79
PgFromExpression83{{"PgFromExpression[83∈0] ➊"}}:::plan
- Constant457{{"Constant[457∈0] ➊
ᐸ13ᐳ"}}:::plan
- Constant457 --> PgFromExpression83
+ Constant461{{"Constant[461∈0] ➊
ᐸ13ᐳ"}}:::plan
+ Constant461 --> PgFromExpression83
PgFromExpression87{{"PgFromExpression[87∈0] ➊"}}:::plan
- Constant458{{"Constant[458∈0] ➊
ᐸ14ᐳ"}}:::plan
- Constant458 --> PgFromExpression87
+ Constant462{{"Constant[462∈0] ➊
ᐸ14ᐳ"}}:::plan
+ Constant462 --> PgFromExpression87
PgFromExpression91{{"PgFromExpression[91∈0] ➊"}}:::plan
- Constant459{{"Constant[459∈0] ➊
ᐸ15ᐳ"}}:::plan
- Constant459 --> PgFromExpression91
+ Constant463{{"Constant[463∈0] ➊
ᐸ15ᐳ"}}:::plan
+ Constant463 --> PgFromExpression91
PgFromExpression95{{"PgFromExpression[95∈0] ➊"}}:::plan
- Constant460{{"Constant[460∈0] ➊
ᐸ16ᐳ"}}:::plan
- Constant460 --> PgFromExpression95
+ Constant464{{"Constant[464∈0] ➊
ᐸ16ᐳ"}}:::plan
+ Constant464 --> PgFromExpression95
PgFromExpression99{{"PgFromExpression[99∈0] ➊"}}:::plan
- Constant461{{"Constant[461∈0] ➊
ᐸ17ᐳ"}}:::plan
- Constant461 --> PgFromExpression99
+ Constant465{{"Constant[465∈0] ➊
ᐸ17ᐳ"}}:::plan
+ Constant465 --> PgFromExpression99
PgFromExpression103{{"PgFromExpression[103∈0] ➊"}}:::plan
- Constant462{{"Constant[462∈0] ➊
ᐸ18ᐳ"}}:::plan
- Constant462 --> PgFromExpression103
+ Constant466{{"Constant[466∈0] ➊
ᐸ18ᐳ"}}:::plan
+ Constant466 --> PgFromExpression103
PgFromExpression107{{"PgFromExpression[107∈0] ➊"}}:::plan
- Constant463{{"Constant[463∈0] ➊
ᐸ19ᐳ"}}:::plan
- Constant463 --> PgFromExpression107
+ Constant467{{"Constant[467∈0] ➊
ᐸ19ᐳ"}}:::plan
+ Constant467 --> PgFromExpression107
PgFromExpression111{{"PgFromExpression[111∈0] ➊"}}:::plan
- Constant464{{"Constant[464∈0] ➊
ᐸ20ᐳ"}}:::plan
- Constant464 --> PgFromExpression111
+ Constant468{{"Constant[468∈0] ➊
ᐸ20ᐳ"}}:::plan
+ Constant468 --> PgFromExpression111
PgFromExpression115{{"PgFromExpression[115∈0] ➊"}}:::plan
- Constant465{{"Constant[465∈0] ➊
ᐸ21ᐳ"}}:::plan
- Constant465 --> PgFromExpression115
+ Constant469{{"Constant[469∈0] ➊
ᐸ21ᐳ"}}:::plan
+ Constant469 --> PgFromExpression115
PgFromExpression119{{"PgFromExpression[119∈0] ➊"}}:::plan
- Constant466{{"Constant[466∈0] ➊
ᐸ22ᐳ"}}:::plan
- Constant466 --> PgFromExpression119
+ Constant470{{"Constant[470∈0] ➊
ᐸ22ᐳ"}}:::plan
+ Constant470 --> PgFromExpression119
PgFromExpression123{{"PgFromExpression[123∈0] ➊"}}:::plan
- Constant467{{"Constant[467∈0] ➊
ᐸ23ᐳ"}}:::plan
- Constant467 --> PgFromExpression123
+ Constant471{{"Constant[471∈0] ➊
ᐸ23ᐳ"}}:::plan
+ Constant471 --> PgFromExpression123
PgFromExpression127{{"PgFromExpression[127∈0] ➊"}}:::plan
- Constant468{{"Constant[468∈0] ➊
ᐸ24ᐳ"}}:::plan
- Constant468 --> PgFromExpression127
+ Constant472{{"Constant[472∈0] ➊
ᐸ24ᐳ"}}:::plan
+ Constant472 --> PgFromExpression127
PgFromExpression131{{"PgFromExpression[131∈0] ➊"}}:::plan
- Constant469{{"Constant[469∈0] ➊
ᐸ25ᐳ"}}:::plan
- Constant469 --> PgFromExpression131
+ Constant473{{"Constant[473∈0] ➊
ᐸ25ᐳ"}}:::plan
+ Constant473 --> PgFromExpression131
PgFromExpression135{{"PgFromExpression[135∈0] ➊"}}:::plan
- Constant470{{"Constant[470∈0] ➊
ᐸ26ᐳ"}}:::plan
- Constant470 --> PgFromExpression135
+ Constant474{{"Constant[474∈0] ➊
ᐸ26ᐳ"}}:::plan
+ Constant474 --> PgFromExpression135
PgFromExpression139{{"PgFromExpression[139∈0] ➊"}}:::plan
- Constant471{{"Constant[471∈0] ➊
ᐸ27ᐳ"}}:::plan
- Constant471 --> PgFromExpression139
+ Constant475{{"Constant[475∈0] ➊
ᐸ27ᐳ"}}:::plan
+ Constant475 --> PgFromExpression139
PgFromExpression143{{"PgFromExpression[143∈0] ➊"}}:::plan
- Constant472{{"Constant[472∈0] ➊
ᐸ28ᐳ"}}:::plan
- Constant472 --> PgFromExpression143
+ Constant476{{"Constant[476∈0] ➊
ᐸ28ᐳ"}}:::plan
+ Constant476 --> PgFromExpression143
PgFromExpression147{{"PgFromExpression[147∈0] ➊"}}:::plan
- Constant473{{"Constant[473∈0] ➊
ᐸ29ᐳ"}}:::plan
- Constant473 --> PgFromExpression147
+ Constant477{{"Constant[477∈0] ➊
ᐸ29ᐳ"}}:::plan
+ Constant477 --> PgFromExpression147
PgFromExpression151{{"PgFromExpression[151∈0] ➊"}}:::plan
- Constant474{{"Constant[474∈0] ➊
ᐸ30ᐳ"}}:::plan
- Constant474 --> PgFromExpression151
+ Constant478{{"Constant[478∈0] ➊
ᐸ30ᐳ"}}:::plan
+ Constant478 --> PgFromExpression151
PgFromExpression155{{"PgFromExpression[155∈0] ➊"}}:::plan
- Constant475{{"Constant[475∈0] ➊
ᐸ31ᐳ"}}:::plan
- Constant475 --> PgFromExpression155
+ Constant479{{"Constant[479∈0] ➊
ᐸ31ᐳ"}}:::plan
+ Constant479 --> PgFromExpression155
PgFromExpression159{{"PgFromExpression[159∈0] ➊"}}:::plan
- Constant476{{"Constant[476∈0] ➊
ᐸ32ᐳ"}}:::plan
- Constant476 --> PgFromExpression159
+ Constant480{{"Constant[480∈0] ➊
ᐸ32ᐳ"}}:::plan
+ Constant480 --> PgFromExpression159
PgFromExpression163{{"PgFromExpression[163∈0] ➊"}}:::plan
- Constant477{{"Constant[477∈0] ➊
ᐸ33ᐳ"}}:::plan
- Constant477 --> PgFromExpression163
+ Constant481{{"Constant[481∈0] ➊
ᐸ33ᐳ"}}:::plan
+ Constant481 --> PgFromExpression163
PgFromExpression167{{"PgFromExpression[167∈0] ➊"}}:::plan
- Constant478{{"Constant[478∈0] ➊
ᐸ34ᐳ"}}:::plan
- Constant478 --> PgFromExpression167
+ Constant482{{"Constant[482∈0] ➊
ᐸ34ᐳ"}}:::plan
+ Constant482 --> PgFromExpression167
PgFromExpression171{{"PgFromExpression[171∈0] ➊"}}:::plan
- Constant479{{"Constant[479∈0] ➊
ᐸ35ᐳ"}}:::plan
- Constant479 --> PgFromExpression171
+ Constant483{{"Constant[483∈0] ➊
ᐸ35ᐳ"}}:::plan
+ Constant483 --> PgFromExpression171
PgFromExpression175{{"PgFromExpression[175∈0] ➊"}}:::plan
- Constant480{{"Constant[480∈0] ➊
ᐸ36ᐳ"}}:::plan
- Constant480 --> PgFromExpression175
+ Constant484{{"Constant[484∈0] ➊
ᐸ36ᐳ"}}:::plan
+ Constant484 --> PgFromExpression175
PgFromExpression179{{"PgFromExpression[179∈0] ➊"}}:::plan
- Constant481{{"Constant[481∈0] ➊
ᐸ37ᐳ"}}:::plan
- Constant481 --> PgFromExpression179
+ Constant485{{"Constant[485∈0] ➊
ᐸ37ᐳ"}}:::plan
+ Constant485 --> PgFromExpression179
PgFromExpression183{{"PgFromExpression[183∈0] ➊"}}:::plan
- Constant482{{"Constant[482∈0] ➊
ᐸ38ᐳ"}}:::plan
- Constant482 --> PgFromExpression183
+ Constant486{{"Constant[486∈0] ➊
ᐸ38ᐳ"}}:::plan
+ Constant486 --> PgFromExpression183
PgFromExpression187{{"PgFromExpression[187∈0] ➊"}}:::plan
- Constant483{{"Constant[483∈0] ➊
ᐸ39ᐳ"}}:::plan
- Constant483 --> PgFromExpression187
+ Constant487{{"Constant[487∈0] ➊
ᐸ39ᐳ"}}:::plan
+ Constant487 --> PgFromExpression187
PgFromExpression191{{"PgFromExpression[191∈0] ➊"}}:::plan
- Constant484{{"Constant[484∈0] ➊
ᐸ40ᐳ"}}:::plan
- Constant484 --> PgFromExpression191
+ Constant488{{"Constant[488∈0] ➊
ᐸ40ᐳ"}}:::plan
+ Constant488 --> PgFromExpression191
PgFromExpression195{{"PgFromExpression[195∈0] ➊"}}:::plan
- Constant485{{"Constant[485∈0] ➊
ᐸ41ᐳ"}}:::plan
- Constant485 --> PgFromExpression195
+ Constant489{{"Constant[489∈0] ➊
ᐸ41ᐳ"}}:::plan
+ Constant489 --> PgFromExpression195
PgFromExpression199{{"PgFromExpression[199∈0] ➊"}}:::plan
- Constant486{{"Constant[486∈0] ➊
ᐸ42ᐳ"}}:::plan
- Constant486 --> PgFromExpression199
+ Constant490{{"Constant[490∈0] ➊
ᐸ42ᐳ"}}:::plan
+ Constant490 --> PgFromExpression199
PgFromExpression203{{"PgFromExpression[203∈0] ➊"}}:::plan
- Constant487{{"Constant[487∈0] ➊
ᐸ43ᐳ"}}:::plan
- Constant487 --> PgFromExpression203
+ Constant491{{"Constant[491∈0] ➊
ᐸ43ᐳ"}}:::plan
+ Constant491 --> PgFromExpression203
PgFromExpression207{{"PgFromExpression[207∈0] ➊"}}:::plan
- Constant488{{"Constant[488∈0] ➊
ᐸ44ᐳ"}}:::plan
- Constant488 --> PgFromExpression207
+ Constant492{{"Constant[492∈0] ➊
ᐸ44ᐳ"}}:::plan
+ Constant492 --> PgFromExpression207
PgFromExpression211{{"PgFromExpression[211∈0] ➊"}}:::plan
- Constant489{{"Constant[489∈0] ➊
ᐸ45ᐳ"}}:::plan
- Constant489 --> PgFromExpression211
+ Constant493{{"Constant[493∈0] ➊
ᐸ45ᐳ"}}:::plan
+ Constant493 --> PgFromExpression211
PgFromExpression215{{"PgFromExpression[215∈0] ➊"}}:::plan
- Constant490{{"Constant[490∈0] ➊
ᐸ46ᐳ"}}:::plan
- Constant490 --> PgFromExpression215
+ Constant494{{"Constant[494∈0] ➊
ᐸ46ᐳ"}}:::plan
+ Constant494 --> PgFromExpression215
PgFromExpression219{{"PgFromExpression[219∈0] ➊"}}:::plan
- Constant491{{"Constant[491∈0] ➊
ᐸ47ᐳ"}}:::plan
- Constant491 --> PgFromExpression219
+ Constant495{{"Constant[495∈0] ➊
ᐸ47ᐳ"}}:::plan
+ Constant495 --> PgFromExpression219
PgFromExpression223{{"PgFromExpression[223∈0] ➊"}}:::plan
- Constant492{{"Constant[492∈0] ➊
ᐸ48ᐳ"}}:::plan
- Constant492 --> PgFromExpression223
+ Constant496{{"Constant[496∈0] ➊
ᐸ48ᐳ"}}:::plan
+ Constant496 --> PgFromExpression223
PgFromExpression227{{"PgFromExpression[227∈0] ➊"}}:::plan
- Constant493{{"Constant[493∈0] ➊
ᐸ49ᐳ"}}:::plan
- Constant493 --> PgFromExpression227
+ Constant497{{"Constant[497∈0] ➊
ᐸ49ᐳ"}}:::plan
+ Constant497 --> PgFromExpression227
PgFromExpression231{{"PgFromExpression[231∈0] ➊"}}:::plan
- Constant494{{"Constant[494∈0] ➊
ᐸ50ᐳ"}}:::plan
- Constant494 --> PgFromExpression231
+ Constant498{{"Constant[498∈0] ➊
ᐸ50ᐳ"}}:::plan
+ Constant498 --> PgFromExpression231
PgFromExpression235{{"PgFromExpression[235∈0] ➊"}}:::plan
- Constant495{{"Constant[495∈0] ➊
ᐸ51ᐳ"}}:::plan
- Constant495 --> PgFromExpression235
+ Constant499{{"Constant[499∈0] ➊
ᐸ51ᐳ"}}:::plan
+ Constant499 --> PgFromExpression235
PgFromExpression239{{"PgFromExpression[239∈0] ➊"}}:::plan
- Constant496{{"Constant[496∈0] ➊
ᐸ52ᐳ"}}:::plan
- Constant496 --> PgFromExpression239
+ Constant500{{"Constant[500∈0] ➊
ᐸ52ᐳ"}}:::plan
+ Constant500 --> PgFromExpression239
PgFromExpression243{{"PgFromExpression[243∈0] ➊"}}:::plan
- Constant497{{"Constant[497∈0] ➊
ᐸ53ᐳ"}}:::plan
- Constant497 --> PgFromExpression243
+ Constant501{{"Constant[501∈0] ➊
ᐸ53ᐳ"}}:::plan
+ Constant501 --> PgFromExpression243
PgFromExpression247{{"PgFromExpression[247∈0] ➊"}}:::plan
- Constant498{{"Constant[498∈0] ➊
ᐸ54ᐳ"}}:::plan
- Constant498 --> PgFromExpression247
+ Constant502{{"Constant[502∈0] ➊
ᐸ54ᐳ"}}:::plan
+ Constant502 --> PgFromExpression247
PgFromExpression251{{"PgFromExpression[251∈0] ➊"}}:::plan
- Constant499{{"Constant[499∈0] ➊
ᐸ55ᐳ"}}:::plan
- Constant499 --> PgFromExpression251
+ Constant503{{"Constant[503∈0] ➊
ᐸ55ᐳ"}}:::plan
+ Constant503 --> PgFromExpression251
PgFromExpression255{{"PgFromExpression[255∈0] ➊"}}:::plan
- Constant500{{"Constant[500∈0] ➊
ᐸ56ᐳ"}}:::plan
- Constant500 --> PgFromExpression255
+ Constant504{{"Constant[504∈0] ➊
ᐸ56ᐳ"}}:::plan
+ Constant504 --> PgFromExpression255
PgFromExpression259{{"PgFromExpression[259∈0] ➊"}}:::plan
- Constant501{{"Constant[501∈0] ➊
ᐸ57ᐳ"}}:::plan
- Constant501 --> PgFromExpression259
+ Constant505{{"Constant[505∈0] ➊
ᐸ57ᐳ"}}:::plan
+ Constant505 --> PgFromExpression259
PgFromExpression263{{"PgFromExpression[263∈0] ➊"}}:::plan
- Constant502{{"Constant[502∈0] ➊
ᐸ58ᐳ"}}:::plan
- Constant502 --> PgFromExpression263
+ Constant506{{"Constant[506∈0] ➊
ᐸ58ᐳ"}}:::plan
+ Constant506 --> PgFromExpression263
PgFromExpression267{{"PgFromExpression[267∈0] ➊"}}:::plan
- Constant503{{"Constant[503∈0] ➊
ᐸ59ᐳ"}}:::plan
- Constant503 --> PgFromExpression267
+ Constant507{{"Constant[507∈0] ➊
ᐸ59ᐳ"}}:::plan
+ Constant507 --> PgFromExpression267
PgFromExpression271{{"PgFromExpression[271∈0] ➊"}}:::plan
- Constant504{{"Constant[504∈0] ➊
ᐸ60ᐳ"}}:::plan
- Constant504 --> PgFromExpression271
+ Constant508{{"Constant[508∈0] ➊
ᐸ60ᐳ"}}:::plan
+ Constant508 --> PgFromExpression271
PgFromExpression275{{"PgFromExpression[275∈0] ➊"}}:::plan
- Constant505{{"Constant[505∈0] ➊
ᐸ61ᐳ"}}:::plan
- Constant505 --> PgFromExpression275
+ Constant509{{"Constant[509∈0] ➊
ᐸ61ᐳ"}}:::plan
+ Constant509 --> PgFromExpression275
PgFromExpression279{{"PgFromExpression[279∈0] ➊"}}:::plan
- Constant506{{"Constant[506∈0] ➊
ᐸ62ᐳ"}}:::plan
- Constant506 --> PgFromExpression279
+ Constant510{{"Constant[510∈0] ➊
ᐸ62ᐳ"}}:::plan
+ Constant510 --> PgFromExpression279
PgFromExpression283{{"PgFromExpression[283∈0] ➊"}}:::plan
- Constant507{{"Constant[507∈0] ➊
ᐸ63ᐳ"}}:::plan
- Constant507 --> PgFromExpression283
+ Constant511{{"Constant[511∈0] ➊
ᐸ63ᐳ"}}:::plan
+ Constant511 --> PgFromExpression283
PgFromExpression287{{"PgFromExpression[287∈0] ➊"}}:::plan
- Constant508{{"Constant[508∈0] ➊
ᐸ64ᐳ"}}:::plan
- Constant508 --> PgFromExpression287
+ Constant512{{"Constant[512∈0] ➊
ᐸ64ᐳ"}}:::plan
+ Constant512 --> PgFromExpression287
PgFromExpression291{{"PgFromExpression[291∈0] ➊"}}:::plan
- Constant509{{"Constant[509∈0] ➊
ᐸ65ᐳ"}}:::plan
- Constant509 --> PgFromExpression291
+ Constant513{{"Constant[513∈0] ➊
ᐸ65ᐳ"}}:::plan
+ Constant513 --> PgFromExpression291
PgFromExpression295{{"PgFromExpression[295∈0] ➊"}}:::plan
- Constant510{{"Constant[510∈0] ➊
ᐸ66ᐳ"}}:::plan
- Constant510 --> PgFromExpression295
+ Constant514{{"Constant[514∈0] ➊
ᐸ66ᐳ"}}:::plan
+ Constant514 --> PgFromExpression295
PgFromExpression299{{"PgFromExpression[299∈0] ➊"}}:::plan
- Constant511{{"Constant[511∈0] ➊
ᐸ67ᐳ"}}:::plan
- Constant511 --> PgFromExpression299
+ Constant515{{"Constant[515∈0] ➊
ᐸ67ᐳ"}}:::plan
+ Constant515 --> PgFromExpression299
PgFromExpression303{{"PgFromExpression[303∈0] ➊"}}:::plan
- Constant512{{"Constant[512∈0] ➊
ᐸ68ᐳ"}}:::plan
- Constant512 --> PgFromExpression303
+ Constant516{{"Constant[516∈0] ➊
ᐸ68ᐳ"}}:::plan
+ Constant516 --> PgFromExpression303
PgFromExpression307{{"PgFromExpression[307∈0] ➊"}}:::plan
- Constant513{{"Constant[513∈0] ➊
ᐸ69ᐳ"}}:::plan
- Constant513 --> PgFromExpression307
+ Constant517{{"Constant[517∈0] ➊
ᐸ69ᐳ"}}:::plan
+ Constant517 --> PgFromExpression307
PgFromExpression311{{"PgFromExpression[311∈0] ➊"}}:::plan
- Constant514{{"Constant[514∈0] ➊
ᐸ70ᐳ"}}:::plan
- Constant514 --> PgFromExpression311
+ Constant518{{"Constant[518∈0] ➊
ᐸ70ᐳ"}}:::plan
+ Constant518 --> PgFromExpression311
PgFromExpression315{{"PgFromExpression[315∈0] ➊"}}:::plan
- Constant515{{"Constant[515∈0] ➊
ᐸ71ᐳ"}}:::plan
- Constant515 --> PgFromExpression315
+ Constant519{{"Constant[519∈0] ➊
ᐸ71ᐳ"}}:::plan
+ Constant519 --> PgFromExpression315
PgFromExpression319{{"PgFromExpression[319∈0] ➊"}}:::plan
- Constant516{{"Constant[516∈0] ➊
ᐸ72ᐳ"}}:::plan
- Constant516 --> PgFromExpression319
+ Constant520{{"Constant[520∈0] ➊
ᐸ72ᐳ"}}:::plan
+ Constant520 --> PgFromExpression319
PgFromExpression323{{"PgFromExpression[323∈0] ➊"}}:::plan
- Constant517{{"Constant[517∈0] ➊
ᐸ73ᐳ"}}:::plan
- Constant517 --> PgFromExpression323
+ Constant521{{"Constant[521∈0] ➊
ᐸ73ᐳ"}}:::plan
+ Constant521 --> PgFromExpression323
PgFromExpression327{{"PgFromExpression[327∈0] ➊"}}:::plan
- Constant518{{"Constant[518∈0] ➊
ᐸ74ᐳ"}}:::plan
- Constant518 --> PgFromExpression327
+ Constant522{{"Constant[522∈0] ➊
ᐸ74ᐳ"}}:::plan
+ Constant522 --> PgFromExpression327
PgFromExpression331{{"PgFromExpression[331∈0] ➊"}}:::plan
- Constant519{{"Constant[519∈0] ➊
ᐸ75ᐳ"}}:::plan
- Constant519 --> PgFromExpression331
+ Constant523{{"Constant[523∈0] ➊
ᐸ75ᐳ"}}:::plan
+ Constant523 --> PgFromExpression331
PgFromExpression335{{"PgFromExpression[335∈0] ➊"}}:::plan
- Constant520{{"Constant[520∈0] ➊
ᐸ76ᐳ"}}:::plan
- Constant520 --> PgFromExpression335
+ Constant524{{"Constant[524∈0] ➊
ᐸ76ᐳ"}}:::plan
+ Constant524 --> PgFromExpression335
PgFromExpression339{{"PgFromExpression[339∈0] ➊"}}:::plan
- Constant521{{"Constant[521∈0] ➊
ᐸ77ᐳ"}}:::plan
- Constant521 --> PgFromExpression339
+ Constant525{{"Constant[525∈0] ➊
ᐸ77ᐳ"}}:::plan
+ Constant525 --> PgFromExpression339
PgFromExpression343{{"PgFromExpression[343∈0] ➊"}}:::plan
- Constant522{{"Constant[522∈0] ➊
ᐸ78ᐳ"}}:::plan
- Constant522 --> PgFromExpression343
+ Constant526{{"Constant[526∈0] ➊
ᐸ78ᐳ"}}:::plan
+ Constant526 --> PgFromExpression343
PgFromExpression347{{"PgFromExpression[347∈0] ➊"}}:::plan
- Constant523{{"Constant[523∈0] ➊
ᐸ79ᐳ"}}:::plan
- Constant523 --> PgFromExpression347
+ Constant527{{"Constant[527∈0] ➊
ᐸ79ᐳ"}}:::plan
+ Constant527 --> PgFromExpression347
PgFromExpression351{{"PgFromExpression[351∈0] ➊"}}:::plan
- Constant524{{"Constant[524∈0] ➊
ᐸ80ᐳ"}}:::plan
- Constant524 --> PgFromExpression351
+ Constant528{{"Constant[528∈0] ➊
ᐸ80ᐳ"}}:::plan
+ Constant528 --> PgFromExpression351
PgFromExpression355{{"PgFromExpression[355∈0] ➊"}}:::plan
- Constant525{{"Constant[525∈0] ➊
ᐸ81ᐳ"}}:::plan
- Constant525 --> PgFromExpression355
+ Constant529{{"Constant[529∈0] ➊
ᐸ81ᐳ"}}:::plan
+ Constant529 --> PgFromExpression355
PgFromExpression359{{"PgFromExpression[359∈0] ➊"}}:::plan
- Constant526{{"Constant[526∈0] ➊
ᐸ82ᐳ"}}:::plan
- Constant526 --> PgFromExpression359
+ Constant530{{"Constant[530∈0] ➊
ᐸ82ᐳ"}}:::plan
+ Constant530 --> PgFromExpression359
PgFromExpression363{{"PgFromExpression[363∈0] ➊"}}:::plan
- Constant527{{"Constant[527∈0] ➊
ᐸ83ᐳ"}}:::plan
- Constant527 --> PgFromExpression363
+ Constant531{{"Constant[531∈0] ➊
ᐸ83ᐳ"}}:::plan
+ Constant531 --> PgFromExpression363
PgFromExpression367{{"PgFromExpression[367∈0] ➊"}}:::plan
- Constant528{{"Constant[528∈0] ➊
ᐸ84ᐳ"}}:::plan
- Constant528 --> PgFromExpression367
+ Constant532{{"Constant[532∈0] ➊
ᐸ84ᐳ"}}:::plan
+ Constant532 --> PgFromExpression367
PgFromExpression371{{"PgFromExpression[371∈0] ➊"}}:::plan
- Constant529{{"Constant[529∈0] ➊
ᐸ85ᐳ"}}:::plan
- Constant529 --> PgFromExpression371
+ Constant533{{"Constant[533∈0] ➊
ᐸ85ᐳ"}}:::plan
+ Constant533 --> PgFromExpression371
PgFromExpression375{{"PgFromExpression[375∈0] ➊"}}:::plan
- Constant530{{"Constant[530∈0] ➊
ᐸ86ᐳ"}}:::plan
- Constant530 --> PgFromExpression375
+ Constant534{{"Constant[534∈0] ➊
ᐸ86ᐳ"}}:::plan
+ Constant534 --> PgFromExpression375
PgFromExpression379{{"PgFromExpression[379∈0] ➊"}}:::plan
- Constant531{{"Constant[531∈0] ➊
ᐸ87ᐳ"}}:::plan
- Constant531 --> PgFromExpression379
+ Constant535{{"Constant[535∈0] ➊
ᐸ87ᐳ"}}:::plan
+ Constant535 --> PgFromExpression379
PgFromExpression383{{"PgFromExpression[383∈0] ➊"}}:::plan
- Constant532{{"Constant[532∈0] ➊
ᐸ88ᐳ"}}:::plan
- Constant532 --> PgFromExpression383
+ Constant536{{"Constant[536∈0] ➊
ᐸ88ᐳ"}}:::plan
+ Constant536 --> PgFromExpression383
PgFromExpression387{{"PgFromExpression[387∈0] ➊"}}:::plan
- Constant533{{"Constant[533∈0] ➊
ᐸ89ᐳ"}}:::plan
- Constant533 --> PgFromExpression387
+ Constant537{{"Constant[537∈0] ➊
ᐸ89ᐳ"}}:::plan
+ Constant537 --> PgFromExpression387
PgFromExpression391{{"PgFromExpression[391∈0] ➊"}}:::plan
- Constant534{{"Constant[534∈0] ➊
ᐸ90ᐳ"}}:::plan
- Constant534 --> PgFromExpression391
+ Constant538{{"Constant[538∈0] ➊
ᐸ90ᐳ"}}:::plan
+ Constant538 --> PgFromExpression391
PgFromExpression395{{"PgFromExpression[395∈0] ➊"}}:::plan
- Constant535{{"Constant[535∈0] ➊
ᐸ91ᐳ"}}:::plan
- Constant535 --> PgFromExpression395
+ Constant539{{"Constant[539∈0] ➊
ᐸ91ᐳ"}}:::plan
+ Constant539 --> PgFromExpression395
PgFromExpression399{{"PgFromExpression[399∈0] ➊"}}:::plan
- Constant536{{"Constant[536∈0] ➊
ᐸ92ᐳ"}}:::plan
- Constant536 --> PgFromExpression399
+ Constant540{{"Constant[540∈0] ➊
ᐸ92ᐳ"}}:::plan
+ Constant540 --> PgFromExpression399
PgFromExpression403{{"PgFromExpression[403∈0] ➊"}}:::plan
- Constant537{{"Constant[537∈0] ➊
ᐸ93ᐳ"}}:::plan
- Constant537 --> PgFromExpression403
+ Constant541{{"Constant[541∈0] ➊
ᐸ93ᐳ"}}:::plan
+ Constant541 --> PgFromExpression403
PgFromExpression407{{"PgFromExpression[407∈0] ➊"}}:::plan
- Constant538{{"Constant[538∈0] ➊
ᐸ94ᐳ"}}:::plan
- Constant538 --> PgFromExpression407
+ Constant542{{"Constant[542∈0] ➊
ᐸ94ᐳ"}}:::plan
+ Constant542 --> PgFromExpression407
PgFromExpression411{{"PgFromExpression[411∈0] ➊"}}:::plan
- Constant539{{"Constant[539∈0] ➊
ᐸ95ᐳ"}}:::plan
- Constant539 --> PgFromExpression411
+ Constant543{{"Constant[543∈0] ➊
ᐸ95ᐳ"}}:::plan
+ Constant543 --> PgFromExpression411
PgFromExpression415{{"PgFromExpression[415∈0] ➊"}}:::plan
- Constant540{{"Constant[540∈0] ➊
ᐸ96ᐳ"}}:::plan
- Constant540 --> PgFromExpression415
+ Constant544{{"Constant[544∈0] ➊
ᐸ96ᐳ"}}:::plan
+ Constant544 --> PgFromExpression415
PgFromExpression419{{"PgFromExpression[419∈0] ➊"}}:::plan
- Constant541{{"Constant[541∈0] ➊
ᐸ97ᐳ"}}:::plan
- Constant541 --> PgFromExpression419
+ Constant545{{"Constant[545∈0] ➊
ᐸ97ᐳ"}}:::plan
+ Constant545 --> PgFromExpression419
PgFromExpression423{{"PgFromExpression[423∈0] ➊"}}:::plan
- Constant542{{"Constant[542∈0] ➊
ᐸ98ᐳ"}}:::plan
- Constant542 --> PgFromExpression423
+ Constant546{{"Constant[546∈0] ➊
ᐸ98ᐳ"}}:::plan
+ Constant546 --> PgFromExpression423
PgFromExpression427{{"PgFromExpression[427∈0] ➊"}}:::plan
- Constant543{{"Constant[543∈0] ➊
ᐸ99ᐳ"}}:::plan
- Constant543 --> PgFromExpression427
+ Constant547{{"Constant[547∈0] ➊
ᐸ99ᐳ"}}:::plan
+ Constant547 --> PgFromExpression427
PgFromExpression431{{"PgFromExpression[431∈0] ➊"}}:::plan
- Constant544{{"Constant[544∈0] ➊
ᐸ100ᐳ"}}:::plan
- Constant544 --> PgFromExpression431
+ Constant548{{"Constant[548∈0] ➊
ᐸ100ᐳ"}}:::plan
+ Constant548 --> PgFromExpression431
PgFromExpression435{{"PgFromExpression[435∈0] ➊"}}:::plan
- Constant545{{"Constant[545∈0] ➊
ᐸ101ᐳ"}}:::plan
- Constant545 --> PgFromExpression435
+ Constant549{{"Constant[549∈0] ➊
ᐸ101ᐳ"}}:::plan
+ Constant549 --> PgFromExpression435
PgFromExpression439{{"PgFromExpression[439∈0] ➊"}}:::plan
- Constant546{{"Constant[546∈0] ➊
ᐸ102ᐳ"}}:::plan
- Constant546 --> PgFromExpression439
+ Constant550{{"Constant[550∈0] ➊
ᐸ102ᐳ"}}:::plan
+ Constant550 --> PgFromExpression439
PgFromExpression443{{"PgFromExpression[443∈0] ➊"}}:::plan
- Constant547{{"Constant[547∈0] ➊
ᐸ103ᐳ"}}:::plan
- Constant547 --> PgFromExpression443
+ Constant551{{"Constant[551∈0] ➊
ᐸ103ᐳ"}}:::plan
+ Constant551 --> PgFromExpression443
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access10
__Value2 --> Access11
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
PgSelect15[["PgSelect[15∈1] ➊
ᐸpersonᐳ"]]:::plan
- Object12 & Connection13 & Constant445 --> PgSelect15
+ PgSelectInlineApply445["PgSelectInlineApply[445∈1] ➊"]:::plan
+ Object12 & Connection13 & Constant449 & PgFromExpression35 & PgFromExpression39 & PgFromExpression43 & PgFromExpression47 & PgFromExpression51 & PgFromExpression55 & PgFromExpression59 & PgFromExpression63 & PgFromExpression67 & PgFromExpression71 & PgFromExpression75 & PgFromExpression79 & PgFromExpression83 & PgFromExpression87 & PgFromExpression91 & PgFromExpression95 & PgFromExpression99 & PgFromExpression103 & PgFromExpression107 & PgFromExpression111 & PgFromExpression115 & PgFromExpression119 & PgFromExpression123 & PgFromExpression127 & PgFromExpression131 & PgFromExpression135 & PgFromExpression139 & PgFromExpression143 & PgFromExpression147 & PgFromExpression151 & PgFromExpression155 & PgFromExpression159 & PgFromExpression163 & PgFromExpression167 & PgFromExpression171 & PgFromExpression175 & PgFromExpression179 & PgFromExpression183 & PgFromExpression187 & PgFromExpression191 & PgFromExpression195 & PgFromExpression199 & PgFromExpression203 & PgFromExpression207 & PgFromExpression211 & PgFromExpression215 & PgFromExpression219 & PgFromExpression223 & PgFromExpression227 & PgFromExpression231 & PgFromExpression235 & PgFromExpression239 & PgFromExpression243 & PgFromExpression247 & PgFromExpression251 & PgFromExpression255 & PgFromExpression259 & PgFromExpression263 & PgFromExpression267 & PgFromExpression271 & PgFromExpression275 & PgFromExpression279 & PgFromExpression283 & PgFromExpression287 & PgFromExpression291 & PgFromExpression295 & PgFromExpression299 & PgFromExpression303 & PgFromExpression307 & PgFromExpression311 & PgFromExpression315 & PgFromExpression319 & PgFromExpression323 & PgFromExpression327 & PgFromExpression331 & PgFromExpression335 & PgFromExpression339 & PgFromExpression343 & PgFromExpression347 & PgFromExpression351 & PgFromExpression355 & PgFromExpression359 & PgFromExpression363 & PgFromExpression367 & PgFromExpression371 & PgFromExpression375 & PgFromExpression379 & PgFromExpression383 & PgFromExpression387 & PgFromExpression391 & PgFromExpression395 & PgFromExpression399 & PgFromExpression403 & PgFromExpression407 & PgFromExpression411 & PgFromExpression415 & PgFromExpression419 & PgFromExpression423 & PgFromExpression427 & PgFromExpression431 & PgFromExpression435 & PgFromExpression439 & PgFromExpression443 & PgSelectInlineApply445 --> PgSelect15
+ Constant449 --> PgSelectInlineApply445
PgSelectRows16[["PgSelectRows[16∈1] ➊"]]:::plan
PgSelect15 --> PgSelectRows16
__Item17[/"__Item[17∈2]
ᐸ16ᐳ"\]:::itemplan
PgSelectRows16 ==> __Item17
PgSelectSingle18{{"PgSelectSingle[18∈2]
ᐸpersonᐳ"}}:::plan
__Item17 --> PgSelectSingle18
- PgSelect28[["PgSelect[28∈3]
ᐸpostᐳ"]]:::plan
+ List447{{"List[447∈3]
ᐸ17,446ᐳ"}}:::plan
+ Access446{{"Access[446∈3] ➊
ᐸ15.m.subqueryDetailsFor28ᐳ"}}:::plan
+ __Item17 & Access446 --> List447
PgClassExpression19{{"PgClassExpression[19∈3]
ᐸ__person__.”id”ᐳ"}}:::plan
- Object12 & PgClassExpression19 & Connection26 & Constant445 & PgFromExpression35 & PgFromExpression39 & PgFromExpression43 & PgFromExpression47 & PgFromExpression51 & PgFromExpression55 & PgFromExpression59 & PgFromExpression63 & PgFromExpression67 & PgFromExpression71 & PgFromExpression75 & PgFromExpression79 & PgFromExpression83 & PgFromExpression87 & PgFromExpression91 & PgFromExpression95 & PgFromExpression99 & PgFromExpression103 & PgFromExpression107 & PgFromExpression111 & PgFromExpression115 & PgFromExpression119 & PgFromExpression123 & PgFromExpression127 & PgFromExpression131 & PgFromExpression135 & PgFromExpression139 & PgFromExpression143 & PgFromExpression147 & PgFromExpression151 & PgFromExpression155 & PgFromExpression159 & PgFromExpression163 & PgFromExpression167 & PgFromExpression171 & PgFromExpression175 & PgFromExpression179 & PgFromExpression183 & PgFromExpression187 & PgFromExpression191 & PgFromExpression195 & PgFromExpression199 & PgFromExpression203 & PgFromExpression207 & PgFromExpression211 & PgFromExpression215 & PgFromExpression219 & PgFromExpression223 & PgFromExpression227 & PgFromExpression231 & PgFromExpression235 & PgFromExpression239 & PgFromExpression243 & PgFromExpression247 & PgFromExpression251 & PgFromExpression255 & PgFromExpression259 & PgFromExpression263 & PgFromExpression267 & PgFromExpression271 & PgFromExpression275 & PgFromExpression279 & PgFromExpression283 & PgFromExpression287 & PgFromExpression291 & PgFromExpression295 & PgFromExpression299 & PgFromExpression303 & PgFromExpression307 & PgFromExpression311 & PgFromExpression315 & PgFromExpression319 & PgFromExpression323 & PgFromExpression327 & PgFromExpression331 & PgFromExpression335 & PgFromExpression339 & PgFromExpression343 & PgFromExpression347 & PgFromExpression351 & PgFromExpression355 & PgFromExpression359 & PgFromExpression363 & PgFromExpression367 & PgFromExpression371 & PgFromExpression375 & PgFromExpression379 & PgFromExpression383 & PgFromExpression387 & PgFromExpression391 & PgFromExpression395 & PgFromExpression399 & PgFromExpression403 & PgFromExpression407 & PgFromExpression411 & PgFromExpression415 & PgFromExpression419 & PgFromExpression423 & PgFromExpression427 & PgFromExpression431 & PgFromExpression435 & PgFromExpression439 & PgFromExpression443 --> PgSelect28
PgSelectSingle18 --> PgClassExpression19
PgSelectRows29[["PgSelectRows[29∈3]"]]:::plan
- PgSelect28 --> PgSelectRows29
+ Lambda448{{"Lambda[448∈3]"}}:::plan
+ Lambda448 --> PgSelectRows29
+ PgSelect15 --> Access446
+ List447 --> Lambda448
__Item30[/"__Item[30∈4]
ᐸ29ᐳ"\]:::itemplan
PgSelectRows29 ==> __Item30
PgSelectSingle31{{"PgSelectSingle[31∈4]
ᐸpostᐳ"}}:::plan
@@ -562,16 +568,16 @@ graph TD
subgraph "Buckets for queries/v4/json-overflow-nested"
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Access10,Access11,Object12,Connection13,Connection26,PgFromExpression35,PgFromExpression39,PgFromExpression43,PgFromExpression47,PgFromExpression51,PgFromExpression55,PgFromExpression59,PgFromExpression63,PgFromExpression67,PgFromExpression71,PgFromExpression75,PgFromExpression79,PgFromExpression83,PgFromExpression87,PgFromExpression91,PgFromExpression95,PgFromExpression99,PgFromExpression103,PgFromExpression107,PgFromExpression111,PgFromExpression115,PgFromExpression119,PgFromExpression123,PgFromExpression127,PgFromExpression131,PgFromExpression135,PgFromExpression139,PgFromExpression143,PgFromExpression147,PgFromExpression151,PgFromExpression155,PgFromExpression159,PgFromExpression163,PgFromExpression167,PgFromExpression171,PgFromExpression175,PgFromExpression179,PgFromExpression183,PgFromExpression187,PgFromExpression191,PgFromExpression195,PgFromExpression199,PgFromExpression203,PgFromExpression207,PgFromExpression211,PgFromExpression215,PgFromExpression219,PgFromExpression223,PgFromExpression227,PgFromExpression231,PgFromExpression235,PgFromExpression239,PgFromExpression243,PgFromExpression247,PgFromExpression251,PgFromExpression255,PgFromExpression259,PgFromExpression263,PgFromExpression267,PgFromExpression271,PgFromExpression275,PgFromExpression279,PgFromExpression283,PgFromExpression287,PgFromExpression291,PgFromExpression295,PgFromExpression299,PgFromExpression303,PgFromExpression307,PgFromExpression311,PgFromExpression315,PgFromExpression319,PgFromExpression323,PgFromExpression327,PgFromExpression331,PgFromExpression335,PgFromExpression339,PgFromExpression343,PgFromExpression347,PgFromExpression351,PgFromExpression355,PgFromExpression359,PgFromExpression363,PgFromExpression367,PgFromExpression371,PgFromExpression375,PgFromExpression379,PgFromExpression383,PgFromExpression387,PgFromExpression391,PgFromExpression395,PgFromExpression399,PgFromExpression403,PgFromExpression407,PgFromExpression411,PgFromExpression415,PgFromExpression419,PgFromExpression423,PgFromExpression427,PgFromExpression431,PgFromExpression435,PgFromExpression439,PgFromExpression443,Constant445,Constant446,Constant447,Constant448,Constant449,Constant450,Constant451,Constant452,Constant453,Constant454,Constant455,Constant456,Constant457,Constant458,Constant459,Constant460,Constant461,Constant462,Constant463,Constant464,Constant465,Constant466,Constant467,Constant468,Constant469,Constant470,Constant471,Constant472,Constant473,Constant474,Constant475,Constant476,Constant477,Constant478,Constant479,Constant480,Constant481,Constant482,Constant483,Constant484,Constant485,Constant486,Constant487,Constant488,Constant489,Constant490,Constant491,Constant492,Constant493,Constant494,Constant495,Constant496,Constant497,Constant498,Constant499,Constant500,Constant501,Constant502,Constant503,Constant504,Constant505,Constant506,Constant507,Constant508,Constant509,Constant510,Constant511,Constant512,Constant513,Constant514,Constant515,Constant516,Constant517,Constant518,Constant519,Constant520,Constant521,Constant522,Constant523,Constant524,Constant525,Constant526,Constant527,Constant528,Constant529,Constant530,Constant531,Constant532,Constant533,Constant534,Constant535,Constant536,Constant537,Constant538,Constant539,Constant540,Constant541,Constant542,Constant543,Constant544,Constant545,Constant546,Constant547 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 12, 13, 445, 7, 26, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, 99, 103, 107, 111, 115, 119, 123, 127, 131, 135, 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255, 259, 263, 267, 271, 275, 279, 283, 287, 291, 295, 299, 303, 307, 311, 315, 319, 323, 327, 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 371, 375, 379, 383, 387, 391, 395, 399, 403, 407, 411, 415, 419, 423, 427, 431, 435, 439, 443
ROOT Connectionᐸ9ᐳ[13]
1: PgSelect[15]
2: PgSelectRows[16]"):::bucket
+ class Bucket0,__Value2,__Value4,Access10,Access11,Object12,Connection13,Connection26,PgFromExpression35,PgFromExpression39,PgFromExpression43,PgFromExpression47,PgFromExpression51,PgFromExpression55,PgFromExpression59,PgFromExpression63,PgFromExpression67,PgFromExpression71,PgFromExpression75,PgFromExpression79,PgFromExpression83,PgFromExpression87,PgFromExpression91,PgFromExpression95,PgFromExpression99,PgFromExpression103,PgFromExpression107,PgFromExpression111,PgFromExpression115,PgFromExpression119,PgFromExpression123,PgFromExpression127,PgFromExpression131,PgFromExpression135,PgFromExpression139,PgFromExpression143,PgFromExpression147,PgFromExpression151,PgFromExpression155,PgFromExpression159,PgFromExpression163,PgFromExpression167,PgFromExpression171,PgFromExpression175,PgFromExpression179,PgFromExpression183,PgFromExpression187,PgFromExpression191,PgFromExpression195,PgFromExpression199,PgFromExpression203,PgFromExpression207,PgFromExpression211,PgFromExpression215,PgFromExpression219,PgFromExpression223,PgFromExpression227,PgFromExpression231,PgFromExpression235,PgFromExpression239,PgFromExpression243,PgFromExpression247,PgFromExpression251,PgFromExpression255,PgFromExpression259,PgFromExpression263,PgFromExpression267,PgFromExpression271,PgFromExpression275,PgFromExpression279,PgFromExpression283,PgFromExpression287,PgFromExpression291,PgFromExpression295,PgFromExpression299,PgFromExpression303,PgFromExpression307,PgFromExpression311,PgFromExpression315,PgFromExpression319,PgFromExpression323,PgFromExpression327,PgFromExpression331,PgFromExpression335,PgFromExpression339,PgFromExpression343,PgFromExpression347,PgFromExpression351,PgFromExpression355,PgFromExpression359,PgFromExpression363,PgFromExpression367,PgFromExpression371,PgFromExpression375,PgFromExpression379,PgFromExpression383,PgFromExpression387,PgFromExpression391,PgFromExpression395,PgFromExpression399,PgFromExpression403,PgFromExpression407,PgFromExpression411,PgFromExpression415,PgFromExpression419,PgFromExpression423,PgFromExpression427,PgFromExpression431,PgFromExpression435,PgFromExpression439,PgFromExpression443,Constant449,Constant450,Constant451,Constant452,Constant453,Constant454,Constant455,Constant456,Constant457,Constant458,Constant459,Constant460,Constant461,Constant462,Constant463,Constant464,Constant465,Constant466,Constant467,Constant468,Constant469,Constant470,Constant471,Constant472,Constant473,Constant474,Constant475,Constant476,Constant477,Constant478,Constant479,Constant480,Constant481,Constant482,Constant483,Constant484,Constant485,Constant486,Constant487,Constant488,Constant489,Constant490,Constant491,Constant492,Constant493,Constant494,Constant495,Constant496,Constant497,Constant498,Constant499,Constant500,Constant501,Constant502,Constant503,Constant504,Constant505,Constant506,Constant507,Constant508,Constant509,Constant510,Constant511,Constant512,Constant513,Constant514,Constant515,Constant516,Constant517,Constant518,Constant519,Constant520,Constant521,Constant522,Constant523,Constant524,Constant525,Constant526,Constant527,Constant528,Constant529,Constant530,Constant531,Constant532,Constant533,Constant534,Constant535,Constant536,Constant537,Constant538,Constant539,Constant540,Constant541,Constant542,Constant543,Constant544,Constant545,Constant546,Constant547,Constant548,Constant549,Constant550,Constant551 bucket0
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 12, 13, 449, 7, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, 99, 103, 107, 111, 115, 119, 123, 127, 131, 135, 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255, 259, 263, 267, 271, 275, 279, 283, 287, 291, 295, 299, 303, 307, 311, 315, 319, 323, 327, 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 371, 375, 379, 383, 387, 391, 395, 399, 403, 407, 411, 415, 419, 423, 427, 431, 435, 439, 443, 26
ROOT Connectionᐸ9ᐳ[13]
1: PgSelectInlineApply[445]
2: PgSelect[15]
3: PgSelectRows[16]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgSelect15,PgSelectRows16 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 12, 26, 445, 7, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, 99, 103, 107, 111, 115, 119, 123, 127, 131, 135, 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255, 259, 263, 267, 271, 275, 279, 283, 287, 291, 295, 299, 303, 307, 311, 315, 319, 323, 327, 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 371, 375, 379, 383, 387, 391, 395, 399, 403, 407, 411, 415, 419, 423, 427, 431, 435, 439, 443
ROOT __Item{2}ᐸ16ᐳ[17]"):::bucket
+ class Bucket1,PgSelect15,PgSelectRows16,PgSelectInlineApply445 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 15, 26
ROOT __Item{2}ᐸ16ᐳ[17]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item17,PgSelectSingle18 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 18, 12, 26, 445, 7, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87, 91, 95, 99, 103, 107, 111, 115, 119, 123, 127, 131, 135, 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255, 259, 263, 267, 271, 275, 279, 283, 287, 291, 295, 299, 303, 307, 311, 315, 319, 323, 327, 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 371, 375, 379, 383, 387, 391, 395, 399, 403, 407, 411, 415, 419, 423, 427, 431, 435, 439, 443
ROOT PgSelectSingle{2}ᐸpersonᐳ[18]
1:
ᐳ: PgClassExpression[19]
2: PgSelect[28]
3: PgSelectRows[29]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 18, 15, 17, 26
ROOT PgSelectSingle{2}ᐸpersonᐳ[18]
1:
ᐳ: 19, 446, 447, 448
2: PgSelectRows[29]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression19,PgSelect28,PgSelectRows29 bucket3
+ class Bucket3,PgClassExpression19,PgSelectRows29,Access446,List447,Lambda448 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ29ᐳ[30]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item30,PgSelectSingle31 bucket4
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.sql b/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.sql
index b162fe5e5..2d9ce86e3 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/json-overflow-nested.sql
@@ -1,426 +1,428 @@
select
- __person__."id"::text as "0"
+ __person__."id"::text as "0",
+ array(
+ select array[
+ __post__."headline",
+ "a"."post_headline_trimmed"(
+ __post__,
+ $1::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $2::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $3::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $4::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $5::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $6::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $7::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $8::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $9::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $10::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $11::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $12::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $13::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $14::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $15::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $16::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $17::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $18::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $19::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $20::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $21::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $22::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $23::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $24::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $25::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $26::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $27::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $28::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $29::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $30::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $31::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $32::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $33::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $34::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $35::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $36::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $37::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $38::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $39::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $40::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $41::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $42::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $43::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $44::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $45::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $46::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $47::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $48::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $49::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $50::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $51::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $52::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $53::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $54::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $55::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $56::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $57::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $58::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $59::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $60::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $61::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $62::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $63::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $64::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $65::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $66::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $67::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $68::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $69::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $70::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $71::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $72::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $73::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $74::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $75::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $76::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $77::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $78::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $79::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $80::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $81::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $82::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $83::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $84::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $85::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $86::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $87::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $88::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $89::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $90::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $91::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $92::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $93::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $94::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $95::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $96::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $97::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $98::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $99::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $100::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $101::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $102::"int4"
+ ),
+ "a"."post_headline_trimmed"(
+ __post__,
+ $103::"int4"
+ )
+ ]::text[]
+ from "a"."post" as __post__
+ where (
+ __post__."author_id" = __person__."id"
+ )
+ order by __post__."id" asc
+ limit 1
+ )::text as "1"
from "c"."person" as __person__
order by __person__."id" asc
-limit 1;
-
-select
- __post__."headline" as "0",
- "a"."post_headline_trimmed"(
- __post__,
- $1::"int4"
- ) as "1",
- "a"."post_headline_trimmed"(
- __post__,
- $2::"int4"
- ) as "2",
- "a"."post_headline_trimmed"(
- __post__,
- $3::"int4"
- ) as "3",
- "a"."post_headline_trimmed"(
- __post__,
- $4::"int4"
- ) as "4",
- "a"."post_headline_trimmed"(
- __post__,
- $5::"int4"
- ) as "5",
- "a"."post_headline_trimmed"(
- __post__,
- $6::"int4"
- ) as "6",
- "a"."post_headline_trimmed"(
- __post__,
- $7::"int4"
- ) as "7",
- "a"."post_headline_trimmed"(
- __post__,
- $8::"int4"
- ) as "8",
- "a"."post_headline_trimmed"(
- __post__,
- $9::"int4"
- ) as "9",
- "a"."post_headline_trimmed"(
- __post__,
- $10::"int4"
- ) as "10",
- "a"."post_headline_trimmed"(
- __post__,
- $11::"int4"
- ) as "11",
- "a"."post_headline_trimmed"(
- __post__,
- $12::"int4"
- ) as "12",
- "a"."post_headline_trimmed"(
- __post__,
- $13::"int4"
- ) as "13",
- "a"."post_headline_trimmed"(
- __post__,
- $14::"int4"
- ) as "14",
- "a"."post_headline_trimmed"(
- __post__,
- $15::"int4"
- ) as "15",
- "a"."post_headline_trimmed"(
- __post__,
- $16::"int4"
- ) as "16",
- "a"."post_headline_trimmed"(
- __post__,
- $17::"int4"
- ) as "17",
- "a"."post_headline_trimmed"(
- __post__,
- $18::"int4"
- ) as "18",
- "a"."post_headline_trimmed"(
- __post__,
- $19::"int4"
- ) as "19",
- "a"."post_headline_trimmed"(
- __post__,
- $20::"int4"
- ) as "20",
- "a"."post_headline_trimmed"(
- __post__,
- $21::"int4"
- ) as "21",
- "a"."post_headline_trimmed"(
- __post__,
- $22::"int4"
- ) as "22",
- "a"."post_headline_trimmed"(
- __post__,
- $23::"int4"
- ) as "23",
- "a"."post_headline_trimmed"(
- __post__,
- $24::"int4"
- ) as "24",
- "a"."post_headline_trimmed"(
- __post__,
- $25::"int4"
- ) as "25",
- "a"."post_headline_trimmed"(
- __post__,
- $26::"int4"
- ) as "26",
- "a"."post_headline_trimmed"(
- __post__,
- $27::"int4"
- ) as "27",
- "a"."post_headline_trimmed"(
- __post__,
- $28::"int4"
- ) as "28",
- "a"."post_headline_trimmed"(
- __post__,
- $29::"int4"
- ) as "29",
- "a"."post_headline_trimmed"(
- __post__,
- $30::"int4"
- ) as "30",
- "a"."post_headline_trimmed"(
- __post__,
- $31::"int4"
- ) as "31",
- "a"."post_headline_trimmed"(
- __post__,
- $32::"int4"
- ) as "32",
- "a"."post_headline_trimmed"(
- __post__,
- $33::"int4"
- ) as "33",
- "a"."post_headline_trimmed"(
- __post__,
- $34::"int4"
- ) as "34",
- "a"."post_headline_trimmed"(
- __post__,
- $35::"int4"
- ) as "35",
- "a"."post_headline_trimmed"(
- __post__,
- $36::"int4"
- ) as "36",
- "a"."post_headline_trimmed"(
- __post__,
- $37::"int4"
- ) as "37",
- "a"."post_headline_trimmed"(
- __post__,
- $38::"int4"
- ) as "38",
- "a"."post_headline_trimmed"(
- __post__,
- $39::"int4"
- ) as "39",
- "a"."post_headline_trimmed"(
- __post__,
- $40::"int4"
- ) as "40",
- "a"."post_headline_trimmed"(
- __post__,
- $41::"int4"
- ) as "41",
- "a"."post_headline_trimmed"(
- __post__,
- $42::"int4"
- ) as "42",
- "a"."post_headline_trimmed"(
- __post__,
- $43::"int4"
- ) as "43",
- "a"."post_headline_trimmed"(
- __post__,
- $44::"int4"
- ) as "44",
- "a"."post_headline_trimmed"(
- __post__,
- $45::"int4"
- ) as "45",
- "a"."post_headline_trimmed"(
- __post__,
- $46::"int4"
- ) as "46",
- "a"."post_headline_trimmed"(
- __post__,
- $47::"int4"
- ) as "47",
- "a"."post_headline_trimmed"(
- __post__,
- $48::"int4"
- ) as "48",
- "a"."post_headline_trimmed"(
- __post__,
- $49::"int4"
- ) as "49",
- "a"."post_headline_trimmed"(
- __post__,
- $50::"int4"
- ) as "50",
- "a"."post_headline_trimmed"(
- __post__,
- $51::"int4"
- ) as "51",
- "a"."post_headline_trimmed"(
- __post__,
- $52::"int4"
- ) as "52",
- "a"."post_headline_trimmed"(
- __post__,
- $53::"int4"
- ) as "53",
- "a"."post_headline_trimmed"(
- __post__,
- $54::"int4"
- ) as "54",
- "a"."post_headline_trimmed"(
- __post__,
- $55::"int4"
- ) as "55",
- "a"."post_headline_trimmed"(
- __post__,
- $56::"int4"
- ) as "56",
- "a"."post_headline_trimmed"(
- __post__,
- $57::"int4"
- ) as "57",
- "a"."post_headline_trimmed"(
- __post__,
- $58::"int4"
- ) as "58",
- "a"."post_headline_trimmed"(
- __post__,
- $59::"int4"
- ) as "59",
- "a"."post_headline_trimmed"(
- __post__,
- $60::"int4"
- ) as "60",
- "a"."post_headline_trimmed"(
- __post__,
- $61::"int4"
- ) as "61",
- "a"."post_headline_trimmed"(
- __post__,
- $62::"int4"
- ) as "62",
- "a"."post_headline_trimmed"(
- __post__,
- $63::"int4"
- ) as "63",
- "a"."post_headline_trimmed"(
- __post__,
- $64::"int4"
- ) as "64",
- "a"."post_headline_trimmed"(
- __post__,
- $65::"int4"
- ) as "65",
- "a"."post_headline_trimmed"(
- __post__,
- $66::"int4"
- ) as "66",
- "a"."post_headline_trimmed"(
- __post__,
- $67::"int4"
- ) as "67",
- "a"."post_headline_trimmed"(
- __post__,
- $68::"int4"
- ) as "68",
- "a"."post_headline_trimmed"(
- __post__,
- $69::"int4"
- ) as "69",
- "a"."post_headline_trimmed"(
- __post__,
- $70::"int4"
- ) as "70",
- "a"."post_headline_trimmed"(
- __post__,
- $71::"int4"
- ) as "71",
- "a"."post_headline_trimmed"(
- __post__,
- $72::"int4"
- ) as "72",
- "a"."post_headline_trimmed"(
- __post__,
- $73::"int4"
- ) as "73",
- "a"."post_headline_trimmed"(
- __post__,
- $74::"int4"
- ) as "74",
- "a"."post_headline_trimmed"(
- __post__,
- $75::"int4"
- ) as "75",
- "a"."post_headline_trimmed"(
- __post__,
- $76::"int4"
- ) as "76",
- "a"."post_headline_trimmed"(
- __post__,
- $77::"int4"
- ) as "77",
- "a"."post_headline_trimmed"(
- __post__,
- $78::"int4"
- ) as "78",
- "a"."post_headline_trimmed"(
- __post__,
- $79::"int4"
- ) as "79",
- "a"."post_headline_trimmed"(
- __post__,
- $80::"int4"
- ) as "80",
- "a"."post_headline_trimmed"(
- __post__,
- $81::"int4"
- ) as "81",
- "a"."post_headline_trimmed"(
- __post__,
- $82::"int4"
- ) as "82",
- "a"."post_headline_trimmed"(
- __post__,
- $83::"int4"
- ) as "83",
- "a"."post_headline_trimmed"(
- __post__,
- $84::"int4"
- ) as "84",
- "a"."post_headline_trimmed"(
- __post__,
- $85::"int4"
- ) as "85",
- "a"."post_headline_trimmed"(
- __post__,
- $86::"int4"
- ) as "86",
- "a"."post_headline_trimmed"(
- __post__,
- $87::"int4"
- ) as "87",
- "a"."post_headline_trimmed"(
- __post__,
- $88::"int4"
- ) as "88",
- "a"."post_headline_trimmed"(
- __post__,
- $89::"int4"
- ) as "89",
- "a"."post_headline_trimmed"(
- __post__,
- $90::"int4"
- ) as "90",
- "a"."post_headline_trimmed"(
- __post__,
- $91::"int4"
- ) as "91",
- "a"."post_headline_trimmed"(
- __post__,
- $92::"int4"
- ) as "92",
- "a"."post_headline_trimmed"(
- __post__,
- $93::"int4"
- ) as "93",
- "a"."post_headline_trimmed"(
- __post__,
- $94::"int4"
- ) as "94",
- "a"."post_headline_trimmed"(
- __post__,
- $95::"int4"
- ) as "95",
- "a"."post_headline_trimmed"(
- __post__,
- $96::"int4"
- ) as "96",
- "a"."post_headline_trimmed"(
- __post__,
- $97::"int4"
- ) as "97",
- "a"."post_headline_trimmed"(
- __post__,
- $98::"int4"
- ) as "98",
- "a"."post_headline_trimmed"(
- __post__,
- $99::"int4"
- ) as "99",
- "a"."post_headline_trimmed"(
- __post__,
- $100::"int4"
- ) as "100",
- "a"."post_headline_trimmed"(
- __post__,
- $101::"int4"
- ) as "101",
- "a"."post_headline_trimmed"(
- __post__,
- $102::"int4"
- ) as "102",
- "a"."post_headline_trimmed"(
- __post__,
- $103::"int4"
- ) as "103"
-from "a"."post" as __post__
-where (
- __post__."author_id" = $104::"int4"
-)
-order by __post__."id" asc
limit 1;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.mermaid
index 363804146..b9c26a1cb 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.mermaid
@@ -10,59 +10,59 @@ graph TD
%% plan dependencies
__InputObject145{{"__InputObject[145∈0] ➊"}}:::plan
- Constant359{{"Constant[359∈0] ➊
ᐸ419ᐳ"}}:::plan
- Constant360{{"Constant[360∈0] ➊
ᐸ'easy cheesy baked potatoes'ᐳ"}}:::plan
- Constant361{{"Constant[361∈0] ➊
ᐸ'red'ᐳ"}}:::plan
- Constant362{{"Constant[362∈0] ➊
ᐸ'BAR_FOO'ᐳ"}}:::plan
- Constant363{{"Constant[363∈0] ➊
ᐸ''ᐳ"}}:::plan
+ Constant371{{"Constant[371∈0] ➊
ᐸ419ᐳ"}}:::plan
+ Constant372{{"Constant[372∈0] ➊
ᐸ'easy cheesy baked potatoes'ᐳ"}}:::plan
+ Constant373{{"Constant[373∈0] ➊
ᐸ'red'ᐳ"}}:::plan
+ Constant374{{"Constant[374∈0] ➊
ᐸ'BAR_FOO'ᐳ"}}:::plan
+ Constant375{{"Constant[375∈0] ➊
ᐸ''ᐳ"}}:::plan
__InputObject151{{"__InputObject[151∈0] ➊"}}:::plan
- Constant365{{"Constant[365∈0] ➊
ᐸ8ᐳ"}}:::plan
- Constant359 & Constant360 & Constant361 & Constant362 & Constant363 & __InputObject151 & Constant365 --> __InputObject145
+ Constant377{{"Constant[377∈0] ➊
ᐸ8ᐳ"}}:::plan
+ Constant371 & Constant372 & Constant373 & Constant374 & Constant375 & __InputObject151 & Constant377 --> __InputObject145
PgSelect282[["PgSelect[282∈0] ➊
ᐸpersonᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Constant366{{"Constant[366∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant378{{"Constant[378∈0] ➊
ᐸ1ᐳ"}}:::plan
PgFromExpression290{{"PgFromExpression[290∈0] ➊"}}:::plan
PgFromExpression296{{"PgFromExpression[296∈0] ➊"}}:::plan
PgFromExpression301{{"PgFromExpression[301∈0] ➊"}}:::plan
PgFromExpression306{{"PgFromExpression[306∈0] ➊"}}:::plan
PgFromExpression311{{"PgFromExpression[311∈0] ➊"}}:::plan
PgFromExpression316{{"PgFromExpression[316∈0] ➊"}}:::plan
- Object11 & Constant366 & PgFromExpression290 & PgFromExpression296 & PgFromExpression301 & PgFromExpression306 & PgFromExpression311 & PgFromExpression316 --> PgSelect282
+ Object11 & Constant378 & PgFromExpression290 & PgFromExpression296 & PgFromExpression301 & PgFromExpression306 & PgFromExpression311 & PgFromExpression316 --> PgSelect282
Connection12{{"Connection[12∈0] ➊
ᐸ8ᐳ"}}:::plan
Connection105{{"Connection[105∈0] ➊
ᐸ103ᐳ"}}:::plan
Connection191{{"Connection[191∈0] ➊
ᐸ188ᐳ"}}:::plan
Connection221{{"Connection[221∈0] ➊
ᐸ219ᐳ"}}:::plan
Connection236{{"Connection[236∈0] ➊
ᐸ231ᐳ"}}:::plan
Connection251{{"Connection[251∈0] ➊
ᐸ246ᐳ"}}:::plan
- Constant366 --> Connection251
+ Constant378 --> Connection251
Connection271{{"Connection[271∈0] ➊
ᐸ269ᐳ"}}:::plan
- Constant367{{"Constant[367∈0] ➊
ᐸ7ᐳ"}}:::plan
- Constant366 & Constant367 --> PgFromExpression290
- Constant366 & Constant365 & Constant367 --> PgFromExpression296
- Constant366 & Constant367 --> PgFromExpression301
- Constant366 & Constant367 --> PgFromExpression306
- Constant366 & Constant367 --> PgFromExpression311
- Constant366 & Constant367 --> PgFromExpression316
+ Constant379{{"Constant[379∈0] ➊
ᐸ7ᐳ"}}:::plan
+ Constant378 & Constant379 --> PgFromExpression290
+ Constant378 & Constant377 & Constant379 --> PgFromExpression296
+ Constant378 & Constant379 --> PgFromExpression301
+ Constant378 & Constant379 --> PgFromExpression306
+ Constant378 & Constant379 --> PgFromExpression311
+ Constant378 & Constant379 --> PgFromExpression316
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
PgFromExpression117{{"PgFromExpression[117∈0] ➊"}}:::plan
- Constant356{{"Constant[356∈0] ➊
ᐸ15ᐳ"}}:::plan
- Constant356 --> PgFromExpression117
+ Constant368{{"Constant[368∈0] ➊
ᐸ15ᐳ"}}:::plan
+ Constant368 --> PgFromExpression117
PgFromExpression122{{"PgFromExpression[122∈0] ➊"}}:::plan
- Constant357{{"Constant[357∈0] ➊
ᐸ20ᐳ"}}:::plan
- Constant358{{"Constant[358∈0] ➊
ᐸ'[...]'ᐳ"}}:::plan
- Constant357 & Constant358 --> PgFromExpression122
+ Constant369{{"Constant[369∈0] ➊
ᐸ20ᐳ"}}:::plan
+ Constant370{{"Constant[370∈0] ➊
ᐸ'[...]'ᐳ"}}:::plan
+ Constant369 & Constant370 --> PgFromExpression122
PgFromExpression129{{"PgFromExpression[129∈0] ➊"}}:::plan
- Constant356 --> PgFromExpression129
+ Constant368 --> PgFromExpression129
PgFromExpression134{{"PgFromExpression[134∈0] ➊"}}:::plan
- Constant357 & Constant358 --> PgFromExpression134
+ Constant369 & Constant370 --> PgFromExpression134
PgFromExpression138{{"PgFromExpression[138∈0] ➊"}}:::plan
- Constant356 --> PgFromExpression138
+ Constant368 --> PgFromExpression138
PgFromExpression143{{"PgFromExpression[143∈0] ➊"}}:::plan
- Constant357 & Constant358 --> PgFromExpression143
- Constant364{{"Constant[364∈0] ➊
ᐸ5ᐳ"}}:::plan
- Constant364 --> __InputObject151
+ Constant369 & Constant370 --> PgFromExpression143
+ Constant376{{"Constant[376∈0] ➊
ᐸ5ᐳ"}}:::plan
+ Constant376 --> __InputObject151
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access9
__Value2 --> Access10
@@ -98,7 +98,7 @@ graph TD
Constant335{{"Constant[335∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
Constant340{{"Constant[340∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
Constant346{{"Constant[346∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
- Constant351{{"Constant[351∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
+ Constant363{{"Constant[363∈0] ➊
ᐸ[HIDDEN]ᐳ"}}:::plan
PgSelect14[["PgSelect[14∈1] ➊
ᐸtypesᐳ"]]:::plan
PgSelectInlineApply318["PgSelectInlineApply[318∈1] ➊"]:::plan
PgSelectInlineApply334["PgSelectInlineApply[334∈1] ➊"]:::plan
@@ -236,24 +236,27 @@ graph TD
PgClassExpression101{{"PgClassExpression[101∈9]
ᐸ”c”.”compo...nd_type__)ᐳ"}}:::plan
PgSelectSingle97 --> PgClassExpression101
PgSelect107[["PgSelect[107∈10] ➊
ᐸpostᐳ"]]:::plan
- Object11 & Connection105 & PgFromExpression113 & PgFromExpression117 & PgFromExpression122 & PgFromExpression125 & PgFromExpression129 & PgFromExpression134 & PgFromExpression138 & PgFromExpression143 --> PgSelect107
+ PgSelectInlineApply350["PgSelectInlineApply[350∈10] ➊"]:::plan
+ PgSelectInlineApply354["PgSelectInlineApply[354∈10] ➊"]:::plan
+ Object11 & Connection105 & PgFromExpression113 & PgFromExpression117 & PgFromExpression122 & PgFromExpression125 & PgFromExpression129 & PgFromExpression134 & PgFromExpression138 & PgFromExpression143 & PgFromExpression160 & PgSelectInlineApply350 & PgFromExpression190 & PgSelectInlineApply354 --> PgSelect107
PgSelectRows108[["PgSelectRows[108∈10] ➊"]]:::plan
PgSelect107 --> PgSelectRows108
__Item109[/"__Item[109∈11]
ᐸ108ᐳ"\]:::itemplan
PgSelectRows108 ==> __Item109
PgSelectSingle110{{"PgSelectSingle[110∈11]
ᐸpostᐳ"}}:::plan
__Item109 --> PgSelectSingle110
- PgSelect192[["PgSelect[192∈12]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression112{{"PgClassExpression[112∈12]
ᐸ__post__ᐳ"}}:::plan
- Object11 & PgClassExpression112 & PgFromExpression190 & Connection191 --> PgSelect192
- PgSelect156[["PgSelect[156∈12]
ᐸpost_computed_compound_type_arrayᐳ"]]:::plan
- Object11 & PgClassExpression112 & PgFromExpression160 --> PgSelect156
__ListTransform204[["__ListTransform[204∈12]
ᐸeach:203ᐳ"]]:::plan
PgSelectRows193[["PgSelectRows[193∈12]"]]:::plan
- PgSelectRows193 & PgSelect192 --> __ListTransform204
+ Lambda357{{"Lambda[357∈12]"}}:::plan
+ PgSelectRows193 & Lambda357 --> __ListTransform204
+ List352{{"List[352∈12]
ᐸ109,351ᐳ"}}:::plan
+ Access351{{"Access[351∈12] ➊
ᐸ107.m.subqueryDetailsFor156ᐳ"}}:::plan
+ __Item109 & Access351 --> List352
+ List356{{"List[356∈12]
ᐸ109,355ᐳ"}}:::plan
+ Access355{{"Access[355∈12] ➊
ᐸ107.m.subqueryDetailsFor192ᐳ"}}:::plan
+ __Item109 & Access355 --> List356
PgClassExpression111{{"PgClassExpression[111∈12]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle110 --> PgClassExpression111
- PgSelectSingle110 --> PgClassExpression112
PgClassExpression114{{"PgClassExpression[114∈12]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle110 --> PgClassExpression114
PgClassExpression118{{"PgClassExpression[118∈12]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
@@ -271,12 +274,17 @@ graph TD
PgClassExpression144{{"PgClassExpression[144∈12]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle110 --> PgClassExpression144
PgSelectRows161[["PgSelectRows[161∈12]"]]:::plan
- PgSelect156 --> PgSelectRows161
+ Lambda353{{"Lambda[353∈12]"}}:::plan
+ Lambda353 --> PgSelectRows161
PgClassExpression176{{"PgClassExpression[176∈12]
ᐸ”a”.”post_...(__post__)ᐳ"}}:::plan
PgSelectSingle110 --> PgClassExpression176
PgClassExpression179{{"PgClassExpression[179∈12]
ᐸ”a”.”post_...(__post__)ᐳ"}}:::plan
PgSelectSingle110 --> PgClassExpression179
- PgSelect192 --> PgSelectRows193
+ Lambda357 --> PgSelectRows193
+ PgSelect107 --> Access351
+ List352 --> Lambda353
+ PgSelect107 --> Access355
+ List356 --> Lambda357
__Item162[/"__Item[162∈13]
ᐸ161ᐳ"\]:::itemplan
PgSelectRows161 ==> __Item162
PgSelectSingle163{{"PgSelectSingle[163∈13]
ᐸpost_computed_compound_type_arrayᐳ"}}:::plan
@@ -318,16 +326,16 @@ graph TD
PgCursor214{{"PgCursor[214∈22]"}}:::plan
PgClassExpression211 & PgCursor214 & Connection191 --> Edge212
PgSelectSingle210{{"PgSelectSingle[210∈22]
ᐸpost_computed_interval_setᐳ"}}:::plan
- Access213{{"Access[213∈22]
ᐸ192.cursorDetailsᐳ"}}:::plan
+ Access213{{"Access[213∈22]
ᐸ357.cursorDetailsᐳ"}}:::plan
PgSelectSingle210 & Access213 --> PgCursor214
__Item209[/"__Item[209∈22]
ᐸ204ᐳ"\]:::itemplan
__ListTransform204 ==> __Item209
__Item209 --> PgSelectSingle210
PgSelectSingle210 --> PgClassExpression211
- PgSelect192 --> Access213
+ Lambda357 --> Access213
PgSelect223[["PgSelect[223∈25] ➊
ᐸpersonᐳ"]]:::plan
- PgSelectInlineApply350["PgSelectInlineApply[350∈25] ➊"]:::plan
- Object11 & Connection221 & PgFromExpression262 & PgSelectInlineApply350 --> PgSelect223
+ PgSelectInlineApply362["PgSelectInlineApply[362∈25] ➊"]:::plan
+ Object11 & Connection221 & PgFromExpression262 & PgSelectInlineApply362 --> PgSelect223
PgSelectRows224[["PgSelectRows[224∈25] ➊"]]:::plan
PgSelect223 --> PgSelectRows224
__Item225[/"__Item[225∈26]
ᐸ224ᐳ"\]:::itemplan
@@ -336,10 +344,12 @@ graph TD
__Item225 --> PgSelectSingle226
PgSelect237[["PgSelect[237∈27]
ᐸperson_friendsᐳ"]]:::plan
PgClassExpression228{{"PgClassExpression[228∈27]
ᐸ__person__ᐳ"}}:::plan
- Object11 & PgClassExpression228 & PgFromExpression235 & Connection236 --> PgSelect237
- Object355{{"Object[355∈27]
ᐸ{m,hasMore,items}ᐳ"}}:::plan
- List354{{"List[354∈27]
ᐸ353ᐳ"}}:::plan
- Constant351 & Constant320 & List354 --> Object355
+ PgSelectInlineApply358["PgSelectInlineApply[358∈27] ➊"]:::plan
+ Object11 & PgClassExpression228 & PgFromExpression235 & Connection236 & PgFromExpression250 & PgSelectInlineApply358 --> PgSelect237
+ Constant378 --> PgSelectInlineApply358
+ Object367{{"Object[367∈27]
ᐸ{m,hasMore,items}ᐳ"}}:::plan
+ List366{{"List[366∈27]
ᐸ365ᐳ"}}:::plan
+ Constant363 & Constant320 & List366 --> Object367
PgClassExpression227{{"PgClassExpression[227∈27]
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle226 --> PgClassExpression227
PgSelectSingle226 --> PgClassExpression228
@@ -350,26 +360,28 @@ graph TD
First263{{"First[263∈27]"}}:::plan
PgSelectRows264[["PgSelectRows[264∈27]"]]:::plan
PgSelectRows264 --> First263
- Object355 --> PgSelectRows264
+ Object367 --> PgSelectRows264
PgSelectSingle265{{"PgSelectSingle[265∈27]
ᐸperson_first_postᐳ"}}:::plan
First263 --> PgSelectSingle265
- RemapKeys353{{"RemapKeys[353∈27]
ᐸ226:{”0”:1,”1”:2}ᐳ"}}:::plan
- PgSelectSingle226 --> RemapKeys353
- RemapKeys353 --> List354
+ RemapKeys365{{"RemapKeys[365∈27]
ᐸ226:{”0”:1,”1”:2}ᐳ"}}:::plan
+ PgSelectSingle226 --> RemapKeys365
+ RemapKeys365 --> List366
__Item239[/"__Item[239∈28]
ᐸ238ᐳ"\]:::itemplan
PgSelectRows238 ==> __Item239
PgSelectSingle240{{"PgSelectSingle[240∈28]
ᐸperson_friendsᐳ"}}:::plan
__Item239 --> PgSelectSingle240
- PgSelect252[["PgSelect[252∈29]
ᐸperson_friendsᐳ"]]:::plan
- PgClassExpression242{{"PgClassExpression[242∈29]
ᐸ__person_friends__ᐳ"}}:::plan
- Object11 & PgClassExpression242 & PgFromExpression250 & Connection251 & Constant366 --> PgSelect252
+ List360{{"List[360∈29]
ᐸ239,359ᐳ"}}:::plan
+ Access359{{"Access[359∈29]
ᐸ237.m.subqueryDetailsFor252ᐳ"}}:::plan
+ __Item239 & Access359 --> List360
PgClassExpression241{{"PgClassExpression[241∈29]
ᐸ__person_f...full_name”ᐳ"}}:::plan
PgSelectSingle240 --> PgClassExpression241
- PgSelectSingle240 --> PgClassExpression242
PgClassExpression243{{"PgClassExpression[243∈29]
ᐸ”c”.”perso...friends__)ᐳ"}}:::plan
PgSelectSingle240 --> PgClassExpression243
PgSelectRows253[["PgSelectRows[253∈29]"]]:::plan
- PgSelect252 --> PgSelectRows253
+ Lambda361{{"Lambda[361∈29]"}}:::plan
+ Lambda361 --> PgSelectRows253
+ PgSelect237 --> Access359
+ List360 --> Lambda361
__Item254[/"__Item[254∈30]
ᐸ253ᐳ"\]:::itemplan
PgSelectRows253 ==> __Item254
PgSelectSingle255{{"PgSelectSingle[255∈30]
ᐸperson_friendsᐳ"}}:::plan
@@ -412,9 +424,9 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/procedure-computed-fields"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 23, 34, 41, 52, 63, 74, 83, 94, 190, 235, 250, 262, 319, 320, 325, 330, 335, 340, 346, 351, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 11, 12, 105, 113, 117, 122, 125, 129, 134, 138, 143, 151, 191, 221, 236, 251, 271, 290, 296, 301, 306, 311, 316, 145, 154, 160
2: PgSelect[282]
3: PgSelectRows[285]
ᐳ: First[284], PgSelectSingle[286]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 9, 10, 23, 34, 41, 52, 63, 74, 83, 94, 190, 235, 250, 262, 319, 320, 325, 330, 335, 340, 346, 363, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 11, 12, 105, 113, 117, 122, 125, 129, 134, 138, 143, 151, 191, 221, 236, 251, 271, 290, 296, 301, 306, 311, 316, 145, 154, 160
2: PgSelect[282]
3: PgSelectRows[285]
ᐳ: First[284], PgSelectSingle[286]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Access9,Access10,Object11,Connection12,PgFromExpression23,PgFromExpression34,PgFromExpression41,PgFromExpression52,PgFromExpression63,PgFromExpression74,PgFromExpression83,PgFromExpression94,Connection105,PgFromExpression113,PgFromExpression117,PgFromExpression122,PgFromExpression125,PgFromExpression129,PgFromExpression134,PgFromExpression138,PgFromExpression143,__InputObject145,__InputObject151,BakedInput154,PgFromExpression160,PgFromExpression190,Connection191,Connection221,PgFromExpression235,Connection236,PgFromExpression250,Connection251,PgFromExpression262,Connection271,PgSelect282,First284,PgSelectRows285,PgSelectSingle286,PgFromExpression290,PgFromExpression296,PgFromExpression301,PgFromExpression306,PgFromExpression311,PgFromExpression316,Constant319,Constant320,Constant325,Constant330,Constant335,Constant340,Constant346,Constant351,Constant356,Constant357,Constant358,Constant359,Constant360,Constant361,Constant362,Constant363,Constant364,Constant365,Constant366,Constant367 bucket0
+ class Bucket0,__Value2,__Value4,Access9,Access10,Object11,Connection12,PgFromExpression23,PgFromExpression34,PgFromExpression41,PgFromExpression52,PgFromExpression63,PgFromExpression74,PgFromExpression83,PgFromExpression94,Connection105,PgFromExpression113,PgFromExpression117,PgFromExpression122,PgFromExpression125,PgFromExpression129,PgFromExpression134,PgFromExpression138,PgFromExpression143,__InputObject145,__InputObject151,BakedInput154,PgFromExpression160,PgFromExpression190,Connection191,Connection221,PgFromExpression235,Connection236,PgFromExpression250,Connection251,PgFromExpression262,Connection271,PgSelect282,First284,PgSelectRows285,PgSelectSingle286,PgFromExpression290,PgFromExpression296,PgFromExpression301,PgFromExpression306,PgFromExpression311,PgFromExpression316,Constant319,Constant320,Constant325,Constant330,Constant335,Constant340,Constant346,Constant363,Constant368,Constant369,Constant370,Constant371,Constant372,Constant373,Constant374,Constant375,Constant376,Constant377,Constant378,Constant379 bucket0
Bucket1("Bucket 1 (nullableBoundary)
Deps: 11, 12, 6, 23, 63, 34, 41, 52, 74, 83, 94, 319, 320, 325, 330, 335, 340, 346
ROOT Connectionᐸ8ᐳ[12]
1: 318, 334
2: PgSelect[14]
3: PgSelectRows[15]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,PgSelect14,PgSelectRows15,PgSelectInlineApply318,PgSelectInlineApply334 bucket1
@@ -442,15 +454,15 @@ graph TD
Bucket9("Bucket 9 (nullableBoundary)
Deps: 97
ROOT PgSelectSingle{7}ᐸfrmcdc_compoundTypeᐳ[97]"):::bucket
classDef bucket9 stroke:#ff0000
class Bucket9,PgClassExpression98,PgClassExpression99,PgClassExpression101 bucket9
- Bucket10("Bucket 10 (nullableBoundary)
Deps: 11, 105, 6, 113, 117, 122, 125, 129, 134, 138, 143, 160, 190, 191
ROOT Connectionᐸ103ᐳ[105]
1: PgSelect[107]
2: PgSelectRows[108]"):::bucket
+ Bucket10("Bucket 10 (nullableBoundary)
Deps: 11, 105, 6, 113, 117, 122, 125, 129, 134, 138, 143, 160, 190, 191
ROOT Connectionᐸ103ᐳ[105]
1: 350, 354
2: PgSelect[107]
3: PgSelectRows[108]"):::bucket
classDef bucket10 stroke:#ffff00
- class Bucket10,PgSelect107,PgSelectRows108 bucket10
- Bucket11("Bucket 11 (listItem)
Deps: 11, 160, 190, 191, 6
ROOT __Item{11}ᐸ108ᐳ[109]"):::bucket
+ class Bucket10,PgSelect107,PgSelectRows108,PgSelectInlineApply350,PgSelectInlineApply354 bucket10
+ Bucket11("Bucket 11 (listItem)
Deps: 107, 191
ROOT __Item{11}ᐸ108ᐳ[109]"):::bucket
classDef bucket11 stroke:#00ffff
class Bucket11,__Item109,PgSelectSingle110 bucket11
- Bucket12("Bucket 12 (nullableBoundary)
Deps: 110, 11, 160, 190, 191, 6
ROOT PgSelectSingle{11}ᐸpostᐳ[110]
1:
ᐳ: 111, 112, 114, 118, 123, 126, 130, 135, 139, 144, 176, 179
2: PgSelect[156], PgSelect[192]
3: PgSelectRows[161], PgSelectRows[193]
4: __ListTransform[204]"):::bucket
+ Bucket12("Bucket 12 (nullableBoundary)
Deps: 110, 107, 109, 191
ROOT PgSelectSingle{11}ᐸpostᐳ[110]
1:
ᐳ: 111, 114, 118, 123, 126, 130, 135, 139, 144, 176, 179, 351, 355, 352, 353, 356, 357
2: PgSelectRows[161], PgSelectRows[193]
3: __ListTransform[204]"):::bucket
classDef bucket12 stroke:#4169e1
- class Bucket12,PgClassExpression111,PgClassExpression112,PgClassExpression114,PgClassExpression118,PgClassExpression123,PgClassExpression126,PgClassExpression130,PgClassExpression135,PgClassExpression139,PgClassExpression144,PgSelect156,PgSelectRows161,PgClassExpression176,PgClassExpression179,PgSelect192,PgSelectRows193,__ListTransform204 bucket12
+ class Bucket12,PgClassExpression111,PgClassExpression114,PgClassExpression118,PgClassExpression123,PgClassExpression126,PgClassExpression130,PgClassExpression135,PgClassExpression139,PgClassExpression144,PgSelectRows161,PgClassExpression176,PgClassExpression179,PgSelectRows193,__ListTransform204,Access351,List352,Lambda353,Access355,List356,Lambda357 bucket12
Bucket13("Bucket 13 (listItem)
ROOT __Item{13}ᐸ161ᐳ[162]"):::bucket
classDef bucket13 stroke:#3cb371
class Bucket13,__Item162,PgSelectSingle163 bucket13
@@ -478,7 +490,7 @@ graph TD
Bucket21("Bucket 21 (subroutine)
ROOT PgClassExpression{21}ᐸ__post_com...al_set__.vᐳ[208]"):::bucket
classDef bucket21 stroke:#0000ff
class Bucket21,__Item206,PgSelectSingle207,PgClassExpression208 bucket21
- Bucket22("Bucket 22 (listItem)
Deps: 191, 192
ROOT __Item{22}ᐸ204ᐳ[209]"):::bucket
+ Bucket22("Bucket 22 (listItem)
Deps: 191, 357
ROOT __Item{22}ᐸ204ᐳ[209]"):::bucket
classDef bucket22 stroke:#7fff00
class Bucket22,__Item209,PgSelectSingle210,PgClassExpression211,Edge212,Access213,PgCursor214 bucket22
Bucket23("Bucket 23 (nullableBoundary)
Deps: 212, 211, 214
ROOT Edge{22}[212]"):::bucket
@@ -487,21 +499,21 @@ graph TD
Bucket24("Bucket 24 (nullableBoundary)
Deps: 211
ROOT PgClassExpression{22}ᐸ__post_com...al_set__.vᐳ[211]"):::bucket
classDef bucket24 stroke:#808000
class Bucket24 bucket24
- Bucket25("Bucket 25 (nullableBoundary)
Deps: 11, 221, 6, 262, 235, 236, 351, 320, 250, 251, 366
ROOT Connectionᐸ219ᐳ[221]
1: PgSelectInlineApply[350]
2: PgSelect[223]
3: PgSelectRows[224]"):::bucket
+ Bucket25("Bucket 25 (nullableBoundary)
Deps: 11, 221, 6, 262, 235, 236, 250, 378, 363, 320, 251
ROOT Connectionᐸ219ᐳ[221]
1: PgSelectInlineApply[362]
2: PgSelect[223]
3: PgSelectRows[224]"):::bucket
classDef bucket25 stroke:#dda0dd
- class Bucket25,PgSelect223,PgSelectRows224,PgSelectInlineApply350 bucket25
- Bucket26("Bucket 26 (listItem)
Deps: 11, 235, 236, 6, 351, 320, 250, 251, 366
ROOT __Item{26}ᐸ224ᐳ[225]"):::bucket
+ class Bucket25,PgSelect223,PgSelectRows224,PgSelectInlineApply362 bucket25
+ Bucket26("Bucket 26 (listItem)
Deps: 11, 235, 236, 6, 250, 378, 363, 320, 251
ROOT __Item{26}ᐸ224ᐳ[225]"):::bucket
classDef bucket26 stroke:#ff0000
class Bucket26,__Item225,PgSelectSingle226 bucket26
- Bucket27("Bucket 27 (nullableBoundary)
Deps: 226, 11, 235, 236, 6, 351, 320, 250, 251, 366
ROOT PgSelectSingle{26}ᐸpersonᐳ[226]
1:
ᐳ: 227, 228, 229, 353, 354, 355
2: PgSelect[237], PgSelectRows[264]
ᐳ: First[263], PgSelectSingle[265]
3: PgSelectRows[238]"):::bucket
+ Bucket27("Bucket 27 (nullableBoundary)
Deps: 226, 11, 235, 236, 6, 250, 378, 363, 320, 251
ROOT PgSelectSingle{26}ᐸpersonᐳ[226]
1: PgSelectInlineApply[358]
ᐳ: 227, 228, 229, 365, 366, 367
2: PgSelect[237], PgSelectRows[264]
ᐳ: First[263], PgSelectSingle[265]
3: PgSelectRows[238]"):::bucket
classDef bucket27 stroke:#ffff00
- class Bucket27,PgClassExpression227,PgClassExpression228,PgClassExpression229,PgSelect237,PgSelectRows238,First263,PgSelectRows264,PgSelectSingle265,RemapKeys353,List354,Object355 bucket27
- Bucket28("Bucket 28 (listItem)
Deps: 11, 250, 251, 366, 6
ROOT __Item{28}ᐸ238ᐳ[239]"):::bucket
+ class Bucket27,PgClassExpression227,PgClassExpression228,PgClassExpression229,PgSelect237,PgSelectRows238,First263,PgSelectRows264,PgSelectSingle265,PgSelectInlineApply358,RemapKeys365,List366,Object367 bucket27
+ Bucket28("Bucket 28 (listItem)
Deps: 237, 251
ROOT __Item{28}ᐸ238ᐳ[239]"):::bucket
classDef bucket28 stroke:#00ffff
class Bucket28,__Item239,PgSelectSingle240 bucket28
- Bucket29("Bucket 29 (nullableBoundary)
Deps: 240, 11, 250, 251, 366, 6
ROOT PgSelectSingle{28}ᐸperson_friendsᐳ[240]
1:
ᐳ: 241, 242, 243
2: PgSelect[252]
3: PgSelectRows[253]"):::bucket
+ Bucket29("Bucket 29 (nullableBoundary)
Deps: 240, 237, 239, 251
ROOT PgSelectSingle{28}ᐸperson_friendsᐳ[240]
1:
ᐳ: 241, 243, 359, 360, 361
2: PgSelectRows[253]"):::bucket
classDef bucket29 stroke:#4169e1
- class Bucket29,PgClassExpression241,PgClassExpression242,PgClassExpression243,PgSelect252,PgSelectRows253 bucket29
+ class Bucket29,PgClassExpression241,PgClassExpression243,PgSelectRows253,Access359,List360,Lambda361 bucket29
Bucket30("Bucket 30 (listItem)
ROOT __Item{30}ᐸ253ᐳ[254]"):::bucket
classDef bucket30 stroke:#3cb371
class Bucket30,__Item254,PgSelectSingle255 bucket30
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.sql b/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.sql
index c508c3fdb..57b28ac00 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/procedure-computed-fields.sql
@@ -59,45 +59,65 @@ order by __types__."id" asc;
select
__post__."headline" as "0",
- case when (__post__) is not distinct from null then null::text else json_build_array((((__post__)."id"))::text, ((__post__)."headline"), ((__post__)."body"), (((__post__)."author_id"))::text, (((__post__)."enums"))::text, (case when (((__post__)."comptypes")) is not distinct from null then null::text else array(
- select case when (__comptype__) is not distinct from null then null::text else json_build_array(to_char(((__comptype__)."schedule"), 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text), (((__comptype__)."is_optimised"))::text)::text end
- from unnest(((__post__)."comptypes")) __comptype__
- )::text end))::text end as "1",
- "a"."post_headline_trimmed"(__post__) as "2",
+ "a"."post_headline_trimmed"(__post__) as "1",
"a"."post_headline_trimmed"(
__post__,
$1::"int4"
- ) as "3",
+ ) as "2",
"a"."post_headline_trimmed"(
__post__,
$2::"int4",
$3::"text"
- ) as "4",
- "a"."post_headline_trimmed_strict"(__post__) as "5",
+ ) as "3",
+ "a"."post_headline_trimmed_strict"(__post__) as "4",
"a"."post_headline_trimmed_strict"(
__post__,
$4::"int4"
- ) as "6",
+ ) as "5",
"a"."post_headline_trimmed_strict"(
__post__,
$5::"int4",
$6::"text"
- ) as "7",
+ ) as "6",
"a"."post_headline_trimmed_no_defaults"(
__post__,
$7::"int4",
$8::"text"
- ) as "8",
+ ) as "7",
"a"."post_headline_trimmed_no_defaults"(
__post__,
$9::"int4",
$10::"text"
- ) as "9",
- ("a"."post_computed_text_array"(__post__))::text as "10",
+ ) as "8",
+ ("a"."post_computed_text_array"(__post__))::text as "9",
(case when ("a"."post_computed_interval_array"(__post__)) is not distinct from null then null::text else array(
select to_char(__entry__, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
from unnest("a"."post_computed_interval_array"(__post__)) __entry__
- )::text end) as "11"
+ )::text end) as "10",
+ array(
+ select array[
+ __post_computed_compound_type_array__."a"::text,
+ __post_computed_compound_type_array__."b",
+ __post_computed_compound_type_array__."c"::text,
+ __post_computed_compound_type_array__."d",
+ __post_computed_compound_type_array__."e"::text,
+ __post_computed_compound_type_array__."f"::text,
+ to_char(__post_computed_compound_type_array__."g", 'YYYY_MM_DD_HH24_MI_SS.US'::text),
+ __post_computed_compound_type_array__."foo_bar"::text,
+ (not (__post_computed_compound_type_array__ is null))::text
+ ]::text[]
+ from unnest("a"."post_computed_compound_type_array"(
+ __post__,
+ $11::"c"."compound_type"
+ )) as __post_computed_compound_type_array__
+ )::text as "11",
+ array(
+ select array[
+ to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text),
+ (row_number() over (partition by 1))::text
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set__(v)
+ )::text as "12"
from "a"."post" as __post__
order by __post__."id" asc;
@@ -160,54 +180,20 @@ lateral (
on TRUE
) as __frmcdc_nested_compound_type_result__;
-select __post_computed_compound_type_array_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"a"."post" as "id0" from json_array_elements($2::json) with ordinality as ids) as __post_computed_compound_type_array_identifiers__,
-lateral (
- select
- __post_computed_compound_type_array__."a"::text as "0",
- __post_computed_compound_type_array__."b" as "1",
- __post_computed_compound_type_array__."c"::text as "2",
- __post_computed_compound_type_array__."d" as "3",
- __post_computed_compound_type_array__."e"::text as "4",
- __post_computed_compound_type_array__."f"::text as "5",
- to_char(__post_computed_compound_type_array__."g", 'YYYY_MM_DD_HH24_MI_SS.US'::text) as "6",
- __post_computed_compound_type_array__."foo_bar"::text as "7",
- (not (__post_computed_compound_type_array__ is null))::text as "8",
- __post_computed_compound_type_array_identifiers__.idx as "9"
- from unnest("a"."post_computed_compound_type_array"(
- __post_computed_compound_type_array_identifiers__."id0",
- $1::"c"."compound_type"
- )) as __post_computed_compound_type_array__
-) as __post_computed_compound_type_array_result__;
-
-select __post_computed_interval_set_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"a"."post" as "id0" from json_array_elements($1::json) with ordinality as ids) as __post_computed_interval_set_identifiers__,
-lateral (
- select
- to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text) as "0",
- (row_number() over (partition by 1))::text as "1",
- __post_computed_interval_set_identifiers__.idx as "2"
- from "a"."post_computed_interval_set"(__post_computed_interval_set_identifiers__."id0") as __post_computed_interval_set__(v)
-) as __post_computed_interval_set_result__;
-
-select __person_friends_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"c"."person" as "id0" from json_array_elements($1::json) with ordinality as ids) as __person_friends_identifiers__,
-lateral (
- select
- __person_friends__."person_full_name" as "0",
- case when (__person_friends__) is not distinct from null then null::text else json_build_array((((__person_friends__)."id"))::text, ((__person_friends__)."person_full_name"), (((__person_friends__)."aliases"))::text, ((__person_friends__)."about"), ((__person_friends__)."email"), case when (((__person_friends__)."site")) is not distinct from null then null::text else json_build_array(((((__person_friends__)."site"))."url"))::text end, (((__person_friends__)."config"))::text, (((__person_friends__)."last_login_from_ip"))::text, (((__person_friends__)."last_login_from_subnet"))::text, (((__person_friends__)."user_mac"))::text, to_char(((__person_friends__)."created_at"), 'YYYY-MM-DD"T"HH24:MI:SS.US'::text))::text end as "1",
- "c"."person_first_name"(__person_friends__) as "2",
- __person_friends_identifiers__.idx as "3"
- from "c"."person_friends"(__person_friends_identifiers__."id0") as __person_friends__
-) as __person_friends_result__;
-
select __person_friends_result__.*
from (select ids.ordinality - 1 as idx, (ids.value->>0)::"c"."person" as "id0" from json_array_elements($1::json) with ordinality as ids) as __person_friends_identifiers__,
lateral (
select
__person_friends__."person_full_name" as "0",
"c"."person_first_name"(__person_friends__) as "1",
- __person_friends_identifiers__.idx as "2"
+ array(
+ select array[
+ __person_friends_2."person_full_name",
+ "c"."person_first_name"(__person_friends_2)
+ ]::text[]
+ from "c"."person_friends"(__person_friends__) as __person_friends_2
+ limit 1
+ )::text as "2",
+ __person_friends_identifiers__.idx as "3"
from "c"."person_friends"(__person_friends_identifiers__."id0") as __person_friends__
- limit 1
) as __person_friends_result__;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.mermaid
index 57364b3b2..088ba0900 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.mermaid
@@ -12,9 +12,9 @@ graph TD
Connection23{{"Connection[23∈0] ➊
ᐸ21ᐳ"}}:::plan
PgSelect35[["PgSelect[35∈0] ➊
ᐸpersonᐳ"]]:::plan
Object10{{"Object[10∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Constant248{{"Constant[248∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant252{{"Constant[252∈0] ➊
ᐸ1ᐳ"}}:::plan
PgSelectInlineApply223["PgSelectInlineApply[223∈0] ➊"]:::plan
- Object10 & Constant248 & PgSelectInlineApply223 --> PgSelect35
+ Object10 & Constant252 & PgSelectInlineApply223 --> PgSelect35
PgSelect60[["PgSelect[60∈0] ➊
ᐸpersonᐳ"]]:::plan
Access58{{"Access[58∈0] ➊
ᐸ57.1ᐳ"}}:::plan
PgSelectInlineApply229["PgSelectInlineApply[229∈0] ➊"]:::plan
@@ -27,25 +27,26 @@ graph TD
Access83 & PgSelectInlineApply235 --> PgSelect85
Connection122{{"Connection[122∈0] ➊
ᐸ120ᐳ"}}:::plan
PgSelect136[["PgSelect[136∈0] ➊
ᐸpersonᐳ"]]:::plan
- Constant252{{"Constant[252∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Constant256{{"Constant[256∈0] ➊
ᐸ2ᐳ"}}:::plan
PgSelectInlineApply241["PgSelectInlineApply[241∈0] ➊"]:::plan
- Object10 & Constant252 & PgSelectInlineApply241 --> PgSelect136
+ Object10 & Constant256 & PgSelectInlineApply241 --> PgSelect136
Connection175{{"Connection[175∈0] ➊
ᐸ173ᐳ"}}:::plan
+ PgSelect189[["PgSelect[189∈0] ➊
ᐸpersonᐳ"]]:::plan
+ Constant251{{"Constant[251∈0] ➊
ᐸ3ᐳ"}}:::plan
+ PgSelectInlineApply247["PgSelectInlineApply[247∈0] ➊"]:::plan
+ Object10 & Constant251 & PgSelectInlineApply247 --> PgSelect189
Connection203{{"Connection[203∈0] ➊
ᐸ199ᐳ"}}:::plan
PgSelect7[["PgSelect[7∈0] ➊
ᐸperson_secretᐳ"]]:::plan
- Constant247{{"Constant[247∈0] ➊
ᐸ3ᐳ"}}:::plan
- Object10 & Constant247 --> PgSelect7
+ Object10 & Constant251 --> PgSelect7
Access8{{"Access[8∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access9{{"Access[9∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access8 & Access9 --> Object10
PgSelect107[["PgSelect[107∈0] ➊
ᐸleft_armᐳ"]]:::plan
- Constant251{{"Constant[251∈0] ➊
ᐸ42ᐳ"}}:::plan
- Object10 & Constant251 --> PgSelect107
+ Constant255{{"Constant[255∈0] ➊
ᐸ42ᐳ"}}:::plan
+ Object10 & Constant255 --> PgSelect107
PgSelect160[["PgSelect[160∈0] ➊
ᐸpostᐳ"]]:::plan
- Constant253{{"Constant[253∈0] ➊
ᐸ7ᐳ"}}:::plan
- Object10 & Constant253 --> PgSelect160
- PgSelect189[["PgSelect[189∈0] ➊
ᐸpersonᐳ"]]:::plan
- Object10 & Constant247 --> PgSelect189
+ Constant257{{"Constant[257∈0] ➊
ᐸ7ᐳ"}}:::plan
+ Object10 & Constant257 --> PgSelect160
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access8
__Value2 --> Access9
@@ -62,8 +63,8 @@ graph TD
PgSelectSingle39{{"PgSelectSingle[39∈0] ➊
ᐸpersonᐳ"}}:::plan
First37 --> PgSelectSingle39
Lambda57{{"Lambda[57∈0] ➊
ᐸspecifier_Person_base64JSONᐳ"}}:::plan
- Constant249{{"Constant[249∈0] ➊
ᐸ'fa4f3e13-456c-4a9e-8c1e-37a6e3177d0b'ᐳ"}}:::plan
- Constant249 --> Lambda57
+ Constant253{{"Constant[253∈0] ➊
ᐸ'fa4f3e13-456c-4a9e-8c1e-37a6e3177d0b'ᐳ"}}:::plan
+ Constant253 --> Lambda57
Lambda57 --> Access58
First62{{"First[62∈0] ➊"}}:::plan
PgSelectRows63[["PgSelectRows[63∈0] ➊"]]:::plan
@@ -72,8 +73,8 @@ graph TD
PgSelectSingle64{{"PgSelectSingle[64∈0] ➊
ᐸpersonᐳ"}}:::plan
First62 --> PgSelectSingle64
Lambda82{{"Lambda[82∈0] ➊
ᐸspecifier_Person_base64JSONᐳ"}}:::plan
- Constant250{{"Constant[250∈0] ➊
ᐸ'WyJwZW9wbGUiLDBd'ᐳ"}}:::plan
- Constant250 --> Lambda82
+ Constant254{{"Constant[254∈0] ➊
ᐸ'WyJwZW9wbGUiLDBd'ᐳ"}}:::plan
+ Constant254 --> Lambda82
Lambda82 --> Access83
First87{{"First[87∈0] ➊"}}:::plan
PgSelectRows88[["PgSelectRows[88∈0] ➊"]]:::plan
@@ -311,16 +312,20 @@ graph TD
PgSelectSingle180 --> PgClassExpression186
PgClassExpression187{{"PgClassExpression[187∈20]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle180 --> PgClassExpression187
- PgSelect205[["PgSelect[205∈21] ➊
ᐸpostᐳ"]]:::plan
- PgClassExpression195{{"PgClassExpression[195∈21] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
- Object10 & PgClassExpression195 & Connection203 --> PgSelect205
List196{{"List[196∈21] ➊
ᐸ40,195ᐳ"}}:::plan
+ PgClassExpression195{{"PgClassExpression[195∈21] ➊
ᐸ__person__.”id”ᐳ"}}:::plan
Constant40 & PgClassExpression195 --> List196
+ List249{{"List[249∈21] ➊
ᐸ191,248ᐳ"}}:::plan
+ Access248{{"Access[248∈21] ➊
ᐸ189.m.subqueryDetailsFor205ᐳ"}}:::plan
+ First191 & Access248 --> List249
PgSelectSingle193 --> PgClassExpression195
Lambda197{{"Lambda[197∈21] ➊
ᐸbase64JSONEncodeᐳ"}}:::plan
List196 --> Lambda197
PgSelectRows206[["PgSelectRows[206∈21] ➊"]]:::plan
- PgSelect205 --> PgSelectRows206
+ Lambda250{{"Lambda[250∈21] ➊"}}:::plan
+ Lambda250 --> PgSelectRows206
+ PgSelect189 --> Access248
+ List249 --> Lambda250
__Item207[/"__Item[207∈22]
ᐸ206ᐳ"\]:::itemplan
PgSelectRows206 ==> __Item207
PgSelectSingle208{{"PgSelectSingle[208∈22]
ᐸpostᐳ"}}:::plan
@@ -345,9 +350,9 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/rbac.basic"
- Bucket0("Bucket 0 (root)
1: 223, 229, 235, 241
ᐳ: 8, 9, 14, 19, 40, 112, 165, 224, 225, 230, 236, 242, 247, 248, 249, 250, 251, 252, 253, 10, 23, 57, 58, 82, 83, 122, 175, 203
2: 7, 35, 60, 85, 107, 136, 160, 189, 216
3: 12, 38, 63, 88, 110, 139, 163, 192, 219
ᐳ: 11, 13, 37, 39, 62, 64, 87, 89, 109, 111, 138, 140, 162, 164, 191, 193, 218, 220"):::bucket
+ Bucket0("Bucket 0 (root)
1: 223, 229, 235, 241
ᐳ: 8, 9, 14, 19, 40, 112, 165, 224, 225, 230, 236, 242, 251, 252, 253, 254, 255, 256, 257, 10, 23, 57, 58, 82, 83, 122, 175, 203
2: 7, 35, 60, 85, 107, 136, 160, 216, 247
3: 12, 38, 63, 88, 110, 139, 163, 189, 219
ᐳ: 11, 13, 37, 39, 62, 64, 87, 89, 109, 111, 138, 140, 162, 164, 218, 220
4: PgSelectRows[192]
ᐳ: First[191], PgSelectSingle[193]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,First11,PgSelectRows12,PgSelectSingle13,Constant14,Connection23,PgSelect35,First37,PgSelectRows38,PgSelectSingle39,Constant40,Lambda57,Access58,PgSelect60,First62,PgSelectRows63,PgSelectSingle64,Lambda82,Access83,PgSelect85,First87,PgSelectRows88,PgSelectSingle89,PgSelect107,First109,PgSelectRows110,PgSelectSingle111,Constant112,Connection122,PgSelect136,First138,PgSelectRows139,PgSelectSingle140,PgSelect160,First162,PgSelectRows163,PgSelectSingle164,Constant165,Connection175,PgSelect189,First191,PgSelectRows192,PgSelectSingle193,Connection203,PgSelect216,First218,PgSelectRows219,PgSelectSingle220,PgSelectInlineApply223,Constant224,Constant225,PgSelectInlineApply229,Constant230,PgSelectInlineApply235,Constant236,PgSelectInlineApply241,Constant242,Constant247,Constant248,Constant249,Constant250,Constant251,Constant252,Constant253 bucket0
+ class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,First11,PgSelectRows12,PgSelectSingle13,Constant14,Connection23,PgSelect35,First37,PgSelectRows38,PgSelectSingle39,Constant40,Lambda57,Access58,PgSelect60,First62,PgSelectRows63,PgSelectSingle64,Lambda82,Access83,PgSelect85,First87,PgSelectRows88,PgSelectSingle89,PgSelect107,First109,PgSelectRows110,PgSelectSingle111,Constant112,Connection122,PgSelect136,First138,PgSelectRows139,PgSelectSingle140,PgSelect160,First162,PgSelectRows163,PgSelectSingle164,Constant165,Connection175,PgSelect189,First191,PgSelectRows192,PgSelectSingle193,Connection203,PgSelect216,First218,PgSelectRows219,PgSelectSingle220,PgSelectInlineApply223,Constant224,Constant225,PgSelectInlineApply229,Constant230,PgSelectInlineApply235,Constant236,PgSelectInlineApply241,Constant242,PgSelectInlineApply247,Constant251,Constant252,Constant253,Constant254,Constant255,Constant256,Constant257 bucket0
Bucket1("Bucket 1 (nullableBoundary)
Deps: 13, 14
ROOT PgSelectSingleᐸperson_secretᐳ[13]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,PgClassExpression15,List16,Lambda17,PgClassExpression18 bucket1
@@ -408,9 +413,9 @@ graph TD
Bucket20("Bucket 20 (nullableBoundary)
Deps: 180, 165
ROOT PgSelectSingle{19}ᐸpostᐳ[180]"):::bucket
classDef bucket20 stroke:#ffa500
class Bucket20,PgClassExpression182,List183,Lambda184,PgClassExpression185,PgClassExpression186,PgClassExpression187 bucket20
- Bucket21("Bucket 21 (nullableBoundary)
Deps: 193, 40, 10, 203, 19, 165
ROOT PgSelectSingleᐸpersonᐳ[193]
1:
ᐳ: 195, 196, 197
2: PgSelect[205]
3: PgSelectRows[206]"):::bucket
+ Bucket21("Bucket 21 (nullableBoundary)
Deps: 193, 40, 189, 191, 165, 203
ROOT PgSelectSingleᐸpersonᐳ[193]
1:
ᐳ: 195, 248, 196, 197, 249, 250
2: PgSelectRows[206]"):::bucket
classDef bucket21 stroke:#0000ff
- class Bucket21,PgClassExpression195,List196,Lambda197,PgSelect205,PgSelectRows206 bucket21
+ class Bucket21,PgClassExpression195,List196,Lambda197,PgSelectRows206,Access248,List249,Lambda250 bucket21
Bucket22("Bucket 22 (listItem)
Deps: 165
ROOT __Item{22}ᐸ206ᐳ[207]"):::bucket
classDef bucket22 stroke:#7fff00
class Bucket22,__Item207,PgSelectSingle208 bucket22
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.sql b/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.sql
index 0e9f2366b..f45b07a9e 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/rbac.basic.sql
@@ -111,11 +111,9 @@ begin; /*fake*/
select set_config(el->>0, el->>1, true) from json_array_elements($1::json) el
select
- __person__."id"::text as "0"
-from "c"."person" as __person__
-where (
- __person__."id" = $1::"int4"
-);
+ __return_table_without_grants__."person_id_1"::text as "0",
+ __return_table_without_grants__."person_id_2"::text as "1"
+from "c"."return_table_without_grants"() as __return_table_without_grants__;
commit; /*fake*/
@@ -124,9 +122,24 @@ begin; /*fake*/
select set_config(el->>0, el->>1, true) from json_array_elements($1::json) el
select
- __return_table_without_grants__."person_id_1"::text as "0",
- __return_table_without_grants__."person_id_2"::text as "1"
-from "c"."return_table_without_grants"() as __return_table_without_grants__;
+ __person__."id"::text as "0",
+ array(
+ select array[
+ __post__."id"::text,
+ __post__."headline",
+ __post__."body",
+ __post__."author_id"::text
+ ]::text[]
+ from "a"."post" as __post__
+ where (
+ __post__."author_id" = __person__."id"
+ )
+ order by __post__."id" asc
+ )::text as "1"
+from "c"."person" as __person__
+where (
+ __person__."id" = $1::"int4"
+);
commit; /*fake*/
@@ -168,21 +181,4 @@ select
from "a"."post" as __post__
order by __post__."id" asc;
-commit; /*fake*/
-
-begin; /*fake*/
-
-select set_config(el->>0, el->>1, true) from json_array_elements($1::json) el
-
-select
- __post__."id"::text as "0",
- __post__."headline" as "1",
- __post__."body" as "2",
- __post__."author_id"::text as "3"
-from "a"."post" as __post__
-where (
- __post__."author_id" = $1::"int4"
-)
-order by __post__."id" asc;
-
commit; /*fake*/
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.mermaid
index 5bfe798b4..68122af3d 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.mermaid
@@ -11,8 +11,8 @@ graph TD
%% plan dependencies
Connection12{{"Connection[12∈0] ➊
ᐸ8ᐳ"}}:::plan
Connection26{{"Connection[26∈0] ➊
ᐸ22ᐳ"}}:::plan
- Constant95{{"Constant[95∈0] ➊
ᐸ2ᐳ"}}:::plan
- Constant95 --> Connection26
+ Constant115{{"Constant[115∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Constant115 --> Connection26
Connection39{{"Connection[39∈0] ➊
ᐸ37ᐳ"}}:::plan
Connection51{{"Connection[51∈0] ➊
ᐸ49ᐳ"}}:::plan
Connection62{{"Connection[62∈0] ➊
ᐸ60ᐳ"}}:::plan
@@ -23,8 +23,8 @@ graph TD
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
__InputObject35{{"__InputObject[35∈0] ➊"}}:::plan
- Constant96{{"Constant[96∈0] ➊
ᐸ'Large bet on myself in round one.'ᐳ"}}:::plan
- Constant96 --> __InputObject35
+ Constant116{{"Constant[116∈0] ➊
ᐸ'Large bet on myself in round one.'ᐳ"}}:::plan
+ Constant116 --> __InputObject35
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access9
__Value2 --> Access10
@@ -32,33 +32,55 @@ graph TD
__InputObject35 --> ApplyInput41
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
PgSelect14[["PgSelect[14∈1] ➊
ᐸpersonᐳ"]]:::plan
- Object11 & Connection12 --> PgSelect14
+ PgSelectInlineApply95["PgSelectInlineApply[95∈1] ➊"]:::plan
+ PgSelectInlineApply99["PgSelectInlineApply[99∈1] ➊"]:::plan
+ PgSelectInlineApply103["PgSelectInlineApply[103∈1] ➊"]:::plan
+ PgSelectInlineApply107["PgSelectInlineApply[107∈1] ➊"]:::plan
+ Object11 & Connection12 & PgSelectInlineApply95 & PgSelectInlineApply99 & PgSelectInlineApply103 & PgSelectInlineApply107 --> PgSelect14
+ ApplyInput41 --> PgSelectInlineApply99
+ Constant115 --> PgSelectInlineApply95
PgSelectRows15[["PgSelectRows[15∈1] ➊"]]:::plan
PgSelect14 --> PgSelectRows15
__Item16[/"__Item[16∈2]
ᐸ15ᐳ"\]:::itemplan
PgSelectRows15 ==> __Item16
PgSelectSingle17{{"PgSelectSingle[17∈2]
ᐸpersonᐳ"}}:::plan
__Item16 --> PgSelectSingle17
- PgSelect42[["PgSelect[42∈3]
ᐸpostᐳ"]]:::plan
+ List97{{"List[97∈3]
ᐸ16,96ᐳ"}}:::plan
+ Access96{{"Access[96∈3] ➊
ᐸ14.m.subqueryDetailsFor28ᐳ"}}:::plan
+ __Item16 & Access96 --> List97
+ List101{{"List[101∈3]
ᐸ16,100ᐳ"}}:::plan
+ Access100{{"Access[100∈3] ➊
ᐸ14.m.subqueryDetailsFor42ᐳ"}}:::plan
+ __Item16 & Access100 --> List101
+ List105{{"List[105∈3]
ᐸ16,104ᐳ"}}:::plan
+ Access104{{"Access[104∈3] ➊
ᐸ14.m.subqueryDetailsFor53ᐳ"}}:::plan
+ __Item16 & Access104 --> List105
+ List109{{"List[109∈3]
ᐸ16,108ᐳ"}}:::plan
+ Access108{{"Access[108∈3] ➊
ᐸ14.m.subqueryDetailsFor64ᐳ"}}:::plan
+ __Item16 & Access108 --> List109
PgClassExpression18{{"PgClassExpression[18∈3]
ᐸ__person__.”id”ᐳ"}}:::plan
- Object11 & PgClassExpression18 & ApplyInput41 & Connection39 --> PgSelect42
- PgSelect28[["PgSelect[28∈3]
ᐸpostᐳ"]]:::plan
- Object11 & PgClassExpression18 & Connection26 & Constant95 --> PgSelect28
- PgSelect53[["PgSelect[53∈3]
ᐸcompound_keyᐳ"]]:::plan
- Object11 & PgClassExpression18 & Connection51 --> PgSelect53
- PgSelect64[["PgSelect[64∈3]
ᐸcompound_keyᐳ"]]:::plan
- Object11 & PgClassExpression18 & Connection62 --> PgSelect64
PgSelectSingle17 --> PgClassExpression18
PgClassExpression19{{"PgClassExpression[19∈3]
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle17 --> PgClassExpression19
PgSelectRows29[["PgSelectRows[29∈3]"]]:::plan
- PgSelect28 --> PgSelectRows29
+ Lambda98{{"Lambda[98∈3]"}}:::plan
+ Lambda98 --> PgSelectRows29
PgSelectRows43[["PgSelectRows[43∈3]"]]:::plan
- PgSelect42 --> PgSelectRows43
+ Lambda102{{"Lambda[102∈3]"}}:::plan
+ Lambda102 --> PgSelectRows43
PgSelectRows54[["PgSelectRows[54∈3]"]]:::plan
- PgSelect53 --> PgSelectRows54
+ Lambda106{{"Lambda[106∈3]"}}:::plan
+ Lambda106 --> PgSelectRows54
PgSelectRows65[["PgSelectRows[65∈3]"]]:::plan
- PgSelect64 --> PgSelectRows65
+ Lambda110{{"Lambda[110∈3]"}}:::plan
+ Lambda110 --> PgSelectRows65
+ PgSelect14 --> Access96
+ List97 --> Lambda98
+ PgSelect14 --> Access100
+ List101 --> Lambda102
+ PgSelect14 --> Access104
+ List105 --> Lambda106
+ PgSelect14 --> Access108
+ List109 --> Lambda110
__Item30[/"__Item[30∈4]
ᐸ29ᐳ"\]:::itemplan
PgSelectRows29 ==> __Item30
PgSelectSingle31{{"PgSelectSingle[31∈4]
ᐸpostᐳ"}}:::plan
@@ -92,21 +114,26 @@ graph TD
PgClassExpression69{{"PgClassExpression[69∈11]
ᐸ__compound...rson_id_2”ᐳ"}}:::plan
PgSelectSingle67 --> PgClassExpression69
PgSelect75[["PgSelect[75∈12] ➊
ᐸcompound_keyᐳ"]]:::plan
- Object11 & Connection73 --> PgSelect75
+ PgSelectInlineApply111["PgSelectInlineApply[111∈12] ➊"]:::plan
+ Object11 & Connection73 & PgSelectInlineApply111 --> PgSelect75
PgSelectRows76[["PgSelectRows[76∈12] ➊"]]:::plan
PgSelect75 --> PgSelectRows76
__Item77[/"__Item[77∈13]
ᐸ76ᐳ"\]:::itemplan
PgSelectRows76 ==> __Item77
PgSelectSingle78{{"PgSelectSingle[78∈13]
ᐸcompound_keyᐳ"}}:::plan
__Item77 --> PgSelectSingle78
- PgSelect88[["PgSelect[88∈14]
ᐸforeign_keyᐳ"]]:::plan
+ List113{{"List[113∈14]
ᐸ77,112ᐳ"}}:::plan
+ Access112{{"Access[112∈14] ➊
ᐸ75.m.subqueryDetailsFor88ᐳ"}}:::plan
+ __Item77 & Access112 --> List113
PgClassExpression79{{"PgClassExpression[79∈14]
ᐸ__compound...rson_id_1”ᐳ"}}:::plan
- PgClassExpression80{{"PgClassExpression[80∈14]
ᐸ__compound...rson_id_2”ᐳ"}}:::plan
- Object11 & PgClassExpression79 & PgClassExpression80 & Connection86 --> PgSelect88
PgSelectSingle78 --> PgClassExpression79
+ PgClassExpression80{{"PgClassExpression[80∈14]
ᐸ__compound...rson_id_2”ᐳ"}}:::plan
PgSelectSingle78 --> PgClassExpression80
PgSelectRows89[["PgSelectRows[89∈14]"]]:::plan
- PgSelect88 --> PgSelectRows89
+ Lambda114{{"Lambda[114∈14]"}}:::plan
+ Lambda114 --> PgSelectRows89
+ PgSelect75 --> Access112
+ List113 --> Lambda114
__Item90[/"__Item[90∈15]
ᐸ89ᐳ"\]:::itemplan
PgSelectRows89 ==> __Item90
PgSelectSingle91{{"PgSelectSingle[91∈15]
ᐸforeign_keyᐳ"}}:::plan
@@ -123,16 +150,16 @@ graph TD
subgraph "Buckets for queries/v4/relation-head-tail"
Bucket0("Bucket 0 (root)"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,Access9,Access10,Object11,Connection12,Connection26,__InputObject35,Connection39,ApplyInput41,Connection51,Connection62,Connection73,Connection86,Constant95,Constant96 bucket0
- Bucket1("Bucket 1 (nullableBoundary)
Deps: 11, 12, 6, 26, 95, 41, 39, 51, 62
ROOT Connectionᐸ8ᐳ[12]
1: PgSelect[14]
2: PgSelectRows[15]"):::bucket
+ class Bucket0,__Value2,__Value4,Access9,Access10,Object11,Connection12,Connection26,__InputObject35,Connection39,ApplyInput41,Connection51,Connection62,Connection73,Connection86,Constant115,Constant116 bucket0
+ Bucket1("Bucket 1 (nullableBoundary)
Deps: 11, 12, 6, 115, 41, 26, 39, 51, 62
ROOT Connectionᐸ8ᐳ[12]
1: 95, 99, 103, 107
2: PgSelect[14]
3: PgSelectRows[15]"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,PgSelect14,PgSelectRows15 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 11, 26, 6, 95, 41, 39, 51, 62
ROOT __Item{2}ᐸ15ᐳ[16]"):::bucket
+ class Bucket1,PgSelect14,PgSelectRows15,PgSelectInlineApply95,PgSelectInlineApply99,PgSelectInlineApply103,PgSelectInlineApply107 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 14, 26, 39, 51, 62
ROOT __Item{2}ᐸ15ᐳ[16]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item16,PgSelectSingle17 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 17, 11, 26, 6, 95, 41, 39, 51, 62
ROOT PgSelectSingle{2}ᐸpersonᐳ[17]
1:
ᐳ: 18, 19
2: 28, 42, 53, 64
3: 29, 43, 54, 65"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 17, 14, 16, 26, 39, 51, 62
ROOT PgSelectSingle{2}ᐸpersonᐳ[17]
1:
ᐳ: 18, 19, 96, 100, 104, 108, 97, 98, 101, 102, 105, 106, 109, 110
2: 29, 43, 54, 65"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression18,PgClassExpression19,PgSelect28,PgSelectRows29,PgSelect42,PgSelectRows43,PgSelect53,PgSelectRows54,PgSelect64,PgSelectRows65 bucket3
+ class Bucket3,PgClassExpression18,PgClassExpression19,PgSelectRows29,PgSelectRows43,PgSelectRows54,PgSelectRows65,Access96,List97,Lambda98,Access100,List101,Lambda102,Access104,List105,Lambda106,Access108,List109,Lambda110 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ29ᐳ[30]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item30,PgSelectSingle31 bucket4
@@ -157,15 +184,15 @@ graph TD
Bucket11("Bucket 11 (nullableBoundary)
Deps: 67
ROOT PgSelectSingle{10}ᐸcompound_keyᐳ[67]"):::bucket
classDef bucket11 stroke:#00ffff
class Bucket11,PgClassExpression68,PgClassExpression69 bucket11
- Bucket12("Bucket 12 (nullableBoundary)
Deps: 11, 73, 6, 86
ROOT Connectionᐸ71ᐳ[73]
1: PgSelect[75]
2: PgSelectRows[76]"):::bucket
+ Bucket12("Bucket 12 (nullableBoundary)
Deps: 11, 73, 6, 86
ROOT Connectionᐸ71ᐳ[73]
1: PgSelectInlineApply[111]
2: PgSelect[75]
3: PgSelectRows[76]"):::bucket
classDef bucket12 stroke:#4169e1
- class Bucket12,PgSelect75,PgSelectRows76 bucket12
- Bucket13("Bucket 13 (listItem)
Deps: 11, 86, 6
ROOT __Item{13}ᐸ76ᐳ[77]"):::bucket
+ class Bucket12,PgSelect75,PgSelectRows76,PgSelectInlineApply111 bucket12
+ Bucket13("Bucket 13 (listItem)
Deps: 75, 86
ROOT __Item{13}ᐸ76ᐳ[77]"):::bucket
classDef bucket13 stroke:#3cb371
class Bucket13,__Item77,PgSelectSingle78 bucket13
- Bucket14("Bucket 14 (nullableBoundary)
Deps: 78, 11, 86, 6
ROOT PgSelectSingle{13}ᐸcompound_keyᐳ[78]
1:
ᐳ: 79, 80
2: PgSelect[88]
3: PgSelectRows[89]"):::bucket
+ Bucket14("Bucket 14 (nullableBoundary)
Deps: 78, 75, 77, 86
ROOT PgSelectSingle{13}ᐸcompound_keyᐳ[78]
1:
ᐳ: 79, 80, 112, 113, 114
2: PgSelectRows[89]"):::bucket
classDef bucket14 stroke:#a52a2a
- class Bucket14,PgClassExpression79,PgClassExpression80,PgSelect88,PgSelectRows89 bucket14
+ class Bucket14,PgClassExpression79,PgClassExpression80,PgSelectRows89,Access112,List113,Lambda114 bucket14
Bucket15("Bucket 15 (listItem)
ROOT __Item{15}ᐸ89ᐳ[90]"):::bucket
classDef bucket15 stroke:#ff00ff
class Bucket15,__Item90,PgSelectSingle91 bucket15
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.sql b/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.sql
index 568a4c19e..cc837720a 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/relation-head-tail.sql
@@ -1,89 +1,74 @@
select
__person__."id"::text as "0",
- __person__."person_full_name" as "1"
+ __person__."person_full_name" as "1",
+ array(
+ select array[
+ __post__."headline",
+ __post__."author_id"::text
+ ]::text[]
+ from "a"."post" as __post__
+ where (
+ __post__."author_id" = __person__."id"
+ )
+ order by __post__."id" desc
+ limit 2
+ )::text as "2",
+ array(
+ select array[
+ __post_2."headline",
+ __post_2."author_id"::text
+ ]::text[]
+ from "a"."post" as __post_2
+ where
+ (
+ __post_2."author_id" = __person__."id"
+ ) and (
+ __post_2."headline" = $1::"text"
+ )
+ order by __post_2."id" asc
+ )::text as "3",
+ array(
+ select array[
+ __compound_key__."person_id_1"::text,
+ __compound_key__."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key__
+ where (
+ __compound_key__."person_id_1" = __person__."id"
+ )
+ order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
+ )::text as "4",
+ array(
+ select array[
+ __compound_key_2."person_id_1"::text,
+ __compound_key_2."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_2
+ where (
+ __compound_key_2."person_id_2" = __person__."id"
+ )
+ order by __compound_key_2."person_id_1" asc, __compound_key_2."person_id_2" asc
+ )::text as "5"
from "c"."person" as __person__
order by __person__."id" asc;
select
__compound_key__."person_id_1"::text as "0",
- __compound_key__."person_id_2"::text as "1"
+ __compound_key__."person_id_2"::text as "1",
+ array(
+ select array[
+ __foreign_key__."person_id"::text,
+ __foreign_key__."compound_key_1"::text,
+ __foreign_key__."compound_key_2"::text,
+ (not (__foreign_key__ is null))::text
+ ]::text[]
+ from "a"."foreign_key" as __foreign_key__
+ where
+ (
+ __foreign_key__."compound_key_1" = __compound_key__."person_id_1"
+ ) and (
+ __foreign_key__."compound_key_2" = __compound_key__."person_id_2"
+ )
+ )::text as "2"
from "c"."compound_key" as __compound_key__
-order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc;
-
-select __post_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 __post_identifiers__,
-lateral (
- select
- __post__."headline" as "0",
- __post__."author_id"::text as "1",
- __post_identifiers__.idx as "2"
- from "a"."post" as __post__
- where (
- __post__."author_id" = __post_identifiers__."id0"
- )
- order by __post__."id" desc
- limit 2
-) as __post_result__;
-
-select __post_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from json_array_elements($2::json) with ordinality as ids) as __post_identifiers__,
-lateral (
- select
- __post__."headline" as "0",
- __post__."author_id"::text as "1",
- __post_identifiers__.idx as "2"
- from "a"."post" as __post__
- where
- (
- __post__."author_id" = __post_identifiers__."id0"
- ) and (
- __post__."headline" = $1::"text"
- )
- order by __post__."id" asc
-) as __post_result__;
-
-select __compound_key_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 __compound_key_identifiers__,
-lateral (
- select
- __compound_key__."person_id_1"::text as "0",
- __compound_key__."person_id_2"::text as "1",
- __compound_key_identifiers__.idx as "2"
- from "c"."compound_key" as __compound_key__
- where (
- __compound_key__."person_id_1" = __compound_key_identifiers__."id0"
- )
- order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
-) as __compound_key_result__;
-
-select __compound_key_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 __compound_key_identifiers__,
-lateral (
- select
- __compound_key__."person_id_1"::text as "0",
- __compound_key__."person_id_2"::text as "1",
- __compound_key_identifiers__.idx as "2"
- from "c"."compound_key" as __compound_key__
- where (
- __compound_key__."person_id_2" = __compound_key_identifiers__."id0"
- )
- order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
-) as __compound_key_result__;
-
-select __foreign_key_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0", (ids.value->>1)::"int4" as "id1" from json_array_elements($1::json) with ordinality as ids) as __foreign_key_identifiers__,
-lateral (
- select
- __foreign_key__."person_id"::text as "0",
- __foreign_key__."compound_key_1"::text as "1",
- __foreign_key__."compound_key_2"::text as "2",
- (not (__foreign_key__ is null))::text as "3",
- __foreign_key_identifiers__.idx as "4"
- from "a"."foreign_key" as __foreign_key__
- where
- (
- __foreign_key__."compound_key_1" = __foreign_key_identifiers__."id0"
- ) and (
- __foreign_key__."compound_key_2" = __foreign_key_identifiers__."id1"
- )
-) as __foreign_key_result__;
\ No newline at end of file
+order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.mermaid
index 9566404ab..0377131b1 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.mermaid
@@ -11,51 +11,55 @@ graph TD
%% plan dependencies
PgSelect7[["PgSelect[7∈0] ➊
ᐸpersonᐳ"]]:::plan
Object10{{"Object[10∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Object10 --> PgSelect7
+ PgSelectInlineApply472["PgSelectInlineApply[472∈0] ➊"]:::plan
+ PgSelectInlineApply476["PgSelectInlineApply[476∈0] ➊"]:::plan
+ PgSelectInlineApply480["PgSelectInlineApply[480∈0] ➊"]:::plan
+ PgSelectInlineApply484["PgSelectInlineApply[484∈0] ➊"]:::plan
+ Object10 & PgSelectInlineApply472 & PgSelectInlineApply476 & PgSelectInlineApply480 & PgSelectInlineApply484 --> PgSelect7
Connection23{{"Connection[23∈0] ➊
ᐸ18ᐳ"}}:::plan
Connection38{{"Connection[38∈0] ➊
ᐸ33ᐳ"}}:::plan
- Constant436{{"Constant[436∈0] ➊
ᐸ1ᐳ"}}:::plan
- Constant436 --> Connection38
+ Constant536{{"Constant[536∈0] ➊
ᐸ1ᐳ"}}:::plan
+ Constant536 --> Connection38
Connection51{{"Connection[51∈0] ➊
ᐸ49ᐳ"}}:::plan
- Constant437{{"Constant[437∈0] ➊
ᐸ2ᐳ"}}:::plan
- Constant437 --> Connection51
+ Constant537{{"Constant[537∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Constant537 --> Connection51
Connection69{{"Connection[69∈0] ➊
ᐸ64ᐳ"}}:::plan
- Constant436 --> Connection69
+ Constant536 --> Connection69
Connection104{{"Connection[104∈0] ➊
ᐸ99ᐳ"}}:::plan
- Constant436 --> Connection104
+ Constant536 --> Connection104
Connection126{{"Connection[126∈0] ➊
ᐸ124ᐳ"}}:::plan
Connection145{{"Connection[145∈0] ➊
ᐸ140ᐳ"}}:::plan
- Constant436 --> Connection145
+ Constant536 --> Connection145
Connection182{{"Connection[182∈0] ➊
ᐸ177ᐳ"}}:::plan
- Constant436 --> Connection182
+ Constant536 --> Connection182
Connection202{{"Connection[202∈0] ➊
ᐸ200ᐳ"}}:::plan
Connection213{{"Connection[213∈0] ➊
ᐸ211ᐳ"}}:::plan
Connection238{{"Connection[238∈0] ➊
ᐸ236ᐳ"}}:::plan
Connection252{{"Connection[252∈0] ➊
ᐸ248ᐳ"}}:::plan
- Constant437 --> Connection252
+ Constant537 --> Connection252
Connection270{{"Connection[270∈0] ➊
ᐸ265ᐳ"}}:::plan
- Constant436 --> Connection270
+ Constant536 --> Connection270
Connection305{{"Connection[305∈0] ➊
ᐸ300ᐳ"}}:::plan
- Constant436 --> Connection305
+ Constant536 --> Connection305
Connection327{{"Connection[327∈0] ➊
ᐸ325ᐳ"}}:::plan
Connection346{{"Connection[346∈0] ➊
ᐸ341ᐳ"}}:::plan
- Constant436 --> Connection346
+ Constant536 --> Connection346
Connection383{{"Connection[383∈0] ➊
ᐸ378ᐳ"}}:::plan
- Constant436 --> Connection383
+ Constant536 --> Connection383
Connection403{{"Connection[403∈0] ➊
ᐸ401ᐳ"}}:::plan
Connection414{{"Connection[414∈0] ➊
ᐸ412ᐳ"}}:::plan
Access8{{"Access[8∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access9{{"Access[9∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access8 & Access9 --> Object10
__InputObject122{{"__InputObject[122∈0] ➊"}}:::plan
- Constant438{{"Constant[438∈0] ➊
ᐸ'Large bet on myself in round one.'ᐳ"}}:::plan
- Constant438 --> __InputObject122
+ Constant538{{"Constant[538∈0] ➊
ᐸ'Large bet on myself in round one.'ᐳ"}}:::plan
+ Constant538 --> __InputObject122
__InputObject162{{"__InputObject[162∈0] ➊"}}:::plan
- Constant438 --> __InputObject162
+ Constant538 --> __InputObject162
__InputObject323{{"__InputObject[323∈0] ➊"}}:::plan
- Constant438 --> __InputObject323
+ Constant538 --> __InputObject323
__InputObject363{{"__InputObject[363∈0] ➊"}}:::plan
- Constant438 --> __InputObject363
+ Constant538 --> __InputObject363
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access8
__Value2 --> Access9
@@ -98,25 +102,47 @@ graph TD
PgFromExpression394{{"PgFromExpression[394∈0] ➊"}}:::plan
PgSelect129[["PgSelect[129∈1]
ᐸpostᐳ"]]:::plan
PgClassExpression46{{"PgClassExpression[46∈1]
ᐸ__person__.”id”ᐳ"}}:::plan
- Object10 & PgClassExpression46 & ApplyInput128 & Connection126 & PgFromExpression135 --> PgSelect129
- PgSelect24[["PgSelect[24∈1]
ᐸperson_friendsᐳ"]]:::plan
- PgClassExpression15{{"PgClassExpression[15∈1]
ᐸ__person__ᐳ"}}:::plan
- Object10 & PgClassExpression15 & PgFromExpression22 & Connection23 --> PgSelect24
+ PgSelectInlineApply456["PgSelectInlineApply[456∈1] ➊"]:::plan
+ PgSelectInlineApply460["PgSelectInlineApply[460∈1] ➊"]:::plan
+ Object10 & PgClassExpression46 & ApplyInput128 & Connection126 & PgFromExpression135 & PgFromExpression144 & PgSelectInlineApply456 & PgFromExpression156 & PgSelectInlineApply460 --> PgSelect129
PgSelect53[["PgSelect[53∈1]
ᐸpostᐳ"]]:::plan
- Object10 & PgClassExpression46 & Connection51 & Constant437 & PgFromExpression59 --> PgSelect53
+ PgSelectInlineApply440["PgSelectInlineApply[440∈1] ➊"]:::plan
+ PgSelectInlineApply444["PgSelectInlineApply[444∈1] ➊"]:::plan
+ Object10 & PgClassExpression46 & Connection51 & Constant537 & PgFromExpression59 & PgFromExpression68 & PgSelectInlineApply440 & PgFromExpression80 & PgSelectInlineApply444 --> PgSelect53
PgSelect164[["PgSelect[164∈1]
ᐸpostᐳ"]]:::plan
- Object10 & PgClassExpression46 & ApplyInput166 & PgFromExpression172 --> PgSelect164
- PgSelect204[["PgSelect[204∈1]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression46 & Connection202 --> PgSelect204
- PgSelect215[["PgSelect[215∈1]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression46 & Connection213 --> PgSelect215
+ PgSelectInlineApply464["PgSelectInlineApply[464∈1] ➊"]:::plan
+ PgSelectInlineApply468["PgSelectInlineApply[468∈1] ➊"]:::plan
+ Object10 & PgClassExpression46 & ApplyInput166 & PgFromExpression172 & PgFromExpression181 & PgSelectInlineApply464 & PgFromExpression193 & PgSelectInlineApply468 --> PgSelect164
+ PgSelect24[["PgSelect[24∈1]
ᐸperson_friendsᐳ"]]:::plan
+ PgClassExpression15{{"PgClassExpression[15∈1]
ᐸ__person__ᐳ"}}:::plan
+ PgSelectInlineApply436["PgSelectInlineApply[436∈1] ➊"]:::plan
+ Object10 & PgClassExpression15 & PgFromExpression22 & Connection23 & PgFromExpression37 & PgSelectInlineApply436 --> PgSelect24
PgSelect87[["PgSelect[87∈1]
ᐸpostᐳ"]]:::plan
- Object10 & PgClassExpression46 & Constant437 & PgFromExpression94 --> PgSelect87
- PgSelect221[["PgSelect[221∈1]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression46 --> PgSelect221
- PgSelect228[["PgSelect[228∈1]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression46 --> PgSelect228
+ PgSelectInlineApply448["PgSelectInlineApply[448∈1] ➊"]:::plan
+ PgSelectInlineApply452["PgSelectInlineApply[452∈1] ➊"]:::plan
+ Object10 & PgClassExpression46 & Constant537 & PgFromExpression94 & PgFromExpression103 & PgSelectInlineApply448 & PgFromExpression115 & PgSelectInlineApply452 --> PgSelect87
+ Constant536 --> PgSelectInlineApply436
+ Constant536 --> PgSelectInlineApply440
+ Constant536 --> PgSelectInlineApply448
+ Constant536 --> PgSelectInlineApply456
+ Constant536 --> PgSelectInlineApply464
+ Constant536 --> PgSelectInlineApply444
+ Constant536 --> PgSelectInlineApply452
+ Constant536 --> PgSelectInlineApply460
+ Constant536 --> PgSelectInlineApply468
+ List474{{"List[474∈1]
ᐸ12,473ᐳ"}}:::plan
__Item12[/"__Item[12∈1]
ᐸ11ᐳ"\]:::itemplan
+ Access473{{"Access[473∈1] ➊
ᐸ7.m.subqueryDetailsFor204ᐳ"}}:::plan
+ __Item12 & Access473 --> List474
+ List478{{"List[478∈1]
ᐸ12,477ᐳ"}}:::plan
+ Access477{{"Access[477∈1] ➊
ᐸ7.m.subqueryDetailsFor215ᐳ"}}:::plan
+ __Item12 & Access477 --> List478
+ List482{{"List[482∈1]
ᐸ12,481ᐳ"}}:::plan
+ Access481{{"Access[481∈1] ➊
ᐸ7.m.subqueryDetailsFor221ᐳ"}}:::plan
+ __Item12 & Access481 --> List482
+ List486{{"List[486∈1]
ᐸ12,485ᐳ"}}:::plan
+ Access485{{"Access[485∈1] ➊
ᐸ7.m.subqueryDetailsFor228ᐳ"}}:::plan
+ __Item12 & Access485 --> List486
PgSelectRows11 ==> __Item12
PgSelectSingle13{{"PgSelectSingle[13∈1]
ᐸpersonᐳ"}}:::plan
__Item12 --> PgSelectSingle13
@@ -137,27 +163,41 @@ graph TD
PgSelectRows167[["PgSelectRows[167∈1]"]]:::plan
PgSelect164 --> PgSelectRows167
PgSelectRows205[["PgSelectRows[205∈1]"]]:::plan
- PgSelect204 --> PgSelectRows205
+ Lambda475{{"Lambda[475∈1]"}}:::plan
+ Lambda475 --> PgSelectRows205
PgSelectRows216[["PgSelectRows[216∈1]"]]:::plan
- PgSelect215 --> PgSelectRows216
+ Lambda479{{"Lambda[479∈1]"}}:::plan
+ Lambda479 --> PgSelectRows216
PgSelectRows223[["PgSelectRows[223∈1]"]]:::plan
- PgSelect221 --> PgSelectRows223
+ Lambda483{{"Lambda[483∈1]"}}:::plan
+ Lambda483 --> PgSelectRows223
PgSelectRows230[["PgSelectRows[230∈1]"]]:::plan
- PgSelect228 --> PgSelectRows230
+ Lambda487{{"Lambda[487∈1]"}}:::plan
+ Lambda487 --> PgSelectRows230
+ PgSelect7 --> Access473
+ List474 --> Lambda475
+ PgSelect7 --> Access477
+ List478 --> Lambda479
+ PgSelect7 --> Access481
+ List482 --> Lambda483
+ PgSelect7 --> Access485
+ List486 --> Lambda487
__Item26[/"__Item[26∈2]
ᐸ25ᐳ"\]:::itemplan
PgSelectRows25 ==> __Item26
PgSelectSingle27{{"PgSelectSingle[27∈2]
ᐸperson_friendsᐳ"}}:::plan
__Item26 --> PgSelectSingle27
- PgSelect39[["PgSelect[39∈3]
ᐸperson_friendsᐳ"]]:::plan
- PgClassExpression29{{"PgClassExpression[29∈3]
ᐸ__person_friends__ᐳ"}}:::plan
- Object10 & PgClassExpression29 & PgFromExpression37 & Connection38 & Constant436 --> PgSelect39
+ List438{{"List[438∈3]
ᐸ26,437ᐳ"}}:::plan
+ Access437{{"Access[437∈3]
ᐸ24.m.subqueryDetailsFor39ᐳ"}}:::plan
+ __Item26 & Access437 --> List438
PgClassExpression28{{"PgClassExpression[28∈3]
ᐸ__person_f...full_name”ᐳ"}}:::plan
PgSelectSingle27 --> PgClassExpression28
- PgSelectSingle27 --> PgClassExpression29
PgClassExpression30{{"PgClassExpression[30∈3]
ᐸ”c”.”perso...friends__)ᐳ"}}:::plan
PgSelectSingle27 --> PgClassExpression30
PgSelectRows40[["PgSelectRows[40∈3]"]]:::plan
- PgSelect39 --> PgSelectRows40
+ Lambda439{{"Lambda[439∈3]"}}:::plan
+ Lambda439 --> PgSelectRows40
+ PgSelect24 --> Access437
+ List438 --> Lambda439
__Item41[/"__Item[41∈4]
ᐸ40ᐳ"\]:::itemplan
PgSelectRows40 ==> __Item41
PgSelectSingle42{{"PgSelectSingle[42∈4]
ᐸperson_friendsᐳ"}}:::plan
@@ -170,22 +210,28 @@ graph TD
PgSelectRows54 ==> __Item55
PgSelectSingle56{{"PgSelectSingle[56∈6]
ᐸpostᐳ"}}:::plan
__Item55 --> PgSelectSingle56
- PgSelect70[["PgSelect[70∈7]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression58{{"PgClassExpression[58∈7]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression58 & PgFromExpression68 & Connection69 & Constant436 --> PgSelect70
- PgSelect78[["PgSelect[78∈7]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression58 & PgFromExpression80 & Constant436 --> PgSelect78
+ List442{{"List[442∈7]
ᐸ55,441ᐳ"}}:::plan
+ Access441{{"Access[441∈7]
ᐸ53.m.subqueryDetailsFor70ᐳ"}}:::plan
+ __Item55 & Access441 --> List442
+ List446{{"List[446∈7]
ᐸ55,445ᐳ"}}:::plan
+ Access445{{"Access[445∈7]
ᐸ53.m.subqueryDetailsFor78ᐳ"}}:::plan
+ __Item55 & Access445 --> List446
PgClassExpression57{{"PgClassExpression[57∈7]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle56 --> PgClassExpression57
- PgSelectSingle56 --> PgClassExpression58
PgClassExpression60{{"PgClassExpression[60∈7]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle56 --> PgClassExpression60
PgClassExpression61{{"PgClassExpression[61∈7]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle56 --> PgClassExpression61
PgSelectRows71[["PgSelectRows[71∈7]"]]:::plan
- PgSelect70 --> PgSelectRows71
+ Lambda443{{"Lambda[443∈7]"}}:::plan
+ Lambda443 --> PgSelectRows71
PgSelectRows81[["PgSelectRows[81∈7]"]]:::plan
- PgSelect78 --> PgSelectRows81
+ Lambda447{{"Lambda[447∈7]"}}:::plan
+ Lambda447 --> PgSelectRows81
+ PgSelect53 --> Access441
+ List442 --> Lambda443
+ PgSelect53 --> Access445
+ List446 --> Lambda447
__Item72[/"__Item[72∈8]
ᐸ71ᐳ"\]:::itemplan
PgSelectRows71 ==> __Item72
PgSelectSingle73{{"PgSelectSingle[73∈8]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -198,26 +244,32 @@ graph TD
__Item82 --> PgSelectSingle83
PgClassExpression84{{"PgClassExpression[84∈10]
ᐸ__post_com...al_set__.vᐳ"}}:::plan
PgSelectSingle83 --> PgClassExpression84
- PgSelect105[["PgSelect[105∈12]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression93{{"PgClassExpression[93∈12]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression93 & PgFromExpression103 & Connection104 & Constant436 --> PgSelect105
- PgSelect113[["PgSelect[113∈12]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression93 & PgFromExpression115 & Constant436 --> PgSelect113
+ List450{{"List[450∈12]
ᐸ90,449ᐳ"}}:::plan
__Item90[/"__Item[90∈12]
ᐸ89ᐳ"\]:::itemplan
+ Access449{{"Access[449∈12]
ᐸ87.m.subqueryDetailsFor105ᐳ"}}:::plan
+ __Item90 & Access449 --> List450
+ List454{{"List[454∈12]
ᐸ90,453ᐳ"}}:::plan
+ Access453{{"Access[453∈12]
ᐸ87.m.subqueryDetailsFor113ᐳ"}}:::plan
+ __Item90 & Access453 --> List454
PgSelectRows89 ==> __Item90
PgSelectSingle91{{"PgSelectSingle[91∈12]
ᐸpostᐳ"}}:::plan
__Item90 --> PgSelectSingle91
PgClassExpression92{{"PgClassExpression[92∈12]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle91 --> PgClassExpression92
- PgSelectSingle91 --> PgClassExpression93
PgClassExpression95{{"PgClassExpression[95∈12]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle91 --> PgClassExpression95
PgClassExpression96{{"PgClassExpression[96∈12]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle91 --> PgClassExpression96
PgSelectRows106[["PgSelectRows[106∈12]"]]:::plan
- PgSelect105 --> PgSelectRows106
+ Lambda451{{"Lambda[451∈12]"}}:::plan
+ Lambda451 --> PgSelectRows106
PgSelectRows116[["PgSelectRows[116∈12]"]]:::plan
- PgSelect113 --> PgSelectRows116
+ Lambda455{{"Lambda[455∈12]"}}:::plan
+ Lambda455 --> PgSelectRows116
+ PgSelect87 --> Access449
+ List450 --> Lambda451
+ PgSelect87 --> Access453
+ List454 --> Lambda455
__Item107[/"__Item[107∈13]
ᐸ106ᐳ"\]:::itemplan
PgSelectRows106 ==> __Item107
PgSelectSingle108{{"PgSelectSingle[108∈13]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -234,22 +286,28 @@ graph TD
PgSelectRows130 ==> __Item131
PgSelectSingle132{{"PgSelectSingle[132∈17]
ᐸpostᐳ"}}:::plan
__Item131 --> PgSelectSingle132
- PgSelect146[["PgSelect[146∈18]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression134{{"PgClassExpression[134∈18]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression134 & PgFromExpression144 & Connection145 & Constant436 --> PgSelect146
- PgSelect154[["PgSelect[154∈18]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression134 & PgFromExpression156 & Constant436 --> PgSelect154
+ List458{{"List[458∈18]
ᐸ131,457ᐳ"}}:::plan
+ Access457{{"Access[457∈18]
ᐸ129.m.subqueryDetailsFor146ᐳ"}}:::plan
+ __Item131 & Access457 --> List458
+ List462{{"List[462∈18]
ᐸ131,461ᐳ"}}:::plan
+ Access461{{"Access[461∈18]
ᐸ129.m.subqueryDetailsFor154ᐳ"}}:::plan
+ __Item131 & Access461 --> List462
PgClassExpression133{{"PgClassExpression[133∈18]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle132 --> PgClassExpression133
- PgSelectSingle132 --> PgClassExpression134
PgClassExpression136{{"PgClassExpression[136∈18]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle132 --> PgClassExpression136
PgClassExpression137{{"PgClassExpression[137∈18]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle132 --> PgClassExpression137
PgSelectRows147[["PgSelectRows[147∈18]"]]:::plan
- PgSelect146 --> PgSelectRows147
+ Lambda459{{"Lambda[459∈18]"}}:::plan
+ Lambda459 --> PgSelectRows147
PgSelectRows157[["PgSelectRows[157∈18]"]]:::plan
- PgSelect154 --> PgSelectRows157
+ Lambda463{{"Lambda[463∈18]"}}:::plan
+ Lambda463 --> PgSelectRows157
+ PgSelect129 --> Access457
+ List458 --> Lambda459
+ PgSelect129 --> Access461
+ List462 --> Lambda463
__Item148[/"__Item[148∈19]
ᐸ147ᐳ"\]:::itemplan
PgSelectRows147 ==> __Item148
PgSelectSingle149{{"PgSelectSingle[149∈19]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -262,26 +320,32 @@ graph TD
__Item158 --> PgSelectSingle159
PgClassExpression160{{"PgClassExpression[160∈21]
ᐸ__post_com...al_set__.vᐳ"}}:::plan
PgSelectSingle159 --> PgClassExpression160
- PgSelect183[["PgSelect[183∈23]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression171{{"PgClassExpression[171∈23]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression171 & PgFromExpression181 & Connection182 & Constant436 --> PgSelect183
- PgSelect191[["PgSelect[191∈23]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression171 & PgFromExpression193 & Constant436 --> PgSelect191
+ List466{{"List[466∈23]
ᐸ168,465ᐳ"}}:::plan
__Item168[/"__Item[168∈23]
ᐸ167ᐳ"\]:::itemplan
+ Access465{{"Access[465∈23]
ᐸ164.m.subqueryDetailsFor183ᐳ"}}:::plan
+ __Item168 & Access465 --> List466
+ List470{{"List[470∈23]
ᐸ168,469ᐳ"}}:::plan
+ Access469{{"Access[469∈23]
ᐸ164.m.subqueryDetailsFor191ᐳ"}}:::plan
+ __Item168 & Access469 --> List470
PgSelectRows167 ==> __Item168
PgSelectSingle169{{"PgSelectSingle[169∈23]
ᐸpostᐳ"}}:::plan
__Item168 --> PgSelectSingle169
PgClassExpression170{{"PgClassExpression[170∈23]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle169 --> PgClassExpression170
- PgSelectSingle169 --> PgClassExpression171
PgClassExpression173{{"PgClassExpression[173∈23]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle169 --> PgClassExpression173
PgClassExpression174{{"PgClassExpression[174∈23]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle169 --> PgClassExpression174
PgSelectRows184[["PgSelectRows[184∈23]"]]:::plan
- PgSelect183 --> PgSelectRows184
+ Lambda467{{"Lambda[467∈23]"}}:::plan
+ Lambda467 --> PgSelectRows184
PgSelectRows194[["PgSelectRows[194∈23]"]]:::plan
- PgSelect191 --> PgSelectRows194
+ Lambda471{{"Lambda[471∈23]"}}:::plan
+ Lambda471 --> PgSelectRows194
+ PgSelect164 --> Access465
+ List466 --> Lambda467
+ PgSelect164 --> Access469
+ List470 --> Lambda471
__Item185[/"__Item[185∈24]
ᐸ184ᐳ"\]:::itemplan
PgSelectRows184 ==> __Item185
PgSelectSingle186{{"PgSelectSingle[186∈24]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -327,7 +391,11 @@ graph TD
PgClassExpression234{{"PgClassExpression[234∈33]
ᐸ__compound...rson_id_2”ᐳ"}}:::plan
PgSelectSingle232 --> PgClassExpression234
PgSelect240[["PgSelect[240∈34] ➊
ᐸpersonᐳ"]]:::plan
- Object10 & Connection238 --> PgSelect240
+ PgSelectInlineApply520["PgSelectInlineApply[520∈34] ➊"]:::plan
+ PgSelectInlineApply524["PgSelectInlineApply[524∈34] ➊"]:::plan
+ PgSelectInlineApply528["PgSelectInlineApply[528∈34] ➊"]:::plan
+ PgSelectInlineApply532["PgSelectInlineApply[532∈34] ➊"]:::plan
+ Object10 & Connection238 & PgSelectInlineApply520 & PgSelectInlineApply524 & PgSelectInlineApply528 & PgSelectInlineApply532 --> PgSelect240
PgSelectRows241[["PgSelectRows[241∈34] ➊"]]:::plan
PgSelect240 --> PgSelectRows241
__Item242[/"__Item[242∈35]
ᐸ241ᐳ"\]:::itemplan
@@ -336,21 +404,41 @@ graph TD
__Item242 --> PgSelectSingle243
PgSelect330[["PgSelect[330∈36]
ᐸpostᐳ"]]:::plan
PgClassExpression244{{"PgClassExpression[244∈36]
ᐸ__person__.”id”ᐳ"}}:::plan
- Object10 & PgClassExpression244 & ApplyInput329 & Connection327 & PgFromExpression336 --> PgSelect330
+ PgSelectInlineApply504["PgSelectInlineApply[504∈36] ➊"]:::plan
+ PgSelectInlineApply508["PgSelectInlineApply[508∈36] ➊"]:::plan
+ Object10 & PgClassExpression244 & ApplyInput329 & Connection327 & PgFromExpression336 & PgFromExpression345 & PgSelectInlineApply504 & PgFromExpression357 & PgSelectInlineApply508 --> PgSelect330
PgSelect254[["PgSelect[254∈36]
ᐸpostᐳ"]]:::plan
- Object10 & PgClassExpression244 & Connection252 & Constant437 & PgFromExpression260 --> PgSelect254
+ PgSelectInlineApply488["PgSelectInlineApply[488∈36] ➊"]:::plan
+ PgSelectInlineApply492["PgSelectInlineApply[492∈36] ➊"]:::plan
+ Object10 & PgClassExpression244 & Connection252 & Constant537 & PgFromExpression260 & PgFromExpression269 & PgSelectInlineApply488 & PgFromExpression281 & PgSelectInlineApply492 --> PgSelect254
PgSelect365[["PgSelect[365∈36]
ᐸpostᐳ"]]:::plan
- Object10 & PgClassExpression244 & ApplyInput367 & PgFromExpression373 --> PgSelect365
- PgSelect405[["PgSelect[405∈36]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression244 & Connection403 --> PgSelect405
- PgSelect416[["PgSelect[416∈36]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression244 & Connection414 --> PgSelect416
+ PgSelectInlineApply512["PgSelectInlineApply[512∈36] ➊"]:::plan
+ PgSelectInlineApply516["PgSelectInlineApply[516∈36] ➊"]:::plan
+ Object10 & PgClassExpression244 & ApplyInput367 & PgFromExpression373 & PgFromExpression382 & PgSelectInlineApply512 & PgFromExpression394 & PgSelectInlineApply516 --> PgSelect365
PgSelect288[["PgSelect[288∈36]
ᐸpostᐳ"]]:::plan
- Object10 & PgClassExpression244 & Constant437 & PgFromExpression295 --> PgSelect288
- PgSelect422[["PgSelect[422∈36]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression244 --> PgSelect422
- PgSelect429[["PgSelect[429∈36]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression244 --> PgSelect429
+ PgSelectInlineApply496["PgSelectInlineApply[496∈36] ➊"]:::plan
+ PgSelectInlineApply500["PgSelectInlineApply[500∈36] ➊"]:::plan
+ Object10 & PgClassExpression244 & Constant537 & PgFromExpression295 & PgFromExpression304 & PgSelectInlineApply496 & PgFromExpression316 & PgSelectInlineApply500 --> PgSelect288
+ Constant536 --> PgSelectInlineApply488
+ Constant536 --> PgSelectInlineApply496
+ Constant536 --> PgSelectInlineApply504
+ Constant536 --> PgSelectInlineApply512
+ Constant536 --> PgSelectInlineApply492
+ Constant536 --> PgSelectInlineApply500
+ Constant536 --> PgSelectInlineApply508
+ Constant536 --> PgSelectInlineApply516
+ List522{{"List[522∈36]
ᐸ242,521ᐳ"}}:::plan
+ Access521{{"Access[521∈36] ➊
ᐸ240.m.subqueryDetailsFor405ᐳ"}}:::plan
+ __Item242 & Access521 --> List522
+ List526{{"List[526∈36]
ᐸ242,525ᐳ"}}:::plan
+ Access525{{"Access[525∈36] ➊
ᐸ240.m.subqueryDetailsFor416ᐳ"}}:::plan
+ __Item242 & Access525 --> List526
+ List530{{"List[530∈36]
ᐸ242,529ᐳ"}}:::plan
+ Access529{{"Access[529∈36] ➊
ᐸ240.m.subqueryDetailsFor422ᐳ"}}:::plan
+ __Item242 & Access529 --> List530
+ List534{{"List[534∈36]
ᐸ242,533ᐳ"}}:::plan
+ Access533{{"Access[533∈36] ➊
ᐸ240.m.subqueryDetailsFor429ᐳ"}}:::plan
+ __Item242 & Access533 --> List534
PgSelectSingle243 --> PgClassExpression244
PgClassExpression245{{"PgClassExpression[245∈36]
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle243 --> PgClassExpression245
@@ -363,33 +451,51 @@ graph TD
PgSelectRows368[["PgSelectRows[368∈36]"]]:::plan
PgSelect365 --> PgSelectRows368
PgSelectRows406[["PgSelectRows[406∈36]"]]:::plan
- PgSelect405 --> PgSelectRows406
+ Lambda523{{"Lambda[523∈36]"}}:::plan
+ Lambda523 --> PgSelectRows406
PgSelectRows417[["PgSelectRows[417∈36]"]]:::plan
- PgSelect416 --> PgSelectRows417
+ Lambda527{{"Lambda[527∈36]"}}:::plan
+ Lambda527 --> PgSelectRows417
PgSelectRows424[["PgSelectRows[424∈36]"]]:::plan
- PgSelect422 --> PgSelectRows424
+ Lambda531{{"Lambda[531∈36]"}}:::plan
+ Lambda531 --> PgSelectRows424
PgSelectRows431[["PgSelectRows[431∈36]"]]:::plan
- PgSelect429 --> PgSelectRows431
+ Lambda535{{"Lambda[535∈36]"}}:::plan
+ Lambda535 --> PgSelectRows431
+ PgSelect240 --> Access521
+ List522 --> Lambda523
+ PgSelect240 --> Access525
+ List526 --> Lambda527
+ PgSelect240 --> Access529
+ List530 --> Lambda531
+ PgSelect240 --> Access533
+ List534 --> Lambda535
__Item256[/"__Item[256∈37]
ᐸ255ᐳ"\]:::itemplan
PgSelectRows255 ==> __Item256
PgSelectSingle257{{"PgSelectSingle[257∈37]
ᐸpostᐳ"}}:::plan
__Item256 --> PgSelectSingle257
- PgSelect271[["PgSelect[271∈38]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression259{{"PgClassExpression[259∈38]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression259 & PgFromExpression269 & Connection270 & Constant436 --> PgSelect271
- PgSelect279[["PgSelect[279∈38]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression259 & PgFromExpression281 & Constant436 --> PgSelect279
+ List490{{"List[490∈38]
ᐸ256,489ᐳ"}}:::plan
+ Access489{{"Access[489∈38]
ᐸ254.m.subqueryDetailsFor271ᐳ"}}:::plan
+ __Item256 & Access489 --> List490
+ List494{{"List[494∈38]
ᐸ256,493ᐳ"}}:::plan
+ Access493{{"Access[493∈38]
ᐸ254.m.subqueryDetailsFor279ᐳ"}}:::plan
+ __Item256 & Access493 --> List494
PgClassExpression258{{"PgClassExpression[258∈38]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle257 --> PgClassExpression258
- PgSelectSingle257 --> PgClassExpression259
PgClassExpression261{{"PgClassExpression[261∈38]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle257 --> PgClassExpression261
PgClassExpression262{{"PgClassExpression[262∈38]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle257 --> PgClassExpression262
PgSelectRows272[["PgSelectRows[272∈38]"]]:::plan
- PgSelect271 --> PgSelectRows272
+ Lambda491{{"Lambda[491∈38]"}}:::plan
+ Lambda491 --> PgSelectRows272
PgSelectRows282[["PgSelectRows[282∈38]"]]:::plan
- PgSelect279 --> PgSelectRows282
+ Lambda495{{"Lambda[495∈38]"}}:::plan
+ Lambda495 --> PgSelectRows282
+ PgSelect254 --> Access489
+ List490 --> Lambda491
+ PgSelect254 --> Access493
+ List494 --> Lambda495
__Item273[/"__Item[273∈39]
ᐸ272ᐳ"\]:::itemplan
PgSelectRows272 ==> __Item273
PgSelectSingle274{{"PgSelectSingle[274∈39]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -402,26 +508,32 @@ graph TD
__Item283 --> PgSelectSingle284
PgClassExpression285{{"PgClassExpression[285∈41]
ᐸ__post_com...al_set__.vᐳ"}}:::plan
PgSelectSingle284 --> PgClassExpression285
- PgSelect306[["PgSelect[306∈43]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression294{{"PgClassExpression[294∈43]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression294 & PgFromExpression304 & Connection305 & Constant436 --> PgSelect306
- PgSelect314[["PgSelect[314∈43]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression294 & PgFromExpression316 & Constant436 --> PgSelect314
+ List498{{"List[498∈43]
ᐸ291,497ᐳ"}}:::plan
__Item291[/"__Item[291∈43]
ᐸ290ᐳ"\]:::itemplan
+ Access497{{"Access[497∈43]
ᐸ288.m.subqueryDetailsFor306ᐳ"}}:::plan
+ __Item291 & Access497 --> List498
+ List502{{"List[502∈43]
ᐸ291,501ᐳ"}}:::plan
+ Access501{{"Access[501∈43]
ᐸ288.m.subqueryDetailsFor314ᐳ"}}:::plan
+ __Item291 & Access501 --> List502
PgSelectRows290 ==> __Item291
PgSelectSingle292{{"PgSelectSingle[292∈43]
ᐸpostᐳ"}}:::plan
__Item291 --> PgSelectSingle292
PgClassExpression293{{"PgClassExpression[293∈43]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle292 --> PgClassExpression293
- PgSelectSingle292 --> PgClassExpression294
PgClassExpression296{{"PgClassExpression[296∈43]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle292 --> PgClassExpression296
PgClassExpression297{{"PgClassExpression[297∈43]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle292 --> PgClassExpression297
PgSelectRows307[["PgSelectRows[307∈43]"]]:::plan
- PgSelect306 --> PgSelectRows307
+ Lambda499{{"Lambda[499∈43]"}}:::plan
+ Lambda499 --> PgSelectRows307
PgSelectRows317[["PgSelectRows[317∈43]"]]:::plan
- PgSelect314 --> PgSelectRows317
+ Lambda503{{"Lambda[503∈43]"}}:::plan
+ Lambda503 --> PgSelectRows317
+ PgSelect288 --> Access497
+ List498 --> Lambda499
+ PgSelect288 --> Access501
+ List502 --> Lambda503
__Item308[/"__Item[308∈44]
ᐸ307ᐳ"\]:::itemplan
PgSelectRows307 ==> __Item308
PgSelectSingle309{{"PgSelectSingle[309∈44]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -438,22 +550,28 @@ graph TD
PgSelectRows331 ==> __Item332
PgSelectSingle333{{"PgSelectSingle[333∈48]
ᐸpostᐳ"}}:::plan
__Item332 --> PgSelectSingle333
- PgSelect347[["PgSelect[347∈49]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression335{{"PgClassExpression[335∈49]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression335 & PgFromExpression345 & Connection346 & Constant436 --> PgSelect347
- PgSelect355[["PgSelect[355∈49]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression335 & PgFromExpression357 & Constant436 --> PgSelect355
+ List506{{"List[506∈49]
ᐸ332,505ᐳ"}}:::plan
+ Access505{{"Access[505∈49]
ᐸ330.m.subqueryDetailsFor347ᐳ"}}:::plan
+ __Item332 & Access505 --> List506
+ List510{{"List[510∈49]
ᐸ332,509ᐳ"}}:::plan
+ Access509{{"Access[509∈49]
ᐸ330.m.subqueryDetailsFor355ᐳ"}}:::plan
+ __Item332 & Access509 --> List510
PgClassExpression334{{"PgClassExpression[334∈49]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle333 --> PgClassExpression334
- PgSelectSingle333 --> PgClassExpression335
PgClassExpression337{{"PgClassExpression[337∈49]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle333 --> PgClassExpression337
PgClassExpression338{{"PgClassExpression[338∈49]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle333 --> PgClassExpression338
PgSelectRows348[["PgSelectRows[348∈49]"]]:::plan
- PgSelect347 --> PgSelectRows348
+ Lambda507{{"Lambda[507∈49]"}}:::plan
+ Lambda507 --> PgSelectRows348
PgSelectRows358[["PgSelectRows[358∈49]"]]:::plan
- PgSelect355 --> PgSelectRows358
+ Lambda511{{"Lambda[511∈49]"}}:::plan
+ Lambda511 --> PgSelectRows358
+ PgSelect330 --> Access505
+ List506 --> Lambda507
+ PgSelect330 --> Access509
+ List510 --> Lambda511
__Item349[/"__Item[349∈50]
ᐸ348ᐳ"\]:::itemplan
PgSelectRows348 ==> __Item349
PgSelectSingle350{{"PgSelectSingle[350∈50]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -466,26 +584,32 @@ graph TD
__Item359 --> PgSelectSingle360
PgClassExpression361{{"PgClassExpression[361∈52]
ᐸ__post_com...al_set__.vᐳ"}}:::plan
PgSelectSingle360 --> PgClassExpression361
- PgSelect384[["PgSelect[384∈54]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression372{{"PgClassExpression[372∈54]
ᐸ__post__ᐳ"}}:::plan
- Object10 & PgClassExpression372 & PgFromExpression382 & Connection383 & Constant436 --> PgSelect384
- PgSelect392[["PgSelect[392∈54]
ᐸpost_computed_interval_setᐳ"]]:::plan
- Object10 & PgClassExpression372 & PgFromExpression394 & Constant436 --> PgSelect392
+ List514{{"List[514∈54]
ᐸ369,513ᐳ"}}:::plan
__Item369[/"__Item[369∈54]
ᐸ368ᐳ"\]:::itemplan
+ Access513{{"Access[513∈54]
ᐸ365.m.subqueryDetailsFor384ᐳ"}}:::plan
+ __Item369 & Access513 --> List514
+ List518{{"List[518∈54]
ᐸ369,517ᐳ"}}:::plan
+ Access517{{"Access[517∈54]
ᐸ365.m.subqueryDetailsFor392ᐳ"}}:::plan
+ __Item369 & Access517 --> List518
PgSelectRows368 ==> __Item369
PgSelectSingle370{{"PgSelectSingle[370∈54]
ᐸpostᐳ"}}:::plan
__Item369 --> PgSelectSingle370
PgClassExpression371{{"PgClassExpression[371∈54]
ᐸ__post__.”headline”ᐳ"}}:::plan
PgSelectSingle370 --> PgClassExpression371
- PgSelectSingle370 --> PgClassExpression372
PgClassExpression374{{"PgClassExpression[374∈54]
ᐸ(1/0) /* E...ferred! */ᐳ"}}:::plan
PgSelectSingle370 --> PgClassExpression374
PgClassExpression375{{"PgClassExpression[375∈54]
ᐸ__post__.”author_id”ᐳ"}}:::plan
PgSelectSingle370 --> PgClassExpression375
PgSelectRows385[["PgSelectRows[385∈54]"]]:::plan
- PgSelect384 --> PgSelectRows385
+ Lambda515{{"Lambda[515∈54]"}}:::plan
+ Lambda515 --> PgSelectRows385
PgSelectRows395[["PgSelectRows[395∈54]"]]:::plan
- PgSelect392 --> PgSelectRows395
+ Lambda519{{"Lambda[519∈54]"}}:::plan
+ Lambda519 --> PgSelectRows395
+ PgSelect365 --> Access513
+ List514 --> Lambda515
+ PgSelect365 --> Access517
+ List518 --> Lambda519
__Item386[/"__Item[386∈55]
ᐸ385ᐳ"\]:::itemplan
PgSelectRows385 ==> __Item386
PgSelectSingle387{{"PgSelectSingle[387∈55]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -534,30 +658,30 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/simple-procedure-computed-fields"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 8, 9, 22, 37, 68, 80, 103, 115, 144, 156, 181, 193, 269, 281, 304, 316, 345, 357, 382, 394, 436, 437, 438, 10, 23, 38, 51, 59, 69, 94, 104, 122, 126, 128, 135, 145, 162, 166, 172, 182, 202, 213, 238, 252, 260, 270, 295, 305, 323, 327, 329, 336, 346, 363, 367, 373, 383, 403, 414
2: PgSelect[7]
3: PgSelectRows[11]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 8, 9, 22, 37, 68, 80, 103, 115, 144, 156, 181, 193, 269, 281, 304, 316, 345, 357, 382, 394, 536, 537, 538, 10, 23, 38, 51, 59, 69, 94, 104, 122, 126, 128, 135, 145, 162, 166, 172, 182, 202, 213, 238, 252, 260, 270, 295, 305, 323, 327, 329, 336, 346, 363, 367, 373, 383, 403, 414
2: 472, 476, 480, 484
3: PgSelect[7]
4: PgSelectRows[11]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,PgSelectRows11,PgFromExpression22,Connection23,PgFromExpression37,Connection38,Connection51,PgFromExpression59,PgFromExpression68,Connection69,PgFromExpression80,PgFromExpression94,PgFromExpression103,Connection104,PgFromExpression115,__InputObject122,Connection126,ApplyInput128,PgFromExpression135,PgFromExpression144,Connection145,PgFromExpression156,__InputObject162,ApplyInput166,PgFromExpression172,PgFromExpression181,Connection182,PgFromExpression193,Connection202,Connection213,Connection238,Connection252,PgFromExpression260,PgFromExpression269,Connection270,PgFromExpression281,PgFromExpression295,PgFromExpression304,Connection305,PgFromExpression316,__InputObject323,Connection327,ApplyInput329,PgFromExpression336,PgFromExpression345,Connection346,PgFromExpression357,__InputObject363,ApplyInput367,PgFromExpression373,PgFromExpression382,Connection383,PgFromExpression394,Connection403,Connection414,Constant436,Constant437,Constant438 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 10, 22, 23, 6, 51, 437, 59, 94, 128, 126, 135, 166, 172, 202, 213, 37, 38, 436, 68, 69, 80, 103, 104, 115, 144, 145, 156, 181, 182, 193
ROOT __Item{1}ᐸ11ᐳ[12]
1:
ᐳ: 13, 14, 15, 16, 46
2: 24, 53, 87, 129, 164, 204, 215, 221, 228
3: 25, 54, 89, 130, 167, 205, 216, 223, 230"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,PgSelectRows11,PgFromExpression22,Connection23,PgFromExpression37,Connection38,Connection51,PgFromExpression59,PgFromExpression68,Connection69,PgFromExpression80,PgFromExpression94,PgFromExpression103,Connection104,PgFromExpression115,__InputObject122,Connection126,ApplyInput128,PgFromExpression135,PgFromExpression144,Connection145,PgFromExpression156,__InputObject162,ApplyInput166,PgFromExpression172,PgFromExpression181,Connection182,PgFromExpression193,Connection202,Connection213,Connection238,Connection252,PgFromExpression260,PgFromExpression269,Connection270,PgFromExpression281,PgFromExpression295,PgFromExpression304,Connection305,PgFromExpression316,__InputObject323,Connection327,ApplyInput329,PgFromExpression336,PgFromExpression345,Connection346,PgFromExpression357,__InputObject363,ApplyInput367,PgFromExpression373,PgFromExpression382,Connection383,PgFromExpression394,Connection403,Connection414,PgSelectInlineApply472,PgSelectInlineApply476,PgSelectInlineApply480,PgSelectInlineApply484,Constant536,Constant537,Constant538 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 10, 22, 23, 6, 37, 51, 537, 59, 68, 80, 94, 103, 115, 128, 126, 135, 144, 156, 166, 172, 181, 193, 536, 7, 38, 69, 104, 145, 182, 202, 213
ROOT __Item{1}ᐸ11ᐳ[12]
1: 436, 440, 444, 448, 452, 456, 460, 464, 468
ᐳ: 13, 473, 477, 481, 485, 14, 15, 16, 46, 474, 475, 478, 479, 482, 483, 486, 487
2: 24, 53, 87, 129, 164, 205, 216, 223, 230
3: 25, 54, 89, 130, 167"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,__Item12,PgSelectSingle13,PgClassExpression14,PgClassExpression15,PgClassExpression16,PgSelect24,PgSelectRows25,PgClassExpression46,PgSelect53,PgSelectRows54,PgSelect87,PgSelectRows89,PgSelect129,PgSelectRows130,PgSelect164,PgSelectRows167,PgSelect204,PgSelectRows205,PgSelect215,PgSelectRows216,PgSelect221,PgSelectRows223,PgSelect228,PgSelectRows230 bucket1
- Bucket2("Bucket 2 (listItem)
Deps: 10, 37, 38, 436, 6
ROOT __Item{2}ᐸ25ᐳ[26]"):::bucket
+ class Bucket1,__Item12,PgSelectSingle13,PgClassExpression14,PgClassExpression15,PgClassExpression16,PgSelect24,PgSelectRows25,PgClassExpression46,PgSelect53,PgSelectRows54,PgSelect87,PgSelectRows89,PgSelect129,PgSelectRows130,PgSelect164,PgSelectRows167,PgSelectRows205,PgSelectRows216,PgSelectRows223,PgSelectRows230,PgSelectInlineApply436,PgSelectInlineApply440,PgSelectInlineApply444,PgSelectInlineApply448,PgSelectInlineApply452,PgSelectInlineApply456,PgSelectInlineApply460,PgSelectInlineApply464,PgSelectInlineApply468,Access473,List474,Lambda475,Access477,List478,Lambda479,Access481,List482,Lambda483,Access485,List486,Lambda487 bucket1
+ Bucket2("Bucket 2 (listItem)
Deps: 24, 38
ROOT __Item{2}ᐸ25ᐳ[26]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item26,PgSelectSingle27 bucket2
- Bucket3("Bucket 3 (nullableBoundary)
Deps: 27, 10, 37, 38, 436, 6
ROOT PgSelectSingle{2}ᐸperson_friendsᐳ[27]
1:
ᐳ: 28, 29, 30
2: PgSelect[39]
3: PgSelectRows[40]"):::bucket
+ Bucket3("Bucket 3 (nullableBoundary)
Deps: 27, 24, 26, 38
ROOT PgSelectSingle{2}ᐸperson_friendsᐳ[27]
1:
ᐳ: 28, 30, 437, 438, 439
2: PgSelectRows[40]"):::bucket
classDef bucket3 stroke:#ffa500
- class Bucket3,PgClassExpression28,PgClassExpression29,PgClassExpression30,PgSelect39,PgSelectRows40 bucket3
+ class Bucket3,PgClassExpression28,PgClassExpression30,PgSelectRows40,Access437,List438,Lambda439 bucket3
Bucket4("Bucket 4 (listItem)
ROOT __Item{4}ᐸ40ᐳ[41]"):::bucket
classDef bucket4 stroke:#0000ff
class Bucket4,__Item41,PgSelectSingle42 bucket4
Bucket5("Bucket 5 (nullableBoundary)
Deps: 42
ROOT PgSelectSingle{4}ᐸperson_friendsᐳ[42]"):::bucket
classDef bucket5 stroke:#7fff00
class Bucket5,PgClassExpression43,PgClassExpression45 bucket5
- Bucket6("Bucket 6 (listItem)
Deps: 10, 68, 69, 436, 6, 80
ROOT __Item{6}ᐸ54ᐳ[55]"):::bucket
+ Bucket6("Bucket 6 (listItem)
Deps: 53, 69
ROOT __Item{6}ᐸ54ᐳ[55]"):::bucket
classDef bucket6 stroke:#ff1493
class Bucket6,__Item55,PgSelectSingle56 bucket6
- Bucket7("Bucket 7 (nullableBoundary)
Deps: 56, 10, 68, 69, 436, 6, 80
ROOT PgSelectSingle{6}ᐸpostᐳ[56]
1:
ᐳ: 57, 58, 60, 61
2: PgSelect[70], PgSelect[78]
3: PgSelectRows[71], PgSelectRows[81]"):::bucket
+ Bucket7("Bucket 7 (nullableBoundary)
Deps: 56, 53, 55, 69
ROOT PgSelectSingle{6}ᐸpostᐳ[56]
1:
ᐳ: 57, 60, 61, 441, 445, 442, 443, 446, 447
2: PgSelectRows[71], PgSelectRows[81]"):::bucket
classDef bucket7 stroke:#808000
- class Bucket7,PgClassExpression57,PgClassExpression58,PgClassExpression60,PgClassExpression61,PgSelect70,PgSelectRows71,PgSelect78,PgSelectRows81 bucket7
+ class Bucket7,PgClassExpression57,PgClassExpression60,PgClassExpression61,PgSelectRows71,PgSelectRows81,Access441,List442,Lambda443,Access445,List446,Lambda447 bucket7
Bucket8("Bucket 8 (listItem)
ROOT __Item{8}ᐸ71ᐳ[72]"):::bucket
classDef bucket8 stroke:#dda0dd
class Bucket8,__Item72,PgSelectSingle73,PgClassExpression74 bucket8
@@ -570,9 +694,9 @@ graph TD
Bucket11("Bucket 11 (nullableBoundary)
Deps: 84
ROOT PgClassExpression{10}ᐸ__post_com...al_set__.vᐳ[84]"):::bucket
classDef bucket11 stroke:#00ffff
class Bucket11 bucket11
- Bucket12("Bucket 12 (listItem)
Deps: 10, 103, 104, 436, 6, 115
ROOT __Item{12}ᐸ89ᐳ[90]
1:
ᐳ: 91, 92, 93, 95, 96
2: PgSelect[105], PgSelect[113]
3: PgSelectRows[106], PgSelectRows[116]"):::bucket
+ Bucket12("Bucket 12 (listItem)
Deps: 87, 104
ROOT __Item{12}ᐸ89ᐳ[90]
1:
ᐳ: 91, 449, 453, 92, 95, 96, 450, 451, 454, 455
2: PgSelectRows[106], PgSelectRows[116]"):::bucket
classDef bucket12 stroke:#4169e1
- class Bucket12,__Item90,PgSelectSingle91,PgClassExpression92,PgClassExpression93,PgClassExpression95,PgClassExpression96,PgSelect105,PgSelectRows106,PgSelect113,PgSelectRows116 bucket12
+ class Bucket12,__Item90,PgSelectSingle91,PgClassExpression92,PgClassExpression95,PgClassExpression96,PgSelectRows106,PgSelectRows116,Access449,List450,Lambda451,Access453,List454,Lambda455 bucket12
Bucket13("Bucket 13 (listItem)
ROOT __Item{13}ᐸ106ᐳ[107]"):::bucket
classDef bucket13 stroke:#3cb371
class Bucket13,__Item107,PgSelectSingle108,PgClassExpression109 bucket13
@@ -585,12 +709,12 @@ graph TD
Bucket16("Bucket 16 (nullableBoundary)
Deps: 119
ROOT PgClassExpression{15}ᐸ__post_com...al_set__.vᐳ[119]"):::bucket
classDef bucket16 stroke:#f5deb3
class Bucket16 bucket16
- Bucket17("Bucket 17 (listItem)
Deps: 10, 144, 145, 436, 6, 156
ROOT __Item{17}ᐸ130ᐳ[131]"):::bucket
+ Bucket17("Bucket 17 (listItem)
Deps: 129, 145
ROOT __Item{17}ᐸ130ᐳ[131]"):::bucket
classDef bucket17 stroke:#696969
class Bucket17,__Item131,PgSelectSingle132 bucket17
- Bucket18("Bucket 18 (nullableBoundary)
Deps: 132, 10, 144, 145, 436, 6, 156
ROOT PgSelectSingle{17}ᐸpostᐳ[132]
1:
ᐳ: 133, 134, 136, 137
2: PgSelect[146], PgSelect[154]
3: PgSelectRows[147], PgSelectRows[157]"):::bucket
+ Bucket18("Bucket 18 (nullableBoundary)
Deps: 132, 129, 131, 145
ROOT PgSelectSingle{17}ᐸpostᐳ[132]
1:
ᐳ: 133, 136, 137, 457, 461, 458, 459, 462, 463
2: PgSelectRows[147], PgSelectRows[157]"):::bucket
classDef bucket18 stroke:#00bfff
- class Bucket18,PgClassExpression133,PgClassExpression134,PgClassExpression136,PgClassExpression137,PgSelect146,PgSelectRows147,PgSelect154,PgSelectRows157 bucket18
+ class Bucket18,PgClassExpression133,PgClassExpression136,PgClassExpression137,PgSelectRows147,PgSelectRows157,Access457,List458,Lambda459,Access461,List462,Lambda463 bucket18
Bucket19("Bucket 19 (listItem)
ROOT __Item{19}ᐸ147ᐳ[148]"):::bucket
classDef bucket19 stroke:#7f007f
class Bucket19,__Item148,PgSelectSingle149,PgClassExpression150 bucket19
@@ -603,9 +727,9 @@ graph TD
Bucket22("Bucket 22 (nullableBoundary)
Deps: 160
ROOT PgClassExpression{21}ᐸ__post_com...al_set__.vᐳ[160]"):::bucket
classDef bucket22 stroke:#7fff00
class Bucket22 bucket22
- Bucket23("Bucket 23 (listItem)
Deps: 10, 181, 182, 436, 6, 193
ROOT __Item{23}ᐸ167ᐳ[168]
1:
ᐳ: 169, 170, 171, 173, 174
2: PgSelect[183], PgSelect[191]
3: PgSelectRows[184], PgSelectRows[194]"):::bucket
+ Bucket23("Bucket 23 (listItem)
Deps: 164, 182
ROOT __Item{23}ᐸ167ᐳ[168]
1:
ᐳ: 169, 465, 469, 170, 173, 174, 466, 467, 470, 471
2: PgSelectRows[184], PgSelectRows[194]"):::bucket
classDef bucket23 stroke:#ff1493
- class Bucket23,__Item168,PgSelectSingle169,PgClassExpression170,PgClassExpression171,PgClassExpression173,PgClassExpression174,PgSelect183,PgSelectRows184,PgSelect191,PgSelectRows194 bucket23
+ class Bucket23,__Item168,PgSelectSingle169,PgClassExpression170,PgClassExpression173,PgClassExpression174,PgSelectRows184,PgSelectRows194,Access465,List466,Lambda467,Access469,List470,Lambda471 bucket23
Bucket24("Bucket 24 (listItem)
ROOT __Item{24}ᐸ184ᐳ[185]"):::bucket
classDef bucket24 stroke:#808000
class Bucket24,__Item185,PgSelectSingle186,PgClassExpression187 bucket24
@@ -636,21 +760,21 @@ graph TD
Bucket33("Bucket 33 (listItem)
ROOT __Item{33}ᐸ230ᐳ[231]"):::bucket
classDef bucket33 stroke:#f5deb3
class Bucket33,__Item231,PgSelectSingle232,PgClassExpression233,PgClassExpression234 bucket33
- Bucket34("Bucket 34 (nullableBoundary)
Deps: 10, 238, 6, 252, 437, 260, 295, 329, 327, 336, 367, 373, 403, 414, 269, 270, 436, 281, 304, 305, 316, 345, 346, 357, 382, 383, 394
ROOT Connectionᐸ236ᐳ[238]
1: PgSelect[240]
2: PgSelectRows[241]"):::bucket
+ Bucket34("Bucket 34 (nullableBoundary)
Deps: 10, 238, 6, 252, 537, 260, 269, 281, 295, 304, 316, 329, 327, 336, 345, 357, 367, 373, 382, 394, 536, 270, 305, 346, 383, 403, 414
ROOT Connectionᐸ236ᐳ[238]
1: 520, 524, 528, 532
2: PgSelect[240]
3: PgSelectRows[241]"):::bucket
classDef bucket34 stroke:#696969
- class Bucket34,PgSelect240,PgSelectRows241 bucket34
- Bucket35("Bucket 35 (listItem)
Deps: 10, 252, 6, 437, 260, 295, 329, 327, 336, 367, 373, 403, 414, 269, 270, 436, 281, 304, 305, 316, 345, 346, 357, 382, 383, 394
ROOT __Item{35}ᐸ241ᐳ[242]"):::bucket
+ class Bucket34,PgSelect240,PgSelectRows241,PgSelectInlineApply520,PgSelectInlineApply524,PgSelectInlineApply528,PgSelectInlineApply532 bucket34
+ Bucket35("Bucket 35 (listItem)
Deps: 10, 252, 6, 537, 260, 269, 281, 295, 304, 316, 329, 327, 336, 345, 357, 367, 373, 382, 394, 536, 240, 270, 305, 346, 383, 403, 414
ROOT __Item{35}ᐸ241ᐳ[242]"):::bucket
classDef bucket35 stroke:#00bfff
class Bucket35,__Item242,PgSelectSingle243 bucket35
- Bucket36("Bucket 36 (nullableBoundary)
Deps: 243, 10, 252, 6, 437, 260, 295, 329, 327, 336, 367, 373, 403, 414, 269, 270, 436, 281, 304, 305, 316, 345, 346, 357, 382, 383, 394
ROOT PgSelectSingle{35}ᐸpersonᐳ[243]
1:
ᐳ: 244, 245
2: 254, 288, 330, 365, 405, 416, 422, 429
3: 255, 290, 331, 368, 406, 417, 424, 431"):::bucket
+ Bucket36("Bucket 36 (nullableBoundary)
Deps: 243, 10, 252, 6, 537, 260, 269, 281, 295, 304, 316, 329, 327, 336, 345, 357, 367, 373, 382, 394, 536, 240, 242, 270, 305, 346, 383, 403, 414
ROOT PgSelectSingle{35}ᐸpersonᐳ[243]
1: 488, 492, 496, 500, 504, 508, 512, 516
ᐳ: 244, 245, 521, 525, 529, 533, 522, 523, 526, 527, 530, 531, 534, 535
2: 254, 288, 330, 365, 406, 417, 424, 431
3: 255, 290, 331, 368"):::bucket
classDef bucket36 stroke:#7f007f
- class Bucket36,PgClassExpression244,PgClassExpression245,PgSelect254,PgSelectRows255,PgSelect288,PgSelectRows290,PgSelect330,PgSelectRows331,PgSelect365,PgSelectRows368,PgSelect405,PgSelectRows406,PgSelect416,PgSelectRows417,PgSelect422,PgSelectRows424,PgSelect429,PgSelectRows431 bucket36
- Bucket37("Bucket 37 (listItem)
Deps: 10, 269, 270, 436, 6, 281
ROOT __Item{37}ᐸ255ᐳ[256]"):::bucket
+ class Bucket36,PgClassExpression244,PgClassExpression245,PgSelect254,PgSelectRows255,PgSelect288,PgSelectRows290,PgSelect330,PgSelectRows331,PgSelect365,PgSelectRows368,PgSelectRows406,PgSelectRows417,PgSelectRows424,PgSelectRows431,PgSelectInlineApply488,PgSelectInlineApply492,PgSelectInlineApply496,PgSelectInlineApply500,PgSelectInlineApply504,PgSelectInlineApply508,PgSelectInlineApply512,PgSelectInlineApply516,Access521,List522,Lambda523,Access525,List526,Lambda527,Access529,List530,Lambda531,Access533,List534,Lambda535 bucket36
+ Bucket37("Bucket 37 (listItem)
Deps: 254, 270
ROOT __Item{37}ᐸ255ᐳ[256]"):::bucket
classDef bucket37 stroke:#ffa500
class Bucket37,__Item256,PgSelectSingle257 bucket37
- Bucket38("Bucket 38 (nullableBoundary)
Deps: 257, 10, 269, 270, 436, 6, 281
ROOT PgSelectSingle{37}ᐸpostᐳ[257]
1:
ᐳ: 258, 259, 261, 262
2: PgSelect[271], PgSelect[279]
3: PgSelectRows[272], PgSelectRows[282]"):::bucket
+ Bucket38("Bucket 38 (nullableBoundary)
Deps: 257, 254, 256, 270
ROOT PgSelectSingle{37}ᐸpostᐳ[257]
1:
ᐳ: 258, 261, 262, 489, 493, 490, 491, 494, 495
2: PgSelectRows[272], PgSelectRows[282]"):::bucket
classDef bucket38 stroke:#0000ff
- class Bucket38,PgClassExpression258,PgClassExpression259,PgClassExpression261,PgClassExpression262,PgSelect271,PgSelectRows272,PgSelect279,PgSelectRows282 bucket38
+ class Bucket38,PgClassExpression258,PgClassExpression261,PgClassExpression262,PgSelectRows272,PgSelectRows282,Access489,List490,Lambda491,Access493,List494,Lambda495 bucket38
Bucket39("Bucket 39 (listItem)
ROOT __Item{39}ᐸ272ᐳ[273]"):::bucket
classDef bucket39 stroke:#7fff00
class Bucket39,__Item273,PgSelectSingle274,PgClassExpression275 bucket39
@@ -663,9 +787,9 @@ graph TD
Bucket42("Bucket 42 (nullableBoundary)
Deps: 285
ROOT PgClassExpression{41}ᐸ__post_com...al_set__.vᐳ[285]"):::bucket
classDef bucket42 stroke:#dda0dd
class Bucket42 bucket42
- Bucket43("Bucket 43 (listItem)
Deps: 10, 304, 305, 436, 6, 316
ROOT __Item{43}ᐸ290ᐳ[291]
1:
ᐳ: 292, 293, 294, 296, 297
2: PgSelect[306], PgSelect[314]
3: PgSelectRows[307], PgSelectRows[317]"):::bucket
+ Bucket43("Bucket 43 (listItem)
Deps: 288, 305
ROOT __Item{43}ᐸ290ᐳ[291]
1:
ᐳ: 292, 497, 501, 293, 296, 297, 498, 499, 502, 503
2: PgSelectRows[307], PgSelectRows[317]"):::bucket
classDef bucket43 stroke:#ff0000
- class Bucket43,__Item291,PgSelectSingle292,PgClassExpression293,PgClassExpression294,PgClassExpression296,PgClassExpression297,PgSelect306,PgSelectRows307,PgSelect314,PgSelectRows317 bucket43
+ class Bucket43,__Item291,PgSelectSingle292,PgClassExpression293,PgClassExpression296,PgClassExpression297,PgSelectRows307,PgSelectRows317,Access497,List498,Lambda499,Access501,List502,Lambda503 bucket43
Bucket44("Bucket 44 (listItem)
ROOT __Item{44}ᐸ307ᐳ[308]"):::bucket
classDef bucket44 stroke:#ffff00
class Bucket44,__Item308,PgSelectSingle309,PgClassExpression310 bucket44
@@ -678,12 +802,12 @@ graph TD
Bucket47("Bucket 47 (nullableBoundary)
Deps: 320
ROOT PgClassExpression{46}ᐸ__post_com...al_set__.vᐳ[320]"):::bucket
classDef bucket47 stroke:#3cb371
class Bucket47 bucket47
- Bucket48("Bucket 48 (listItem)
Deps: 10, 345, 346, 436, 6, 357
ROOT __Item{48}ᐸ331ᐳ[332]"):::bucket
+ Bucket48("Bucket 48 (listItem)
Deps: 330, 346
ROOT __Item{48}ᐸ331ᐳ[332]"):::bucket
classDef bucket48 stroke:#a52a2a
class Bucket48,__Item332,PgSelectSingle333 bucket48
- Bucket49("Bucket 49 (nullableBoundary)
Deps: 333, 10, 345, 346, 436, 6, 357
ROOT PgSelectSingle{48}ᐸpostᐳ[333]
1:
ᐳ: 334, 335, 337, 338
2: PgSelect[347], PgSelect[355]
3: PgSelectRows[348], PgSelectRows[358]"):::bucket
+ Bucket49("Bucket 49 (nullableBoundary)
Deps: 333, 330, 332, 346
ROOT PgSelectSingle{48}ᐸpostᐳ[333]
1:
ᐳ: 334, 337, 338, 505, 509, 506, 507, 510, 511
2: PgSelectRows[348], PgSelectRows[358]"):::bucket
classDef bucket49 stroke:#ff00ff
- class Bucket49,PgClassExpression334,PgClassExpression335,PgClassExpression337,PgClassExpression338,PgSelect347,PgSelectRows348,PgSelect355,PgSelectRows358 bucket49
+ class Bucket49,PgClassExpression334,PgClassExpression337,PgClassExpression338,PgSelectRows348,PgSelectRows358,Access505,List506,Lambda507,Access509,List510,Lambda511 bucket49
Bucket50("Bucket 50 (listItem)
ROOT __Item{50}ᐸ348ᐳ[349]"):::bucket
classDef bucket50 stroke:#f5deb3
class Bucket50,__Item349,PgSelectSingle350,PgClassExpression351 bucket50
@@ -696,9 +820,9 @@ graph TD
Bucket53("Bucket 53 (nullableBoundary)
Deps: 361
ROOT PgClassExpression{52}ᐸ__post_com...al_set__.vᐳ[361]"):::bucket
classDef bucket53 stroke:#7f007f
class Bucket53 bucket53
- Bucket54("Bucket 54 (listItem)
Deps: 10, 382, 383, 436, 6, 394
ROOT __Item{54}ᐸ368ᐳ[369]
1:
ᐳ: 370, 371, 372, 374, 375
2: PgSelect[384], PgSelect[392]
3: PgSelectRows[385], PgSelectRows[395]"):::bucket
+ Bucket54("Bucket 54 (listItem)
Deps: 365, 383
ROOT __Item{54}ᐸ368ᐳ[369]
1:
ᐳ: 370, 513, 517, 371, 374, 375, 514, 515, 518, 519
2: PgSelectRows[385], PgSelectRows[395]"):::bucket
classDef bucket54 stroke:#ffa500
- class Bucket54,__Item369,PgSelectSingle370,PgClassExpression371,PgClassExpression372,PgClassExpression374,PgClassExpression375,PgSelect384,PgSelectRows385,PgSelect392,PgSelectRows395 bucket54
+ class Bucket54,__Item369,PgSelectSingle370,PgClassExpression371,PgClassExpression374,PgClassExpression375,PgSelectRows385,PgSelectRows395,Access513,List514,Lambda515,Access517,List518,Lambda519 bucket54
Bucket55("Bucket 55 (listItem)
ROOT __Item{55}ᐸ385ᐳ[386]"):::bucket
classDef bucket55 stroke:#0000ff
class Bucket55,__Item386,PgSelectSingle387,PgClassExpression388 bucket55
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.sql b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.sql
index bec6762e5..5d1dfecc2 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-computed-fields.sql
@@ -2,7 +2,51 @@ select
__person__."person_full_name" as "0",
case when (__person__) is not distinct from null then null::text else json_build_array((((__person__)."id"))::text, ((__person__)."person_full_name"), (((__person__)."aliases"))::text, ((__person__)."about"), ((__person__)."email"), case when (((__person__)."site")) is not distinct from null then null::text else json_build_array(((((__person__)."site"))."url"))::text end, (((__person__)."config"))::text, (((__person__)."last_login_from_ip"))::text, (((__person__)."last_login_from_subnet"))::text, (((__person__)."user_mac"))::text, to_char(((__person__)."created_at"), 'YYYY-MM-DD"T"HH24:MI:SS.US'::text))::text end as "1",
"c"."person_first_name"(__person__) as "2",
- __person__."id"::text as "3"
+ __person__."id"::text as "3",
+ array(
+ select array[
+ __compound_key__."person_id_1"::text,
+ __compound_key__."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key__
+ where (
+ __compound_key__."person_id_1" = __person__."id"
+ )
+ order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
+ )::text as "4",
+ array(
+ select array[
+ __compound_key_2."person_id_1"::text,
+ __compound_key_2."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_2
+ where (
+ __compound_key_2."person_id_2" = __person__."id"
+ )
+ order by __compound_key_2."person_id_1" asc, __compound_key_2."person_id_2" asc
+ )::text as "5",
+ array(
+ select array[
+ __compound_key_3."person_id_1"::text,
+ __compound_key_3."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_3
+ where (
+ __compound_key_3."person_id_1" = __person__."id"
+ )
+ order by __compound_key_3."person_id_1" asc, __compound_key_3."person_id_2" asc
+ )::text as "6",
+ array(
+ select array[
+ __compound_key_4."person_id_1"::text,
+ __compound_key_4."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_4
+ where (
+ __compound_key_4."person_id_2" = __person__."id"
+ )
+ order by __compound_key_4."person_id_1" asc, __compound_key_4."person_id_2" asc
+ )::text as "7"
from "c"."person" as __person__
order by __person__."id" asc;
@@ -11,8 +55,15 @@ from (select ids.ordinality - 1 as idx, (ids.value->>0)::"c"."person" as "id0" f
lateral (
select
__person_friends__."person_full_name" as "0",
- case when (__person_friends__) is not distinct from null then null::text else json_build_array((((__person_friends__)."id"))::text, ((__person_friends__)."person_full_name"), (((__person_friends__)."aliases"))::text, ((__person_friends__)."about"), ((__person_friends__)."email"), case when (((__person_friends__)."site")) is not distinct from null then null::text else json_build_array(((((__person_friends__)."site"))."url"))::text end, (((__person_friends__)."config"))::text, (((__person_friends__)."last_login_from_ip"))::text, (((__person_friends__)."last_login_from_subnet"))::text, (((__person_friends__)."user_mac"))::text, to_char(((__person_friends__)."created_at"), 'YYYY-MM-DD"T"HH24:MI:SS.US'::text))::text end as "1",
- "c"."person_first_name"(__person_friends__) as "2",
+ "c"."person_first_name"(__person_friends__) as "1",
+ array(
+ select array[
+ __person_friends_2."person_full_name",
+ "c"."person_first_name"(__person_friends_2)
+ ]::text[]
+ from "c"."person_friends"(__person_friends__) as __person_friends_2
+ limit 1
+ )::text as "2",
__person_friends_identifiers__.idx as "3"
from "c"."person_friends"(__person_friends_identifiers__."id0") as __person_friends__
) as __person_friends_result__;
@@ -22,13 +73,23 @@ from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from js
lateral (
select
__post__."headline" as "0",
- case when (__post__) is not distinct from null then null::text else json_build_array((((__post__)."id"))::text, ((__post__)."headline"), ((__post__)."body"), (((__post__)."author_id"))::text, (((__post__)."enums"))::text, (case when (((__post__)."comptypes")) is not distinct from null then null::text else array(
- select case when (__comptype__) is not distinct from null then null::text else json_build_array(to_char(((__comptype__)."schedule"), 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text), (((__comptype__)."is_optimised"))::text)::text end
- from unnest(((__post__)."comptypes")) __comptype__
- )::text end))::text end as "1",
- "a"."post_headline_trimmed"(__post__) as "2",
- __post__."author_id"::text as "3",
- __post_identifiers__.idx as "4"
+ "a"."post_headline_trimmed"(__post__) as "1",
+ __post__."author_id"::text as "2",
+ array(
+ select array[
+ to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set__(v)
+ limit 1
+ )::text as "3",
+ array(
+ select array[
+ to_char(__post_computed_interval_set_2.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set_2(v)
+ limit 1
+ )::text as "4",
+ __post_identifiers__.idx as "5"
from "a"."post" as __post__
where (
__post__."author_id" = __post_identifiers__."id0"
@@ -42,13 +103,23 @@ from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from js
lateral (
select
__post__."headline" as "0",
- case when (__post__) is not distinct from null then null::text else json_build_array((((__post__)."id"))::text, ((__post__)."headline"), ((__post__)."body"), (((__post__)."author_id"))::text, (((__post__)."enums"))::text, (case when (((__post__)."comptypes")) is not distinct from null then null::text else array(
- select case when (__comptype__) is not distinct from null then null::text else json_build_array(to_char(((__comptype__)."schedule"), 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text), (((__comptype__)."is_optimised"))::text)::text end
- from unnest(((__post__)."comptypes")) __comptype__
- )::text end))::text end as "1",
- "a"."post_headline_trimmed"(__post__) as "2",
- __post__."author_id"::text as "3",
- __post_identifiers__.idx as "4"
+ "a"."post_headline_trimmed"(__post__) as "1",
+ __post__."author_id"::text as "2",
+ array(
+ select array[
+ to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set__(v)
+ limit 1
+ )::text as "3",
+ array(
+ select array[
+ to_char(__post_computed_interval_set_2.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set_2(v)
+ limit 1
+ )::text as "4",
+ __post_identifiers__.idx as "5"
from "a"."post" as __post__
where (
__post__."author_id" = __post_identifiers__."id0"
@@ -62,13 +133,23 @@ from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from js
lateral (
select
__post__."headline" as "0",
- case when (__post__) is not distinct from null then null::text else json_build_array((((__post__)."id"))::text, ((__post__)."headline"), ((__post__)."body"), (((__post__)."author_id"))::text, (((__post__)."enums"))::text, (case when (((__post__)."comptypes")) is not distinct from null then null::text else array(
- select case when (__comptype__) is not distinct from null then null::text else json_build_array(to_char(((__comptype__)."schedule"), 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text), (((__comptype__)."is_optimised"))::text)::text end
- from unnest(((__post__)."comptypes")) __comptype__
- )::text end))::text end as "1",
- "a"."post_headline_trimmed"(__post__) as "2",
- __post__."author_id"::text as "3",
- __post_identifiers__.idx as "4"
+ "a"."post_headline_trimmed"(__post__) as "1",
+ __post__."author_id"::text as "2",
+ array(
+ select array[
+ to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set__(v)
+ limit 1
+ )::text as "3",
+ array(
+ select array[
+ to_char(__post_computed_interval_set_2.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set_2(v)
+ limit 1
+ )::text as "4",
+ __post_identifiers__.idx as "5"
from "a"."post" as __post__
where
(
@@ -79,72 +160,52 @@ lateral (
order by __post__."id" asc
) as __post_result__;
-select __compound_key_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 __compound_key_identifiers__,
-lateral (
- select
- __compound_key__."person_id_1"::text as "0",
- __compound_key__."person_id_2"::text as "1",
- __compound_key_identifiers__.idx as "2"
- from "c"."compound_key" as __compound_key__
- where (
- __compound_key__."person_id_1" = __compound_key_identifiers__."id0"
- )
- order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
-) as __compound_key_result__;
-
-select __compound_key_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 __compound_key_identifiers__,
-lateral (
- select
- __compound_key__."person_id_1"::text as "0",
- __compound_key__."person_id_2"::text as "1",
- __compound_key_identifiers__.idx as "2"
- from "c"."compound_key" as __compound_key__
- where (
- __compound_key__."person_id_2" = __compound_key_identifiers__."id0"
- )
- order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
-) as __compound_key_result__;
-
select
__person__."id"::text as "0",
- __person__."person_full_name" as "1"
+ __person__."person_full_name" as "1",
+ array(
+ select array[
+ __compound_key__."person_id_1"::text,
+ __compound_key__."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key__
+ where (
+ __compound_key__."person_id_1" = __person__."id"
+ )
+ order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
+ )::text as "2",
+ array(
+ select array[
+ __compound_key_2."person_id_1"::text,
+ __compound_key_2."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_2
+ where (
+ __compound_key_2."person_id_2" = __person__."id"
+ )
+ order by __compound_key_2."person_id_1" asc, __compound_key_2."person_id_2" asc
+ )::text as "3",
+ array(
+ select array[
+ __compound_key_3."person_id_1"::text,
+ __compound_key_3."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_3
+ where (
+ __compound_key_3."person_id_1" = __person__."id"
+ )
+ order by __compound_key_3."person_id_1" asc, __compound_key_3."person_id_2" asc
+ )::text as "4",
+ array(
+ select array[
+ __compound_key_4."person_id_1"::text,
+ __compound_key_4."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_4
+ where (
+ __compound_key_4."person_id_2" = __person__."id"
+ )
+ order by __compound_key_4."person_id_1" asc, __compound_key_4."person_id_2" asc
+ )::text as "5"
from "c"."person" as __person__
-order by __person__."id" asc;
-
-select __person_friends_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"c"."person" as "id0" from json_array_elements($1::json) with ordinality as ids) as __person_friends_identifiers__,
-lateral (
- select
- __person_friends__."person_full_name" as "0",
- "c"."person_first_name"(__person_friends__) as "1",
- __person_friends_identifiers__.idx as "2"
- from "c"."person_friends"(__person_friends_identifiers__."id0") as __person_friends__
- limit 1
-) as __person_friends_result__;
-
-select __post_computed_interval_set_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"a"."post" as "id0" from json_array_elements($1::json) with ordinality as ids) as __post_computed_interval_set_identifiers__,
-lateral (
- select
- to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text) as "0",
- __post_computed_interval_set_identifiers__.idx as "1"
- from "a"."post_computed_interval_set"(__post_computed_interval_set_identifiers__."id0") as __post_computed_interval_set__(v)
- limit 1
-) as __post_computed_interval_set_result__;
-
-select __post_computed_interval_set_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"a"."post" as "id0" from json_array_elements($1::json) with ordinality as ids) as __post_computed_interval_set_identifiers__,
-lateral (
- select
- to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text) as "0",
- __post_computed_interval_set_identifiers__.idx as "1"
- from "a"."post_computed_interval_set"(__post_computed_interval_set_identifiers__."id0") as __post_computed_interval_set__(v)
- limit 1
-) as __post_computed_interval_set_result__;
-
-select
- to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text) as "0"
-from "a"."post_computed_interval_set"($1::"a"."post") as __post_computed_interval_set__(v)
-limit 1;
\ No newline at end of file
+order by __person__."id" asc;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.mermaid
index a5df7a8bf..31f0bae41 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.mermaid
@@ -9,28 +9,30 @@ graph TD
%% plan dependencies
- PgSelect41[["PgSelect[41∈0] ➊
ᐸint_set_queryᐳ"]]:::plan
+ PgSelect67[["PgSelect[67∈0] ➊
ᐸpostᐳ"]]:::plan
Object11{{"Object[11∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
+ Constant92{{"Constant[92∈0] ➊
ᐸ1ᐳ"}}:::plan
+ PgFromExpression78{{"PgFromExpression[78∈0] ➊"}}:::plan
+ PgSelectInlineApply85["PgSelectInlineApply[85∈0] ➊"]:::plan
+ Object11 & Constant92 & PgFromExpression78 & PgSelectInlineApply85 --> PgSelect67
+ PgSelect41[["PgSelect[41∈0] ➊
ᐸint_set_queryᐳ"]]:::plan
PgFromExpression43{{"PgFromExpression[43∈0] ➊"}}:::plan
Object11 & PgFromExpression43 --> PgSelect41
PgSelect8[["PgSelect[8∈0] ➊
ᐸcompound_type_set_queryᐳ"]]:::plan
- Constant85{{"Constant[85∈0] ➊
ᐸ5ᐳ"}}:::plan
- Object11 & Constant85 --> PgSelect8
+ Constant89{{"Constant[89∈0] ➊
ᐸ5ᐳ"}}:::plan
+ Object11 & Constant89 --> PgSelect8
PgSelect25[["PgSelect[25∈0] ➊
ᐸtable_set_queryᐳ"]]:::plan
Object11 --> PgSelect25
PgSelect33[["PgSelect[33∈0] ➊
ᐸtable_set_queryᐳ"]]:::plan
- Constant86{{"Constant[86∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Constant90{{"Constant[90∈0] ➊
ᐸ2ᐳ"}}:::plan
Object11 --> PgSelect33
- Constant86 -- 2 --> PgSelect33
- Constant87{{"Constant[87∈0] ➊
ᐸ6ᐳ"}}:::plan
- Constant85 & Constant87 --> PgFromExpression43
+ Constant90 -- 2 --> PgSelect33
+ Constant91{{"Constant[91∈0] ➊
ᐸ6ᐳ"}}:::plan
+ Constant89 & Constant91 --> PgFromExpression43
PgSelect48[["PgSelect[48∈0] ➊
ᐸstatic_big_integerᐳ"]]:::plan
Object11 --> PgSelect48
PgSelect54[["PgSelect[54∈0] ➊
ᐸquery_interval_setᐳ"]]:::plan
Object11 --> PgSelect54
- PgSelect67[["PgSelect[67∈0] ➊
ᐸpostᐳ"]]:::plan
- Constant88{{"Constant[88∈0] ➊
ᐸ1ᐳ"}}:::plan
- Object11 & Constant88 --> PgSelect67
Access9{{"Access[9∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access10{{"Access[10∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access9 & Access10 --> Object11
@@ -52,7 +54,6 @@ graph TD
PgSelectRows69[["PgSelectRows[69∈0] ➊"]]:::plan
PgSelect67 --> PgSelectRows69
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- PgFromExpression78{{"PgFromExpression[78∈0] ➊"}}:::plan
__Item13[/"__Item[13∈1]
ᐸ12ᐳ"\]:::itemplan
PgSelectRows12 ==> __Item13
PgSelectSingle14{{"PgSelectSingle[14∈1]
ᐸcompound_type_set_queryᐳ"}}:::plan
@@ -101,18 +102,20 @@ graph TD
__Item57 --> PgSelectSingle58
PgClassExpression59{{"PgClassExpression[59∈10]
ᐸ__query_in...al_set__.vᐳ"}}:::plan
PgSelectSingle58 --> PgClassExpression59
- PgSelect74[["PgSelect[74∈12]
ᐸpost_computed_interval_setᐳ"]]:::plan
- PgClassExpression73{{"PgClassExpression[73∈12]
ᐸ__post__ᐳ"}}:::plan
- Object11 & PgClassExpression73 & PgFromExpression78 --> PgSelect74
+ List87{{"List[87∈12]
ᐸ70,86ᐳ"}}:::plan
__Item70[/"__Item[70∈12]
ᐸ69ᐳ"\]:::itemplan
+ Access86{{"Access[86∈12] ➊
ᐸ67.m.subqueryDetailsFor74ᐳ"}}:::plan
+ __Item70 & Access86 --> List87
PgSelectRows69 ==> __Item70
PgSelectSingle71{{"PgSelectSingle[71∈12]
ᐸpostᐳ"}}:::plan
__Item70 --> PgSelectSingle71
PgClassExpression72{{"PgClassExpression[72∈12]
ᐸ__post__.”id”ᐳ"}}:::plan
PgSelectSingle71 --> PgClassExpression72
- PgSelectSingle71 --> PgClassExpression73
PgSelectRows79[["PgSelectRows[79∈12]"]]:::plan
- PgSelect74 --> PgSelectRows79
+ Lambda88{{"Lambda[88∈12]"}}:::plan
+ Lambda88 --> PgSelectRows79
+ PgSelect67 --> Access86
+ List87 --> Lambda88
__Item80[/"__Item[80∈13]
ᐸ79ᐳ"\]:::itemplan
PgSelectRows79 ==> __Item80
PgSelectSingle81{{"PgSelectSingle[81∈13]
ᐸpost_computed_interval_setᐳ"}}:::plan
@@ -123,9 +126,9 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/simple-procedure-query"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 7, 9, 10, 78, 85, 86, 87, 88, 11, 43
2: 8, 25, 33, 41, 48, 54, 67
3: 12, 27, 35, 44, 50, 56, 69"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 7, 9, 10, 78, 89, 90, 91, 92, 11, 43
2: 8, 25, 33, 41, 48, 54, 85
3: 12, 27, 35, 44, 50, 56, 67
4: PgSelectRows[69]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,PgSelectRows12,PgSelect25,PgSelectRows27,PgSelect33,PgSelectRows35,PgSelect41,PgFromExpression43,PgSelectRows44,PgSelect48,PgSelectRows50,PgSelect54,PgSelectRows56,PgSelect67,PgSelectRows69,PgFromExpression78,Constant85,Constant86,Constant87,Constant88 bucket0
+ class Bucket0,__Value2,__Value4,PgSelect8,Access9,Access10,Object11,PgSelectRows12,PgSelect25,PgSelectRows27,PgSelect33,PgSelectRows35,PgSelect41,PgFromExpression43,PgSelectRows44,PgSelect48,PgSelectRows50,PgSelect54,PgSelectRows56,PgSelect67,PgSelectRows69,PgFromExpression78,PgSelectInlineApply85,Constant89,Constant90,Constant91,Constant92 bucket0
Bucket1("Bucket 1 (listItem)
ROOT __Item{1}ᐸ12ᐳ[13]"):::bucket
classDef bucket1 stroke:#00bfff
class Bucket1,__Item13,PgSelectSingle14 bucket1
@@ -159,9 +162,9 @@ graph TD
Bucket11("Bucket 11 (nullableBoundary)
Deps: 59
ROOT PgClassExpression{10}ᐸ__query_in...al_set__.vᐳ[59]"):::bucket
classDef bucket11 stroke:#00ffff
class Bucket11 bucket11
- Bucket12("Bucket 12 (listItem)
Deps: 11, 78, 7
ROOT __Item{12}ᐸ69ᐳ[70]
1:
ᐳ: 71, 72, 73
2: PgSelect[74]
3: PgSelectRows[79]"):::bucket
+ Bucket12("Bucket 12 (listItem)
Deps: 67
ROOT __Item{12}ᐸ69ᐳ[70]
1:
ᐳ: 71, 86, 72, 87, 88
2: PgSelectRows[79]"):::bucket
classDef bucket12 stroke:#4169e1
- class Bucket12,__Item70,PgSelectSingle71,PgClassExpression72,PgClassExpression73,PgSelect74,PgSelectRows79 bucket12
+ class Bucket12,__Item70,PgSelectSingle71,PgClassExpression72,PgSelectRows79,Access86,List87,Lambda88 bucket12
Bucket13("Bucket 13 (listItem)
ROOT __Item{13}ᐸ79ᐳ[80]"):::bucket
classDef bucket13 stroke:#3cb371
class Bucket13,__Item80,PgSelectSingle81,PgClassExpression82 bucket13
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.sql b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.sql
index 90415c804..40bd5bb1e 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/simple-procedure-query.sql
@@ -38,14 +38,12 @@ from "a"."query_interval_set"() as __query_interval_set__(v);
select
__post__."id"::text as "0",
- case when (__post__) is not distinct from null then null::text else json_build_array((((__post__)."id"))::text, ((__post__)."headline"), ((__post__)."body"), (((__post__)."author_id"))::text, (((__post__)."enums"))::text, (case when (((__post__)."comptypes")) is not distinct from null then null::text else array(
- select case when (__comptype__) is not distinct from null then null::text else json_build_array(to_char(((__comptype__)."schedule"), 'YYYY-MM-DD"T"HH24:MI:SS.USTZH:TZM'::text), (((__comptype__)."is_optimised"))::text)::text end
- from unnest(((__post__)."comptypes")) __comptype__
- )::text end))::text end as "1"
+ array(
+ select array[
+ to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text)
+ ]::text[]
+ from "a"."post_computed_interval_set"(__post__) as __post_computed_interval_set__(v)
+ )::text as "1"
from "a"."post" as __post__
order by __post__."id" asc
-limit 1;
-
-select
- to_char(__post_computed_interval_set__.v, 'YYYY_MM_DD_HH24_MI_SS.US'::text) as "0"
-from "a"."post_computed_interval_set"($1::"a"."post") as __post_computed_interval_set__(v);
\ No newline at end of file
+limit 1;
\ No newline at end of file
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.mermaid b/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.mermaid
index 926600aba..86a453292 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.mermaid
+++ b/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.mermaid
@@ -11,50 +11,72 @@ graph TD
%% plan dependencies
PgSelect7[["PgSelect[7∈0] ➊
ᐸpersonᐳ"]]:::plan
Object10{{"Object[10∈0] ➊
ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
- Object10 --> PgSelect7
+ PgSelectInlineApply57["PgSelectInlineApply[57∈0] ➊"]:::plan
+ PgSelectInlineApply61["PgSelectInlineApply[61∈0] ➊"]:::plan
+ PgSelectInlineApply65["PgSelectInlineApply[65∈0] ➊"]:::plan
+ PgSelectInlineApply69["PgSelectInlineApply[69∈0] ➊"]:::plan
+ Object10 & PgSelectInlineApply57 & PgSelectInlineApply61 & PgSelectInlineApply65 & PgSelectInlineApply69 --> PgSelect7
PgSelect50[["PgSelect[50∈0] ➊
ᐸcompound_keyᐳ"]]:::plan
Object10 --> PgSelect50
+ ApplyInput30{{"ApplyInput[30∈0] ➊"}}:::plan
+ ApplyInput30 --> PgSelectInlineApply61
Access8{{"Access[8∈0] ➊
ᐸ2.pgSettingsᐳ"}}:::plan
Access9{{"Access[9∈0] ➊
ᐸ2.withPgClientᐳ"}}:::plan
Access8 & Access9 --> Object10
__InputObject26{{"__InputObject[26∈0] ➊"}}:::plan
- Constant58{{"Constant[58∈0] ➊
ᐸ'Large bet on myself in round one.'ᐳ"}}:::plan
- Constant58 --> __InputObject26
+ Constant74{{"Constant[74∈0] ➊
ᐸ'Large bet on myself in round one.'ᐳ"}}:::plan
+ Constant74 --> __InputObject26
+ Constant73{{"Constant[73∈0] ➊
ᐸ2ᐳ"}}:::plan
+ Constant73 --> PgSelectInlineApply57
__Value2["__Value[2∈0] ➊
ᐸcontextᐳ"]:::plan
__Value2 --> Access8
__Value2 --> Access9
PgSelectRows11[["PgSelectRows[11∈0] ➊"]]:::plan
PgSelect7 --> PgSelectRows11
- ApplyInput30{{"ApplyInput[30∈0] ➊"}}:::plan
__InputObject26 --> ApplyInput30
PgSelectRows52[["PgSelectRows[52∈0] ➊"]]:::plan
PgSelect50 --> PgSelectRows52
__Value4["__Value[4∈0] ➊
ᐸrootValueᐳ"]:::plan
- Constant57{{"Constant[57∈0] ➊
ᐸ2ᐳ"}}:::plan
- PgSelect28[["PgSelect[28∈1]
ᐸpostᐳ"]]:::plan
- PgClassExpression14{{"PgClassExpression[14∈1]
ᐸ__person__.”id”ᐳ"}}:::plan
- Object10 & PgClassExpression14 & ApplyInput30 --> PgSelect28
- PgSelect17[["PgSelect[17∈1]
ᐸpostᐳ"]]:::plan
- Object10 & PgClassExpression14 & Constant57 --> PgSelect17
- PgSelect36[["PgSelect[36∈1]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression14 --> PgSelect36
- PgSelect43[["PgSelect[43∈1]
ᐸcompound_keyᐳ"]]:::plan
- Object10 & PgClassExpression14 --> PgSelect43
+ List59{{"List[59∈1]
ᐸ12,58ᐳ"}}:::plan
__Item12[/"__Item[12∈1]
ᐸ11ᐳ"\]:::itemplan
+ Access58{{"Access[58∈1] ➊
ᐸ7.m.subqueryDetailsFor17ᐳ"}}:::plan
+ __Item12 & Access58 --> List59
+ List63{{"List[63∈1]
ᐸ12,62ᐳ"}}:::plan
+ Access62{{"Access[62∈1] ➊
ᐸ7.m.subqueryDetailsFor28ᐳ"}}:::plan
+ __Item12 & Access62 --> List63
+ List67{{"List[67∈1]
ᐸ12,66ᐳ"}}:::plan
+ Access66{{"Access[66∈1] ➊
ᐸ7.m.subqueryDetailsFor36ᐳ"}}:::plan
+ __Item12 & Access66 --> List67
+ List71{{"List[71∈1]
ᐸ12,70ᐳ"}}:::plan
+ Access70{{"Access[70∈1] ➊
ᐸ7.m.subqueryDetailsFor43ᐳ"}}:::plan
+ __Item12 & Access70 --> List71
PgSelectRows11 ==> __Item12
PgSelectSingle13{{"PgSelectSingle[13∈1]
ᐸpersonᐳ"}}:::plan
__Item12 --> PgSelectSingle13
+ PgClassExpression14{{"PgClassExpression[14∈1]
ᐸ__person__.”id”ᐳ"}}:::plan
PgSelectSingle13 --> PgClassExpression14
PgClassExpression15{{"PgClassExpression[15∈1]
ᐸ__person__...full_name”ᐳ"}}:::plan
PgSelectSingle13 --> PgClassExpression15
PgSelectRows21[["PgSelectRows[21∈1]"]]:::plan
- PgSelect17 --> PgSelectRows21
+ Lambda60{{"Lambda[60∈1]"}}:::plan
+ Lambda60 --> PgSelectRows21
PgSelectRows31[["PgSelectRows[31∈1]"]]:::plan
- PgSelect28 --> PgSelectRows31
+ Lambda64{{"Lambda[64∈1]"}}:::plan
+ Lambda64 --> PgSelectRows31
PgSelectRows38[["PgSelectRows[38∈1]"]]:::plan
- PgSelect36 --> PgSelectRows38
+ Lambda68{{"Lambda[68∈1]"}}:::plan
+ Lambda68 --> PgSelectRows38
PgSelectRows45[["PgSelectRows[45∈1]"]]:::plan
- PgSelect43 --> PgSelectRows45
+ Lambda72{{"Lambda[72∈1]"}}:::plan
+ Lambda72 --> PgSelectRows45
+ PgSelect7 --> Access58
+ List59 --> Lambda60
+ PgSelect7 --> Access62
+ List63 --> Lambda64
+ PgSelect7 --> Access66
+ List67 --> Lambda68
+ PgSelect7 --> Access70
+ List71 --> Lambda72
__Item22[/"__Item[22∈2]
ᐸ21ᐳ"\]:::itemplan
PgSelectRows21 ==> __Item22
PgSelectSingle23{{"PgSelectSingle[23∈2]
ᐸpostᐳ"}}:::plan
@@ -99,12 +121,12 @@ graph TD
%% define steps
subgraph "Buckets for queries/v4/simple-relations-head-tail"
- Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 8, 9, 57, 58, 10, 26, 30
2: PgSelect[7], PgSelect[50]
3: PgSelectRows[11], PgSelectRows[52]"):::bucket
+ Bucket0("Bucket 0 (root)
1:
ᐳ: 6, 8, 9, 73, 74, 10, 26, 30
2: 50, 57, 61, 65, 69
3: PgSelect[7], PgSelectRows[52]
4: PgSelectRows[11]"):::bucket
classDef bucket0 stroke:#696969
- class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,PgSelectRows11,__InputObject26,ApplyInput30,PgSelect50,PgSelectRows52,Constant57,Constant58 bucket0
- Bucket1("Bucket 1 (listItem)
Deps: 10, 57, 6, 30
ROOT __Item{1}ᐸ11ᐳ[12]
1:
ᐳ: 13, 14, 15
2: 17, 28, 36, 43
3: 21, 31, 38, 45"):::bucket
+ class Bucket0,__Value2,__Value4,PgSelect7,Access8,Access9,Object10,PgSelectRows11,__InputObject26,ApplyInput30,PgSelect50,PgSelectRows52,PgSelectInlineApply57,PgSelectInlineApply61,PgSelectInlineApply65,PgSelectInlineApply69,Constant73,Constant74 bucket0
+ Bucket1("Bucket 1 (listItem)
Deps: 7
ROOT __Item{1}ᐸ11ᐳ[12]
1:
ᐳ: 13, 58, 62, 66, 70, 14, 15, 59, 60, 63, 64, 67, 68, 71, 72
2: 21, 31, 38, 45"):::bucket
classDef bucket1 stroke:#00bfff
- class Bucket1,__Item12,PgSelectSingle13,PgClassExpression14,PgClassExpression15,PgSelect17,PgSelectRows21,PgSelect28,PgSelectRows31,PgSelect36,PgSelectRows38,PgSelect43,PgSelectRows45 bucket1
+ class Bucket1,__Item12,PgSelectSingle13,PgClassExpression14,PgClassExpression15,PgSelectRows21,PgSelectRows31,PgSelectRows38,PgSelectRows45,Access58,List59,Lambda60,Access62,List63,Lambda64,Access66,List67,Lambda68,Access70,List71,Lambda72 bucket1
Bucket2("Bucket 2 (listItem)
ROOT __Item{2}ᐸ21ᐳ[22]"):::bucket
classDef bucket2 stroke:#7f007f
class Bucket2,__Item22,PgSelectSingle23,PgClassExpression24,PgClassExpression25 bucket2
diff --git a/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.sql b/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.sql
index 54de6a151..e65eebebe 100644
--- a/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.sql
+++ b/postgraphile/postgraphile/__tests__/queries/v4/simple-relations-head-tail.sql
@@ -1,71 +1,59 @@
-select
- __person__."id"::text as "0",
- __person__."person_full_name" as "1"
-from "c"."person" as __person__
-order by __person__."id" asc;
-
select
__compound_key__."person_id_1"::text as "0",
__compound_key__."person_id_2"::text as "1"
from "c"."compound_key" as __compound_key__
order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc;
-select __post_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 __post_identifiers__,
-lateral (
- select
- __post__."headline" as "0",
- __post__."author_id"::text as "1",
- __post_identifiers__.idx as "2"
- from "a"."post" as __post__
- where (
- __post__."author_id" = __post_identifiers__."id0"
- )
- order by __post__."id" asc
- limit 2
-) as __post_result__;
-
-select __post_result__.*
-from (select ids.ordinality - 1 as idx, (ids.value->>0)::"int4" as "id0" from json_array_elements($2::json) with ordinality as ids) as __post_identifiers__,
-lateral (
- select
- __post__."headline" as "0",
- __post__."author_id"::text as "1",
- __post_identifiers__.idx as "2"
- from "a"."post" as __post__
- where
- (
- __post__."author_id" = __post_identifiers__."id0"
- ) and (
- __post__."headline" = $1::"text"
+select
+ __person__."id"::text as "0",
+ __person__."person_full_name" as "1",
+ array(
+ select array[
+ __post__."headline",
+ __post__."author_id"::text
+ ]::text[]
+ from "a"."post" as __post__
+ where (
+ __post__."author_id" = __person__."id"
)
- order by __post__."id" asc
-) as __post_result__;
-
-select __compound_key_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 __compound_key_identifiers__,
-lateral (
- select
- __compound_key__."person_id_1"::text as "0",
- __compound_key__."person_id_2"::text as "1",
- __compound_key_identifiers__.idx as "2"
- from "c"."compound_key" as __compound_key__
- where (
- __compound_key__."person_id_1" = __compound_key_identifiers__."id0"
- )
- order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
-) as __compound_key_result__;
-
-select __compound_key_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 __compound_key_identifiers__,
-lateral (
- select
- __compound_key__."person_id_1"::text as "0",
- __compound_key__."person_id_2"::text as "1",
- __compound_key_identifiers__.idx as "2"
- from "c"."compound_key" as __compound_key__
- where (
- __compound_key__."person_id_2" = __compound_key_identifiers__."id0"
- )
- order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
-) as __compound_key_result__;
\ No newline at end of file
+ order by __post__."id" asc
+ limit 2
+ )::text as "2",
+ array(
+ select array[
+ __post_2."headline",
+ __post_2."author_id"::text
+ ]::text[]
+ from "a"."post" as __post_2
+ where
+ (
+ __post_2."author_id" = __person__."id"
+ ) and (
+ __post_2."headline" = $1::"text"
+ )
+ order by __post_2."id" asc
+ )::text as "3",
+ array(
+ select array[
+ __compound_key__."person_id_1"::text,
+ __compound_key__."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key__
+ where (
+ __compound_key__."person_id_1" = __person__."id"
+ )
+ order by __compound_key__."person_id_1" asc, __compound_key__."person_id_2" asc
+ )::text as "4",
+ array(
+ select array[
+ __compound_key_2."person_id_1"::text,
+ __compound_key_2."person_id_2"::text
+ ]::text[]
+ from "c"."compound_key" as __compound_key_2
+ where (
+ __compound_key_2."person_id_2" = __person__."id"
+ )
+ order by __compound_key_2."person_id_1" asc, __compound_key_2."person_id_2" asc
+ )::text as "5"
+from "c"."person" as __person__
+order by __person__."id" asc;
\ No newline at end of file