%%{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/partitions"
    Bucket0("Bucket 0 (root)"):::bucket
    Bucket1("Bucket 1 (nullableBoundary)<br />Deps: 12, 14, 83, 6<br /><br />ROOT Connectionᐸ8ᐳ[14]<br />1: PgSelect[16], PgSelect[18]<br />ᐳ: 27, 37, 51, 53, 54, 60, 61, 84<br />2: PgSelectRows[21], PgSelectRows[28]<br />ᐳ: 20, 23, 24, 33, 36, 39, 42, 44, 47"):::bucket
    Bucket2("Bucket 2 (listItem)<br />Deps: 37, 84<br /><br />ROOT __Item{2}ᐸ28ᐳ[29]"):::bucket
    Bucket3("Bucket 3 (nullableBoundary)<br />Deps: 30, 37, 84<br /><br />ROOT PgSelectSingle{2}ᐸmeasurementsᐳ[30]<br />1: <br />ᐳ: 65, 66, 67, 68, 85, 86<br />2: PgSelectRows[78]<br />ᐳ: First[77], PgSelectSingle[80]"):::bucket
    Bucket4("Bucket 4 (nullableBoundary)<br />Deps: 80<br /><br />ROOT PgSelectSingle{3}ᐸusersᐳ[80]"):::bucket
    end
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2
    Bucket2 --> Bucket3
    Bucket3 --> Bucket4

    %% plan dependencies
    Object12{{"Object[12∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Access9{{"Access[9∈0] ➊<br />ᐸ2.pgSettingsᐳ"}}:::plan
    Access11{{"Access[11∈0] ➊<br />ᐸ2.withPgClientᐳ"}}:::plan
    Access9 & Access11 --> Object12
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ"]:::plan
    __Value2 --> Access9
    __Value2 --> Access11
    __Value4["__Value[4∈0] ➊<br />ᐸrootValueᐳ"]:::plan
    Connection14{{"Connection[14∈0] ➊<br />ᐸ8ᐳ"}}:::plan
    PgSelectInlineApply83["PgSelectInlineApply[83∈0] ➊"]:::plan
    Object60{{"Object[60∈1] ➊<br />ᐸ{first,last,offset,hasMore}ᐳ"}}:::plan
    Access51{{"Access[51∈1] ➊<br />ᐸ16.hasMoreᐳ"}}:::plan
    Access51 --> Object60
    PgSelect16[["PgSelect[16∈1] ➊<br />ᐸmeasurements+1ᐳ"]]:::plan
    Object12 & Connection14 & PgSelectInlineApply83 --> PgSelect16
    Object53{{"Object[53∈1] ➊<br />ᐸ{first,last,hasMore}ᐳ"}}:::plan
    Access51 --> Object53
    PgSelect18[["PgSelect[18∈1] ➊<br />ᐸmeasurements(aggregate)ᐳ"]]:::plan
    Object12 & Connection14 --> PgSelect18
    PgCursor39{{"PgCursor[39∈1] ➊"}}:::plan
    PgSelectSingle36{{"PgSelectSingle[36∈1] ➊<br />ᐸmeasurementsᐳ"}}:::plan
    Access37{{"Access[37∈1] ➊<br />ᐸ16.cursorDetailsᐳ"}}:::plan
    PgSelectSingle36 & Access37 --> PgCursor39
    PgCursor47{{"PgCursor[47∈1] ➊"}}:::plan
    PgSelectSingle44{{"PgSelectSingle[44∈1] ➊<br />ᐸmeasurementsᐳ"}}:::plan
    PgSelectSingle44 & Access37 --> PgCursor47
    First20{{"First[20∈1] ➊"}}:::plan
    PgSelectRows21[["PgSelectRows[21∈1] ➊"]]:::plan
    PgSelectRows21 --> First20
    PgSelect18 --> PgSelectRows21
    PgSelectSingle23{{"PgSelectSingle[23∈1] ➊<br />ᐸmeasurementsᐳ"}}:::plan
    First20 --> PgSelectSingle23
    PgClassExpression24{{"PgClassExpression[24∈1] ➊<br />ᐸcount(*)ᐳ"}}:::plan
    PgSelectSingle23 --> PgClassExpression24
    PgPageInfo27{{"PgPageInfo[27∈1] ➊"}}:::plan
    Connection14 --> PgPageInfo27
    PgSelectRows28[["PgSelectRows[28∈1] ➊"]]:::plan
    PgSelect16 --> PgSelectRows28
    First33{{"First[33∈1] ➊"}}:::plan
    PgSelectRows28 --> First33
    First33 --> PgSelectSingle36
    PgSelect16 --> Access37
    Last42{{"Last[42∈1] ➊"}}:::plan
    PgSelectRows28 --> Last42
    Last42 --> PgSelectSingle44
    PgSelect16 --> Access51
    Lambda54{{"Lambda[54∈1] ➊<br />ᐸhasNextPageCbᐳ"}}:::plan
    Object53 --> Lambda54
    Lambda61{{"Lambda[61∈1] ➊<br />ᐸhasPreviousPageCbᐳ"}}:::plan
    Object60 --> Lambda61
    Access84{{"Access[84∈1] ➊<br />ᐸ16.m.joinDetailsFor70ᐳ"}}:::plan
    PgSelect16 --> Access84
    __Item29[/"__Item[29∈2]<br />ᐸ28ᐳ"\]:::itemplan
    PgSelectRows28 ==> __Item29
    PgSelectSingle30{{"PgSelectSingle[30∈2]<br />ᐸmeasurementsᐳ"}}:::plan
    __Item29 --> PgSelectSingle30
    PgCursor65{{"PgCursor[65∈3]"}}:::plan
    PgSelectSingle30 & Access37 --> PgCursor65
    List85{{"List[85∈3]<br />ᐸ84,30ᐳ"}}:::plan
    Access84 & PgSelectSingle30 --> List85
    PgClassExpression66{{"PgClassExpression[66∈3]<br />ᐸ__measurem...timestamp”ᐳ"}}:::plan
    PgSelectSingle30 --> PgClassExpression66
    PgClassExpression67{{"PgClassExpression[67∈3]<br />ᐸ__measurements__.”key”ᐳ"}}:::plan
    PgSelectSingle30 --> PgClassExpression67
    PgClassExpression68{{"PgClassExpression[68∈3]<br />ᐸ__measurem...__.”value”ᐳ"}}:::plan
    PgSelectSingle30 --> PgClassExpression68
    First77{{"First[77∈3]"}}:::plan
    PgSelectRows78[["PgSelectRows[78∈3]"]]:::plan
    PgSelectRows78 --> First77
    Lambda86{{"Lambda[86∈3]<br />ᐸpgInlineViaJoinTransformᐳ"}}:::plan
    Lambda86 --> PgSelectRows78
    PgSelectSingle80{{"PgSelectSingle[80∈3]<br />ᐸusersᐳ"}}:::plan
    First77 --> PgSelectSingle80
    List85 --> Lambda86
    PgClassExpression81{{"PgClassExpression[81∈4]<br />ᐸ__users__.”id”ᐳ"}}:::plan
    PgSelectSingle80 --> PgClassExpression81
    PgClassExpression82{{"PgClassExpression[82∈4]<br />ᐸ__users__.”name”ᐳ"}}:::plan
    PgSelectSingle80 --> PgClassExpression82

    %% define steps
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__Value4,Access9,Access11,Object12,Connection14,PgSelectInlineApply83 bucket0
    classDef bucket1 stroke:#00bfff
    class Bucket1,PgSelect16,PgSelect18,First20,PgSelectRows21,PgSelectSingle23,PgClassExpression24,PgPageInfo27,PgSelectRows28,First33,PgSelectSingle36,Access37,PgCursor39,Last42,PgSelectSingle44,PgCursor47,Access51,Object53,Lambda54,Object60,Lambda61,Access84 bucket1
    classDef bucket2 stroke:#7f007f
    class Bucket2,__Item29,PgSelectSingle30 bucket2
    classDef bucket3 stroke:#ffa500
    class Bucket3,PgCursor65,PgClassExpression66,PgClassExpression67,PgClassExpression68,First77,PgSelectRows78,PgSelectSingle80,List85,Lambda86 bucket3
    classDef bucket4 stroke:#0000ff
    class Bucket4,PgClassExpression81,PgClassExpression82 bucket4

