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"]
}
}