%%{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

    subgraph "Buckets for queries/v4/connections-blankcursor"
    Bucket0("Bucket 0 (root)"):::bucket
    Bucket1("Bucket 1 (nullableBoundary)<br />Deps: 13, 14, 15, 100, 7<br /><br />ROOT Connectionᐸ10ᐳ[14]<br />1: PgSelect[24], PgSelect[28]<br />ᐳ: 25, 50, 71, 72, 73, 80, 81<br />2: PgSelectRows[30], PgSelectRows[40]<br />ᐳ: 29, 31, 32, 47, 49, 51, 59, 61, 63"):::bucket
    Bucket2("Bucket 2 (nullableBoundary)<br />Deps: 13, 21, 22, 100, 7<br /><br />ROOT Connectionᐸ19ᐳ[21]<br />1: PgSelect[26], PgSelect[33]<br />ᐳ: 27, 56, 75, 76, 77, 84, 85<br />2: PgSelectRows[35], PgSelectRows[41]<br />ᐳ: 34, 36, 37, 53, 55, 57, 65, 67, 69"):::bucket
    Bucket3("Bucket 3 (listItem)<br />Deps: 50<br /><br />ROOT __Item{3}ᐸ40ᐳ[42]"):::bucket
    Bucket4("Bucket 4 (listItem)<br />Deps: 56<br /><br />ROOT __Item{4}ᐸ41ᐳ[44]"):::bucket
    Bucket5("Bucket 5 (nullableBoundary)<br />Deps: 43, 50<br /><br />ROOT PgSelectSingle{3}ᐸpersonᐳ[43]"):::bucket
    Bucket6("Bucket 6 (nullableBoundary)<br />Deps: 45, 56<br /><br />ROOT PgSelectSingle{4}ᐸpersonᐳ[45]"):::bucket
    end
    Bucket0 --> Bucket1 & Bucket2
    Bucket1 --> Bucket3
    Bucket2 --> Bucket4
    Bucket3 --> Bucket5
    Bucket4 --> Bucket6

    %% plan dependencies
    Object13{{"Object[13∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Access11{{"Access[11∈0] ➊<br />ᐸ2.pgSettingsᐳ"}}:::plan
    Access12{{"Access[12∈0] ➊<br />ᐸ2.withPgClientᐳ"}}:::plan
    Access11 & Access12 --> Object13
    Connection14{{"Connection[14∈0] ➊<br />ᐸ10ᐳ"}}:::plan
    Constant100{{"Constant[100∈0] ➊<br />ᐸ2ᐳ"}}:::plan
    Lambda15{{"Lambda[15∈0] ➊<br />ᐸparseCursorᐳ"}}:::plan
    Constant100 & Lambda15 --> Connection14
    Connection21{{"Connection[21∈0] ➊<br />ᐸ19ᐳ"}}:::plan
    Lambda22{{"Lambda[22∈0] ➊<br />ᐸparseCursorᐳ"}}:::plan
    Constant100 & Lambda22 --> Connection21
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ"]:::plan
    __Value2 --> Access11
    __Value2 --> Access12
    Constant101{{"Constant[101∈0] ➊<br />ᐸ''ᐳ"}}:::plan
    Constant101 --> Lambda15
    Constant102{{"Constant[102∈0] ➊<br />ᐸ'27'ᐳ"}}:::plan
    Constant102 --> Lambda22
    __Value4["__Value[4∈0] ➊<br />ᐸrootValueᐳ"]:::plan
    PgSelect24[["PgSelect[24∈1] ➊<br />ᐸperson+1ᐳ"]]:::plan
    Object13 & Connection14 & Lambda15 & Constant100 --> PgSelect24
    Object80{{"Object[80∈1] ➊<br />ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
    Access71{{"Access[71∈1] ➊<br />ᐸ24.hasMoreᐳ"}}:::plan
    Constant100 & Access71 --> Object80
    Object72{{"Object[72∈1] ➊<br />ᐸ{first,last,hasMore}ᐳ"}}:::plan
    Constant100 & Access71 --> Object72
    PgSelect28[["PgSelect[28∈1] ➊<br />ᐸperson(aggregate)ᐳ"]]:::plan
    Object13 & Connection14 --> PgSelect28
    PgCursor51{{"PgCursor[51∈1] ➊"}}:::plan
    PgSelectSingle49{{"PgSelectSingle[49∈1] ➊<br />ᐸpersonᐳ"}}:::plan
    Access50{{"Access[50∈1] ➊<br />ᐸ24.cursorDetailsᐳ"}}:::plan
    PgSelectSingle49 & Access50 --> PgCursor51
    PgCursor63{{"PgCursor[63∈1] ➊"}}:::plan
    PgSelectSingle61{{"PgSelectSingle[61∈1] ➊<br />ᐸpersonᐳ"}}:::plan
    PgSelectSingle61 & Access50 --> PgCursor63
    PgPageInfo25{{"PgPageInfo[25∈1] ➊"}}:::plan
    Connection14 --> PgPageInfo25
    First29{{"First[29∈1] ➊"}}:::plan
    PgSelectRows30[["PgSelectRows[30∈1] ➊"]]:::plan
    PgSelectRows30 --> First29
    PgSelect28 --> PgSelectRows30
    PgSelectSingle31{{"PgSelectSingle[31∈1] ➊<br />ᐸpersonᐳ"}}:::plan
    First29 --> PgSelectSingle31
    PgClassExpression32{{"PgClassExpression[32∈1] ➊<br />ᐸcount(*)ᐳ"}}:::plan
    PgSelectSingle31 --> PgClassExpression32
    PgSelectRows40[["PgSelectRows[40∈1] ➊"]]:::plan
    PgSelect24 --> PgSelectRows40
    First47{{"First[47∈1] ➊"}}:::plan
    PgSelectRows40 --> First47
    First47 --> PgSelectSingle49
    PgSelect24 --> Access50
    Last59{{"Last[59∈1] ➊"}}:::plan
    PgSelectRows40 --> Last59
    Last59 --> PgSelectSingle61
    PgSelect24 --> Access71
    Lambda73{{"Lambda[73∈1] ➊<br />ᐸhasNextPageCbᐳ"}}:::plan
    Object72 --> Lambda73
    Lambda81{{"Lambda[81∈1] ➊<br />ᐸhasPreviousPageCbᐳ"}}:::plan
    Object80 --> Lambda81
    PgSelect26[["PgSelect[26∈2] ➊<br />ᐸperson+1ᐳ"]]:::plan
    Object13 & Connection21 & Lambda22 & Constant100 --> PgSelect26
    Object84{{"Object[84∈2] ➊<br />ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
    Access75{{"Access[75∈2] ➊<br />ᐸ26.hasMoreᐳ"}}:::plan
    Constant100 & Access75 --> Object84
    Object76{{"Object[76∈2] ➊<br />ᐸ{first,last,hasMore}ᐳ"}}:::plan
    Constant100 & Access75 --> Object76
    PgSelect33[["PgSelect[33∈2] ➊<br />ᐸperson(aggregate)ᐳ"]]:::plan
    Object13 & Connection21 --> PgSelect33
    PgCursor57{{"PgCursor[57∈2] ➊"}}:::plan
    PgSelectSingle55{{"PgSelectSingle[55∈2] ➊<br />ᐸpersonᐳ"}}:::plan
    Access56{{"Access[56∈2] ➊<br />ᐸ26.cursorDetailsᐳ"}}:::plan
    PgSelectSingle55 & Access56 --> PgCursor57
    PgCursor69{{"PgCursor[69∈2] ➊"}}:::plan
    PgSelectSingle67{{"PgSelectSingle[67∈2] ➊<br />ᐸpersonᐳ"}}:::plan
    PgSelectSingle67 & Access56 --> PgCursor69
    PgPageInfo27{{"PgPageInfo[27∈2] ➊"}}:::plan
    Connection21 --> PgPageInfo27
    First34{{"First[34∈2] ➊"}}:::plan
    PgSelectRows35[["PgSelectRows[35∈2] ➊"]]:::plan
    PgSelectRows35 --> First34
    PgSelect33 --> PgSelectRows35
    PgSelectSingle36{{"PgSelectSingle[36∈2] ➊<br />ᐸpersonᐳ"}}:::plan
    First34 --> PgSelectSingle36
    PgClassExpression37{{"PgClassExpression[37∈2] ➊<br />ᐸcount(*)ᐳ"}}:::plan
    PgSelectSingle36 --> PgClassExpression37
    PgSelectRows41[["PgSelectRows[41∈2] ➊"]]:::plan
    PgSelect26 --> PgSelectRows41
    First53{{"First[53∈2] ➊"}}:::plan
    PgSelectRows41 --> First53
    First53 --> PgSelectSingle55
    PgSelect26 --> Access56
    Last65{{"Last[65∈2] ➊"}}:::plan
    PgSelectRows41 --> Last65
    Last65 --> PgSelectSingle67
    PgSelect26 --> Access75
    Lambda77{{"Lambda[77∈2] ➊<br />ᐸhasNextPageCbᐳ"}}:::plan
    Object76 --> Lambda77
    Lambda85{{"Lambda[85∈2] ➊<br />ᐸhasPreviousPageCbᐳ"}}:::plan
    Object84 --> Lambda85
    __Item42[/"__Item[42∈3]<br />ᐸ40ᐳ"\]:::itemplan
    PgSelectRows40 ==> __Item42
    PgSelectSingle43{{"PgSelectSingle[43∈3]<br />ᐸpersonᐳ"}}:::plan
    __Item42 --> PgSelectSingle43
    __Item44[/"__Item[44∈4]<br />ᐸ41ᐳ"\]:::itemplan
    PgSelectRows41 ==> __Item44
    PgSelectSingle45{{"PgSelectSingle[45∈4]<br />ᐸpersonᐳ"}}:::plan
    __Item44 --> PgSelectSingle45
    PgCursor87{{"PgCursor[87∈5]"}}:::plan
    PgSelectSingle43 & Access50 --> PgCursor87
    PgClassExpression90{{"PgClassExpression[90∈5]<br />ᐸ__person__.”id”ᐳ"}}:::plan
    PgSelectSingle43 --> PgClassExpression90
    PgClassExpression92{{"PgClassExpression[92∈5]<br />ᐸ__person__...full_name”ᐳ"}}:::plan
    PgSelectSingle43 --> PgClassExpression92
    PgClassExpression94{{"PgClassExpression[94∈5]<br />ᐸ__person__.”email”ᐳ"}}:::plan
    PgSelectSingle43 --> PgClassExpression94
    PgClassExpression96{{"PgClassExpression[96∈5]<br />ᐸ__person__.”config”ᐳ"}}:::plan
    PgSelectSingle43 --> PgClassExpression96
    PgClassExpression98{{"PgClassExpression[98∈5]<br />ᐸ__person__...n_from_ip”ᐳ"}}:::plan
    PgSelectSingle43 --> PgClassExpression98
    PgCursor89{{"PgCursor[89∈6]"}}:::plan
    PgSelectSingle45 & Access56 --> PgCursor89
    PgClassExpression91{{"PgClassExpression[91∈6]<br />ᐸ__person__.”id”ᐳ"}}:::plan
    PgSelectSingle45 --> PgClassExpression91
    PgClassExpression93{{"PgClassExpression[93∈6]<br />ᐸ__person__...full_name”ᐳ"}}:::plan
    PgSelectSingle45 --> PgClassExpression93
    PgClassExpression95{{"PgClassExpression[95∈6]<br />ᐸ__person__.”email”ᐳ"}}:::plan
    PgSelectSingle45 --> PgClassExpression95
    PgClassExpression97{{"PgClassExpression[97∈6]<br />ᐸ__person__.”config”ᐳ"}}:::plan
    PgSelectSingle45 --> PgClassExpression97
    PgClassExpression99{{"PgClassExpression[99∈6]<br />ᐸ__person__...n_from_ip”ᐳ"}}:::plan
    PgSelectSingle45 --> PgClassExpression99

    %% define steps
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__Value4,Access11,Access12,Object13,Connection14,Lambda15,Connection21,Lambda22,Constant100,Constant101,Constant102 bucket0
    classDef bucket1 stroke:#00bfff
    class Bucket1,PgSelect24,PgPageInfo25,PgSelect28,First29,PgSelectRows30,PgSelectSingle31,PgClassExpression32,PgSelectRows40,First47,PgSelectSingle49,Access50,PgCursor51,Last59,PgSelectSingle61,PgCursor63,Access71,Object72,Lambda73,Object80,Lambda81 bucket1
    classDef bucket2 stroke:#7f007f
    class Bucket2,PgSelect26,PgPageInfo27,PgSelect33,First34,PgSelectRows35,PgSelectSingle36,PgClassExpression37,PgSelectRows41,First53,PgSelectSingle55,Access56,PgCursor57,Last65,PgSelectSingle67,PgCursor69,Access75,Object76,Lambda77,Object84,Lambda85 bucket2
    classDef bucket3 stroke:#ffa500
    class Bucket3,__Item42,PgSelectSingle43 bucket3
    classDef bucket4 stroke:#0000ff
    class Bucket4,__Item44,PgSelectSingle45 bucket4
    classDef bucket5 stroke:#7fff00
    class Bucket5,PgCursor87,PgClassExpression90,PgClassExpression92,PgClassExpression94,PgClassExpression96,PgClassExpression98 bucket5
    classDef bucket6 stroke:#ff1493
    class Bucket6,PgCursor89,PgClassExpression91,PgClassExpression93,PgClassExpression95,PgClassExpression97,PgClassExpression99 bucket6

