%%{init: {'themeVariables': { 'fontSize': '12px'}}}%%
graph TD
    classDef path fill:#eee,stroke:#000,color:#000
    classDef plan fill:#fff,stroke-width:1px,color:#000
    classDef itemplan fill:#fff,stroke-width:2px,color:#000
    classDef unbatchedplan fill:#dff,stroke-width:1px,color:#000
    classDef sideeffectplan fill:#fcc,stroke-width:2px,color:#000
    classDef bucket fill:#f6f6f6,color:#000,stroke-width:2px,text-align:left


    %% plan dependencies
    PgSelect9[["PgSelect[9∈0] ➊<br />ᐸforumsᐳ"]]:::plan
    Object12{{"Object[12∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Constant130{{"Constant[130∈0] ➊<br />ᐸ2ᐳ"}}:::plan
    Lambda116{{"Lambda[116∈0] ➊<br />ᐸcalculateShouldReverseOrderᐳ"}}:::plan
    Access119{{"Access[119∈0] ➊<br />ᐸ118.0ᐳ"}}:::plan
    Lambda124{{"Lambda[124∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Lambda129{{"Lambda[129∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Object12 & Constant130 & Lambda116 & Access119 & Lambda124 & Lambda129 --> PgSelect9
    Object77{{"Object[77∈0] ➊<br />ᐸ{reverse,orders,alias,codec}ᐳ"}}:::plan
    Lambda69{{"Lambda[69∈0] ➊<br />ᐸcalculateShouldReverseOrderᐳ"}}:::plan
    Constant74{{"Constant[74∈0] ➊<br />ᐸ[]ᐳ"}}:::plan
    Constant75{{"Constant[75∈0] ➊<br />ᐸsql.identifier(”users”)ᐳ"}}:::plan
    Constant76{{"Constant[76∈0] ➊<br />ᐸRecordCodec(users)ᐳ"}}:::plan
    Lambda69 & Constant74 & Constant75 & Constant76 --> Object77
    Object93{{"Object[93∈0] ➊<br />ᐸ{reverse,orders,alias,codec}ᐳ"}}:::plan
    Lambda85{{"Lambda[85∈0] ➊<br />ᐸcalculateShouldReverseOrderᐳ"}}:::plan
    Constant90{{"Constant[90∈0] ➊<br />ᐸ[ { fragment: { n: [Array], f: 0, c: 266, [Symbol(pg-sql2-tyᐳ"}}:::plan
    Constant91{{"Constant[91∈0] ➊<br />ᐸsql.identifier(”messages”)ᐳ"}}:::plan
    Constant92{{"Constant[92∈0] ➊<br />ᐸRecordCodec(messages)ᐳ"}}:::plan
    Lambda85 & Constant90 & Constant91 & Constant92 --> Object93
    Object108{{"Object[108∈0] ➊<br />ᐸ{reverse,orders,alias,codec}ᐳ"}}:::plan
    Constant105{{"Constant[105∈0] ➊<br />ᐸ[]ᐳ"}}:::plan
    Lambda69 & Constant105 & Constant91 & Constant92 --> Object108
    Object123{{"Object[123∈0] ➊<br />ᐸ{reverse,orders,alias,codec}ᐳ"}}:::plan
    Constant120{{"Constant[120∈0] ➊<br />ᐸ[ { fragment: { n: [Array], f: 0, c: 266, [Symbol(pg-sql2-tyᐳ"}}:::plan
    Constant121{{"Constant[121∈0] ➊<br />ᐸsql.identifier(”forums”)ᐳ"}}:::plan
    Constant122{{"Constant[122∈0] ➊<br />ᐸRecordCodec(forums)ᐳ"}}:::plan
    Lambda116 & Constant120 & Constant121 & Constant122 --> Object123
    Access10{{"Access[10∈0] ➊<br />ᐸ2.pgSettingsᐳ"}}:::plan
    Access11{{"Access[11∈0] ➊<br />ᐸ2.withPgClientᐳ"}}:::plan
    Access10 & Access11 --> Object12
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ"]:::plan
    __Value2 --> Access10
    __Value2 --> Access11
    Connection23{{"Connection[23∈0] ➊<br />ᐸ19ᐳ"}}:::plan
    Constant130 --> Connection23
    Constant131{{"Constant[131∈0] ➊<br />ᐸ§{ first: null, last: null, cursorLower: null, cursorUpper: ᐳ"}}:::plan
    Constant131 --> Lambda69
    Lambda72{{"Lambda[72∈0] ➊<br />ᐸcalculateLimitAndOffsetSQLᐳ"}}:::plan
    Constant132{{"Constant[132∈0] ➊<br />ᐸ§{ first: null, last: null, cursorLower: null, cursorUpper: ᐳ"}}:::plan
    Constant132 --> Lambda72
    Access73{{"Access[73∈0] ➊<br />ᐸ72.0ᐳ"}}:::plan
    Lambda72 --> Access73
    Lambda78{{"Lambda[78∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Object77 --> Lambda78
    Lambda83{{"Lambda[83∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Constant133{{"Constant[133∈0] ➊<br />ᐸ§{ reverse: false, orders: [], alias: sql.identifier(”users”ᐳ"}}:::plan
    Constant133 --> Lambda83
    Constant137{{"Constant[137∈0] ➊<br />ᐸ§{ first: null, last: 2, cursorLower: null, cursorUpper: nulᐳ"}}:::plan
    Constant137 --> Lambda85
    Lambda88{{"Lambda[88∈0] ➊<br />ᐸcalculateLimitAndOffsetSQLᐳ"}}:::plan
    Constant138{{"Constant[138∈0] ➊<br />ᐸ§{ first: null, last: 2, cursorLower: null, cursorUpper: nulᐳ"}}:::plan
    Constant138 --> Lambda88
    Access89{{"Access[89∈0] ➊<br />ᐸ88.0ᐳ"}}:::plan
    Lambda88 --> Access89
    Lambda94{{"Lambda[94∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Object93 --> Lambda94
    Lambda99{{"Lambda[99∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Constant134{{"Constant[134∈0] ➊<br />ᐸ§{ reverse: false, orders: [ { fragment: [Object], codec: Coᐳ"}}:::plan
    Constant134 --> Lambda99
    Lambda109{{"Lambda[109∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Object108 --> Lambda109
    Lambda114{{"Lambda[114∈0] ➊<br />ᐸcalculateOrderBySQLᐳ"}}:::plan
    Constant135{{"Constant[135∈0] ➊<br />ᐸ§{ reverse: false, orders: [], alias: sql.identifier(”messagᐳ"}}:::plan
    Constant135 --> Lambda114
    Constant139{{"Constant[139∈0] ➊<br />ᐸ§{ first: 2, last: null, cursorLower: null, cursorUpper: nulᐳ"}}:::plan
    Constant139 --> Lambda116
    Lambda118{{"Lambda[118∈0] ➊<br />ᐸcalculateLimitAndOffsetSQLᐳ"}}:::plan
    Constant140{{"Constant[140∈0] ➊<br />ᐸ§{ first: 2, last: null, cursorLower: null, cursorUpper: nulᐳ"}}:::plan
    Constant140 --> Lambda118
    Lambda118 --> Access119
    Object123 --> Lambda124
    Constant136{{"Constant[136∈0] ➊<br />ᐸ§{ reverse: false, orders: [ { fragment: [Object], codec: Coᐳ"}}:::plan
    Constant136 --> Lambda129
    __Value4["__Value[4∈0] ➊<br />ᐸrootValueᐳ"]:::plan
    Constant8{{"Constant[8∈0] ➊<br />ᐸundefinedᐳ"}}:::plan
    Constant54{{"Constant[54∈0] ➊<br />ᐸ[HIDDEN]ᐳ"}}:::plan
    __Item13[/"__Item[13∈1]<br />ᐸ9ᐳ"\]:::itemplan
    PgSelect9 ==> __Item13
    PgSelectSingle14{{"PgSelectSingle[14∈1]<br />ᐸforumsᐳ"}}:::plan
    __Item13 --> PgSelectSingle14
    PgClassExpression15{{"PgClassExpression[15∈2]<br />ᐸ__forums__.”name”ᐳ"}}:::plan
    PgSelectSingle14 --> PgClassExpression15
    PgSelect24[["PgSelect[24∈3]<br />ᐸmessages+1ᐳ"]]:::plan
    PgClassExpression18{{"PgClassExpression[18∈3]<br />ᐸ__forums__.”id”ᐳ"}}:::plan
    Object12 & PgClassExpression18 & Connection23 & Constant130 & Lambda85 & Access89 & Lambda94 & Lambda99 --> PgSelect24
    PgSelect63[["PgSelect[63∈3]<br />ᐸmessages(aggregate)ᐳ"]]:::plan
    Object12 & PgClassExpression18 & Connection23 & Lambda69 & Access73 & Lambda109 & Lambda114 --> PgSelect63
    Object46{{"Object[46∈3]<br />ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
    Access41{{"Access[41∈3]<br />ᐸ24.hasMoreᐳ"}}:::plan
    Constant8 & Constant130 & Constant8 & Access41 --> Object46
    Object42{{"Object[42∈3]<br />ᐸ{first,last,hasMore}ᐳ"}}:::plan
    Constant8 & Constant130 & Access41 --> Object42
    List55{{"List[55∈3]<br />ᐸ54,53ᐳ"}}:::plan
    List53{{"List[53∈3]<br />ᐸ52ᐳ"}}:::plan
    Constant54 & List53 --> List55
    List62{{"List[62∈3]<br />ᐸ54,61ᐳ"}}:::plan
    List61{{"List[61∈3]<br />ᐸ60ᐳ"}}:::plan
    Constant54 & List61 --> List62
    PgSelectSingle14 --> PgClassExpression18
    PgPageInfo38{{"PgPageInfo[38∈3] ➊"}}:::plan
    Connection23 --> PgPageInfo38
    PgSelect24 --> Access41
    Lambda43{{"Lambda[43∈3]<br />ᐸhasNextPageCbᐳ"}}:::plan
    Object42 --> Lambda43
    Lambda47{{"Lambda[47∈3]<br />ᐸhasPreviousPageCbᐳ"}}:::plan
    Object46 --> Lambda47
    First49{{"First[49∈3]"}}:::plan
    PgSelect24 --> First49
    PgSelectSingle50{{"PgSelectSingle[50∈3]<br />ᐸmessagesᐳ"}}:::plan
    First49 --> PgSelectSingle50
    PgCursor51{{"PgCursor[51∈3]"}}:::plan
    List55 --> PgCursor51
    PgClassExpression52{{"PgClassExpression[52∈3]<br />ᐸ__messages__.”id”ᐳ"}}:::plan
    PgSelectSingle50 --> PgClassExpression52
    PgClassExpression52 --> List53
    Last57{{"Last[57∈3]"}}:::plan
    PgSelect24 --> Last57
    PgSelectSingle58{{"PgSelectSingle[58∈3]<br />ᐸmessagesᐳ"}}:::plan
    Last57 --> PgSelectSingle58
    PgCursor59{{"PgCursor[59∈3]"}}:::plan
    List62 --> PgCursor59
    PgClassExpression60{{"PgClassExpression[60∈3]<br />ᐸ__messages__.”id”ᐳ"}}:::plan
    PgSelectSingle58 --> PgClassExpression60
    PgClassExpression60 --> List61
    First64{{"First[64∈3]"}}:::plan
    PgSelect63 --> First64
    PgSelectSingle65{{"PgSelectSingle[65∈3]<br />ᐸmessagesᐳ"}}:::plan
    First64 --> PgSelectSingle65
    PgClassExpression66{{"PgClassExpression[66∈3]<br />ᐸcount(*)ᐳ"}}:::plan
    PgSelectSingle65 --> PgClassExpression66
    __Item25[/"__Item[25∈4]<br />ᐸ24ᐳ"\]:::itemplan
    PgSelect24 ==> __Item25
    PgSelectSingle26{{"PgSelectSingle[26∈4]<br />ᐸmessagesᐳ"}}:::plan
    __Item25 --> PgSelectSingle26
    PgSelect29[["PgSelect[29∈5]<br />ᐸusersᐳ"]]:::plan
    PgClassExpression28{{"PgClassExpression[28∈5]<br />ᐸ__messages...author_id”ᐳ"}}:::plan
    Object12 & PgClassExpression28 & Lambda69 & Access73 & Lambda78 & Lambda83 --> PgSelect29
    PgClassExpression27{{"PgClassExpression[27∈5]<br />ᐸ__messages__.”body”ᐳ"}}:::plan
    PgSelectSingle26 --> PgClassExpression27
    PgSelectSingle26 --> PgClassExpression28
    First33{{"First[33∈5]"}}:::plan
    PgSelect29 --> First33
    PgSelectSingle34{{"PgSelectSingle[34∈5]<br />ᐸusersᐳ"}}:::plan
    First33 --> PgSelectSingle34
    PgClassExpression35{{"PgClassExpression[35∈6]<br />ᐸ__users__.”username”ᐳ"}}:::plan
    PgSelectSingle34 --> PgClassExpression35
    PgClassExpression36{{"PgClassExpression[36∈6]<br />ᐸ__users__....vatar_url”ᐳ"}}:::plan
    PgSelectSingle34 --> PgClassExpression36

    %% define steps

    subgraph "Buckets for queries/connections/pagination-when-inlined-backwards-nodes-only"
    Bucket0("Bucket 0 (root)<br /><br />1: <br />ᐳ: 8, 10, 11, 54, 74, 75, 76, 90, 91, 92, 105, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 12, 23, 69, 72, 73, 77, 78, 83, 85, 88, 89, 93, 94, 99, 108, 109, 114, 116, 118, 119, 123, 124, 129<br />2: PgSelect[9]"):::bucket
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__Value4,Constant8,PgSelect9,Access10,Access11,Object12,Connection23,Constant54,Lambda69,Lambda72,Access73,Constant74,Constant75,Constant76,Object77,Lambda78,Lambda83,Lambda85,Lambda88,Access89,Constant90,Constant91,Constant92,Object93,Lambda94,Lambda99,Constant105,Object108,Lambda109,Lambda114,Lambda116,Lambda118,Access119,Constant120,Constant121,Constant122,Object123,Lambda124,Lambda129,Constant130,Constant131,Constant132,Constant133,Constant134,Constant135,Constant136,Constant137,Constant138,Constant139,Constant140 bucket0
    Bucket1("Bucket 1 (listItem)<br />Deps: 12, 23, 130, 85, 89, 94, 99, 8, 54, 69, 73, 109, 114, 78, 83<br /><br />ROOT __Item{1}ᐸ9ᐳ[13]"):::bucket
    classDef bucket1 stroke:#00bfff
    class Bucket1,__Item13,PgSelectSingle14 bucket1
    Bucket2("Bucket 2 (nullableBoundary)<br />Deps: 14, 12, 23, 130, 85, 89, 94, 99, 8, 54, 69, 73, 109, 114, 78, 83<br /><br />ROOT PgSelectSingle{1}ᐸforumsᐳ[14]"):::bucket
    classDef bucket2 stroke:#7f007f
    class Bucket2,PgClassExpression15 bucket2
    Bucket3("Bucket 3 (nullableBoundary)<br />Deps: 14, 12, 23, 130, 85, 89, 94, 99, 8, 54, 69, 73, 109, 114, 78, 83<br /><br />ROOT Connectionᐸ19ᐳ[23]<br />1: <br />ᐳ: PgClassExpression[18], PgPageInfo[38]<br />2: PgSelect[24], PgSelect[63]<br />ᐳ: 41, 42, 43, 46, 47, 49, 50, 52, 53, 55, 57, 58, 60, 61, 62, 64, 65, 66, 51, 59"):::bucket
    classDef bucket3 stroke:#ffa500
    class Bucket3,PgClassExpression18,PgSelect24,PgPageInfo38,Access41,Object42,Lambda43,Object46,Lambda47,First49,PgSelectSingle50,PgCursor51,PgClassExpression52,List53,List55,Last57,PgSelectSingle58,PgCursor59,PgClassExpression60,List61,List62,PgSelect63,First64,PgSelectSingle65,PgClassExpression66 bucket3
    Bucket4("Bucket 4 (listItem)<br />Deps: 12, 69, 73, 78, 83<br /><br />ROOT __Item{4}ᐸ24ᐳ[25]"):::bucket
    classDef bucket4 stroke:#0000ff
    class Bucket4,__Item25,PgSelectSingle26 bucket4
    Bucket5("Bucket 5 (nullableBoundary)<br />Deps: 26, 12, 69, 73, 78, 83<br /><br />ROOT PgSelectSingle{4}ᐸmessagesᐳ[26]<br />1: <br />ᐳ: 27, 28<br />2: PgSelect[29]<br />ᐳ: First[33], PgSelectSingle[34]"):::bucket
    classDef bucket5 stroke:#7fff00
    class Bucket5,PgClassExpression27,PgClassExpression28,PgSelect29,First33,PgSelectSingle34 bucket5
    Bucket6("Bucket 6 (nullableBoundary)<br />Deps: 34<br /><br />ROOT PgSelectSingle{5}ᐸusersᐳ[34]"):::bucket
    classDef bucket6 stroke:#ff1493
    class Bucket6,PgClassExpression35,PgClassExpression36 bucket6
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2
    Bucket2 --> Bucket3
    Bucket3 --> Bucket4
    Bucket4 --> Bucket5
    Bucket5 --> Bucket6
    end
