digraph { graph [rankdir = "LR", label = "Plan Tree: SELECT city, sum(ID), avg(salary), count(*) FROM employee GROUP BY city HAVING avg(salary) > 5000 ORDER BY city;"] node [shape=record,style=filled,fillcolor=gray95] edge [arrowtail=empty] 52[label = " Alias (52)|aliasname: employee| colnames: "] 54[label = " String (54)|id"] 53[label = " List (53)|<1> [0]|<2> [1]|<3> [2]|<4> [3]|<5> [4]|<6> [5]"] 55[label = " String (55)|name"] 56[label = " String (56)|salary"] 57[label = " String (57)|start_date"] 58[label = " String (58)|city"] 59[label = " String (59)|region"] 36[label = " SeqScan (36)|startup_cost: 0.00|total_cost: 16.40|plan_rows: 640|plan_width: 46| targetlist: |extParam: (b)|allParam: (b)|scanrelid: 1"] 12[label = " Agg (12)|startup_cost: 24.40|total_cost: 27.90|plan_rows: 200|plan_width: 46| targetlist: | qual: | lefttree: |extParam: (b)|allParam: (b)|aggstrategy: AGG_HASHED|numCols: 1|grpColIdx: 5|grpOperators: 98|numGroups: "] 2[label = " Sort (2)|startup_cost: 35.54|total_cost: 36.04|plan_rows: 200|plan_width: 46| targetlist: | lefttree: |extParam: (b)|allParam: (b)|numCols: 1|sortColIdx: 1|sortOperators: 664|collations: 100|nullsFirst: false"] 51[label = " RangeTblEntry(RTE) (51)| eref: |rtekind: RTE_RELATION|relid: 41102|relkind: 114|inh: false|inFromCl: true|requiredPerms: 2|selectedCols: (b 9 11 13)|modifiedCols: (b)"] 50[label = " List (50)|<1> [0]"] 60[label = " OidList (60)|41102 "] 1[label = " PlannedStmt (1)|commandType: CMD_SELECT|queryId: 0|hasReturning: false|hasModifyingCTE: false|canSetTag: true|transientPlan: false| planTree: | rtable: |rewindPlanIDs: (b)| relationOids: |nParamExec: 0"] 52:colnames -> 53:head [headlabel = "52", taillabel = "53"] 53:1 -> 54:head [headlabel = "53", taillabel = "54"] 53:2 -> 55:head [headlabel = "53", taillabel = "55"] 53:3 -> 56:head [headlabel = "53", taillabel = "56"] 53:4 -> 57:head [headlabel = "53", taillabel = "57"] 53:5 -> 58:head [headlabel = "53", taillabel = "58"] 53:6 -> 59:head [headlabel = "53", taillabel = "59"] 36:targetlist -> 37:head [headlabel = "36", taillabel = "37"] 12:lefttree -> 36:head [headlabel = "12", taillabel = "36"] 12:targetlist -> 13:head [headlabel = "12", taillabel = "13"] 12:qual -> 28:head [headlabel = "12", taillabel = "28"] 2:lefttree -> 12:head [headlabel = "2", taillabel = "12"] 2:targetlist -> 3:head [headlabel = "2", taillabel = "3"] 51:eref -> 52:head [headlabel = "51", taillabel = "52"] 50:1 -> 51:head [headlabel = "50", taillabel = "51"] 1:planTree -> 2:head [headlabel = "1", taillabel = "2"] 1:rtable -> 50:head [headlabel = "1", taillabel = "50"] 1:relationOids -> 60:head [headlabel = "1", taillabel = "60"] subgraph cluster_0 { label = "Target List"; 39[label = " Var (39)|varno: 1|varattno: 1|vartype: 23|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 1"] 38[label = " TargetEntry (38)| expr: |resno: 1|resjunk: false"] 37[label = " List (37)|<1> [0]|<2> [1]|<3> [2]|<4> [3]|<5> [4]|<6> [5]"] 41[label = " Var (41)|varno: 1|varattno: 2|vartype: 1043|vartypmod: 14|varcollid: 100|varlevelsup: 0|varnoold: 1|varoattno: 2"] 40[label = " TargetEntry (40)| expr: |resno: 2|resjunk: false"] 43[label = " Var (43)|varno: 1|varattno: 3|vartype: 700|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 3"] 42[label = " TargetEntry (42)| expr: |resno: 3|resjunk: false"] 45[label = " Var (45)|varno: 1|varattno: 4|vartype: 1082|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 4"] 44[label = " TargetEntry (44)| expr: |resno: 4|resjunk: false"] 47[label = " Var (47)|varno: 1|varattno: 5|vartype: 1043|vartypmod: 14|varcollid: 100|varlevelsup: 0|varnoold: 1|varoattno: 5"] 46[label = " TargetEntry (46)| expr: |resno: 5|resjunk: false"] 49[label = " Var (49)|varno: 1|varattno: 6|vartype: 1042|vartypmod: 5|varcollid: 100|varlevelsup: 0|varnoold: 1|varoattno: 6"] 48[label = " TargetEntry (48)| expr: |resno: 6|resjunk: false"] 38:expr -> 39:head [headlabel = "38", taillabel = "39"] 37:1 -> 38:head [headlabel = "37", taillabel = "38"] 37:2 -> 40:head [headlabel = "37", taillabel = "40"] 37:3 -> 42:head [headlabel = "37", taillabel = "42"] 37:4 -> 44:head [headlabel = "37", taillabel = "44"] 37:5 -> 46:head [headlabel = "37", taillabel = "46"] 37:6 -> 48:head [headlabel = "37", taillabel = "48"] 40:expr -> 41:head [headlabel = "40", taillabel = "41"] 42:expr -> 43:head [headlabel = "42", taillabel = "43"] 44:expr -> 45:head [headlabel = "44", taillabel = "45"] 46:expr -> 47:head [headlabel = "46", taillabel = "47"] 48:expr -> 49:head [headlabel = "48", taillabel = "49"] } subgraph cluster_1 { label = "Target List"; 5[label = " Var (5)|varno: OUTER_VAR|varattno: 1|vartype: 1043|vartypmod: 14|varcollid: 100|varlevelsup: 0|varnoold: 1|varoattno: 5"] 4[label = " TargetEntry (4)| expr: |resno: 1|resname: city|ressortgroupref: 1|resorigtbl: 41102|resorigcol: 5|resjunk: false"] 3[label = " List (3)|<1> [0]|<2> [1]|<3> [2]|<4> [3]"] 7[label = " Var (7)|varno: OUTER_VAR|varattno: 2|vartype: 20|vartypmod: -1|varlevelsup: 0|varnoold: 0|varoattno: 0"] 6[label = " TargetEntry (6)| expr: |resno: 2|resname: sum|resjunk: false"] 9[label = " Var (9)|varno: OUTER_VAR|varattno: 3|vartype: 701|vartypmod: -1|varlevelsup: 0|varnoold: 0|varoattno: 0"] 8[label = " TargetEntry (8)| expr: |resno: 3|resname: avg|resjunk: false"] 11[label = " Var (11)|varno: OUTER_VAR|varattno: 4|vartype: 20|vartypmod: -1|varlevelsup: 0|varnoold: 0|varoattno: 0"] 10[label = " TargetEntry (10)| expr: |resno: 4|resname: count|resjunk: false"] 4:expr -> 5:head [headlabel = "4", taillabel = "5"] 3:1 -> 4:head [headlabel = "3", taillabel = "4"] 3:2 -> 6:head [headlabel = "3", taillabel = "6"] 3:3 -> 8:head [headlabel = "3", taillabel = "8"] 3:4 -> 10:head [headlabel = "3", taillabel = "10"] 6:expr -> 7:head [headlabel = "6", taillabel = "7"] 8:expr -> 9:head [headlabel = "8", taillabel = "9"] 10:expr -> 11:head [headlabel = "10", taillabel = "11"] } subgraph cluster_2 { label = "Target List"; 15[label = " Var (15)|varno: OUTER_VAR|varattno: 5|vartype: 1043|vartypmod: 14|varcollid: 100|varlevelsup: 0|varnoold: 1|varoattno: 5|location: 7"] 14[label = " TargetEntry (14)| expr: |resno: 1|resname: city|ressortgroupref: 1|resorigtbl: 41102|resorigcol: 5|resjunk: false"] 13[label = " List (13)|<1> [0]|<2> [1]|<3> [2]|<4> [3]"] 17[label = " Aggref (17)|aggfnoid: 2108|aggtype: 20| args: |aggstar: false|aggvariadic: false|aggkind: 110|agglevelsup: 0|location: 13"] 19[label = " TargetEntry (19)| expr: |resno: 1|resjunk: false"] 20[label = " Var (20)|varno: OUTER_VAR|varattno: 1|vartype: 23|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 1|location: 17"] 18[label = " List (18)|<1> [0]"] 16[label = " TargetEntry (16)| expr: |resno: 2|resname: sum|resjunk: false"] 22[label = " Aggref (22)|aggfnoid: 2104|aggtype: 701| args: |aggstar: false|aggvariadic: false|aggkind: 110|agglevelsup: 0|location: 22"] 24[label = " TargetEntry (24)| expr: |resno: 1|resjunk: false"] 25[label = " Var (25)|varno: OUTER_VAR|varattno: 3|vartype: 700|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 3|location: 26"] 23[label = " List (23)|<1> [0]"] 21[label = " TargetEntry (21)| expr: |resno: 3|resname: avg|resjunk: false"] 27[label = " Aggref (27)|aggfnoid: 2803|aggtype: 20|aggstar: true|aggvariadic: false|aggkind: 110|agglevelsup: 0|location: 35"] 26[label = " TargetEntry (26)| expr: |resno: 4|resname: count|resjunk: false"] 14:expr -> 15:head [headlabel = "14", taillabel = "15"] 13:1 -> 14:head [headlabel = "13", taillabel = "14"] 13:2 -> 16:head [headlabel = "13", taillabel = "16"] 13:3 -> 21:head [headlabel = "13", taillabel = "21"] 13:4 -> 26:head [headlabel = "13", taillabel = "26"] 17:args -> 18:head [headlabel = "17", taillabel = "18"] 19:expr -> 20:head [headlabel = "19", taillabel = "20"] 18:1 -> 19:head [headlabel = "18", taillabel = "19"] 16:expr -> 17:head [headlabel = "16", taillabel = "17"] 22:args -> 23:head [headlabel = "22", taillabel = "23"] 24:expr -> 25:head [headlabel = "24", taillabel = "25"] 23:1 -> 24:head [headlabel = "23", taillabel = "24"] 21:expr -> 22:head [headlabel = "21", taillabel = "22"] 26:expr -> 27:head [headlabel = "26", taillabel = "27"] } subgraph cluster_3 { label = "Express Tree"; 29[label = " OpExpr (29)|opno: 674|opfuncid: 297|opresulttype: 16|opretset: false| args: |location: 91"] 31[label = " Aggref (31)|aggfnoid: 2104|aggtype: 701| args: |aggstar: false|aggvariadic: false|aggkind: 110|agglevelsup: 0|location: 79"] 33[label = " TargetEntry (33)| expr: |resno: 1|resjunk: false"] 34[label = " Var (34)|varno: OUTER_VAR|varattno: 3|vartype: 700|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 3|location: 83"] 32[label = " List (32)|<1> [0]"] 30[label = " List (30)|<1> [0]|<2> [1]"] 35[label = " Const (35)|consttype: 701|consttypmod: -1|constlen: 8|constbyval: true|constisnull: false"] 28[label = " List (28)|<1> [0]"] 29:args -> 30:head [headlabel = "29", taillabel = "30"] 31:args -> 32:head [headlabel = "31", taillabel = "32"] 33:expr -> 34:head [headlabel = "33", taillabel = "34"] 32:1 -> 33:head [headlabel = "32", taillabel = "33"] 30:1 -> 31:head [headlabel = "30", taillabel = "31"] 30:2 -> 35:head [headlabel = "30", taillabel = "35"] 28:1 -> 29:head [headlabel = "28", taillabel = "29"] } }