digraph {
graph [rankdir = "LR", label = "Plan Tree: SELECT key FROM test WHERE key = 3 FOR UPDATE;"]
node [shape=record,style=filled,fillcolor=gray95]
edge [arrowtail=empty]
23[label = "
Alias (23)|aliasname: test| colnames: "]
25[label = " String (25)|key"]
24[label = " List (24)|<1> [0]|<2> [1]"]
26[label = " String (26)|value"]
22[label = " RangeTblEntry(RTE) (22)| eref: |rtekind: RTE_RELATION|relid: 17242|relkind: 114|inh: false|inFromCl: true|requiredPerms: 6|selectedCols: (b 9)|modifiedCols: (b)"]
8[label = " SeqScan (8)|startup_cost: 0.00|total_cost: 36.75|plan_rows: 11|plan_width: 10| targetlist: | qual: |extParam: (b 0)|allParam: (b 0)|scanrelid: 1"]
20[label = " PlanRowMark (20)|rti: 1|prti: 1|rowmarkId: 1|markType: ROW_MARK_EXCLUSIVE|noWait: false|isParent: false"]
19[label = " List (19)|<1> [0]"]
2[label = " LockRows (2)|startup_cost: 0.00|total_cost: 36.86|plan_rows: 11|plan_width: 10| targetlist: | lefttree: |extParam: (b)|allParam: (b)| rowMarks: |epqParam: 0"]
1[label = " PlannedStmt (1)|commandType: CMD_SELECT|queryId: 0|hasReturning: false|hasModifyingCTE: false|canSetTag: true|transientPlan: false| planTree: | rtable: |rewindPlanIDs: (b)| rowMarks: | relationOids: |nParamExec: 1"]
21[label = " List (21)|<1> [0]"]
29[label = " OidList (29)|17242 "]
28[label = " PlanRowMark (28)|rti: 1|prti: 1|rowmarkId: 1|markType: ROW_MARK_EXCLUSIVE|noWait: false|isParent: false"]
27[label = " List (27)|<1> [0]"]
23:colnames -> 24:head [headlabel = "23", taillabel = "24"]
24:1 -> 25:head [headlabel = "24", taillabel = "25"]
24:2 -> 26:head [headlabel = "24", taillabel = "26"]
22:eref -> 23:head [headlabel = "22", taillabel = "23"]
8:targetlist -> 9:head [headlabel = "8", taillabel = "9"]
8:qual -> 14:head [headlabel = "8", taillabel = "14"]
19:1 -> 20:head [headlabel = "19", taillabel = "20"]
2:lefttree -> 8:head [headlabel = "2", taillabel = "8"]
2:rowMarks -> 19:head [headlabel = "2", taillabel = "19"]
2:targetlist -> 3:head [headlabel = "2", taillabel = "3"]
1:planTree -> 2:head [headlabel = "1", taillabel = "2"]
1:rtable -> 21:head [headlabel = "1", taillabel = "21"]
1:relationOids -> 29:head [headlabel = "1", taillabel = "29"]
1:rowMarks -> 27:head [headlabel = "1", taillabel = "27"]
21:1 -> 22:head [headlabel = "21", taillabel = "22"]
27:1 -> 28:head [headlabel = "27", taillabel = "28"]
subgraph cluster_0 {
label = "Target List";
10[label = " TargetEntry (10)| expr: |resno: 1|resname: key|resorigtbl: 17242|resorigcol: 1|resjunk: false"]
11[label = " Var (11)|varno: 1|varattno: 1|vartype: 23|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 1|location: 7"]
9[label = " List (9)|<1> [0]|<2> [1]"]
13[label = " Var (13)|varno: 1|varattno: -1|vartype: 27|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: -1"]
12[label = " TargetEntry (12)| expr: |resno: 2|resname: ctid1|resjunk: true"]
10:expr -> 11:head [headlabel = "10", taillabel = "11"]
9:1 -> 10:head [headlabel = "9", taillabel = "10"]
9:2 -> 12:head [headlabel = "9", taillabel = "12"]
12:expr -> 13:head [headlabel = "12", taillabel = "13"]
}
subgraph cluster_1 {
label = "Express Tree";
17[label = " Var (17)|varno: 1|varattno: 1|vartype: 23|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 1|location: 27"]
16[label = " List (16)|<1> [0]|<2> [1]"]
18[label = " Const (18)|consttype: 23|consttypmod: -1|constlen: 4|constbyval: true|constisnull: false|location: 33"]
15[label = " OpExpr (15)|opno: 96|opfuncid: 65|opresulttype: 16|opretset: false| args: |location: 31"]
14[label = " List (14)|<1> [0]"]
16:1 -> 17:head [headlabel = "16", taillabel = "17"]
16:2 -> 18:head [headlabel = "16", taillabel = "18"]
15:args -> 16:head [headlabel = "15", taillabel = "16"]
14:1 -> 15:head [headlabel = "14", taillabel = "15"]
}
subgraph cluster_2 {
label = "Target List";
5[label = " Var (5)|varno: OUTER_VAR|varattno: 1|vartype: 23|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: 1"]
4[label = " TargetEntry (4)| expr: |resno: 1|resname: key|resorigtbl: 17242|resorigcol: 1|resjunk: false"]
3[label = " List (3)|<1> [0]|<2> [1]"]
7[label = " Var (7)|varno: OUTER_VAR|varattno: 2|vartype: 27|vartypmod: -1|varlevelsup: 0|varnoold: 1|varoattno: -1"]
6[label = " TargetEntry (6)| expr: |resno: 2|resname: ctid1|resjunk: true"]
4:expr -> 5:head [headlabel = "4", taillabel = "5"]
3:1 -> 4:head [headlabel = "3", taillabel = "4"]
3:2 -> 6:head [headlabel = "3", taillabel = "6"]
6:expr -> 7:head [headlabel = "6", taillabel = "7"]
}
}