Skip to content

Commit c2447a6

Browse files
committed
opt/exec/explain: add UpdateSwap and DeleteSwap to explain
Add UpdateSwap and DeleteSwap nodes to explain output. Informs: #144503 Release note: None
1 parent 977fa2b commit c2447a6

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

pkg/sql/opt/exec/explain/emit.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ var nodeNames = [...]string{
398398
createViewOp: "create view",
399399
deleteOp: "delete",
400400
deleteRangeOp: "delete range",
401+
deleteSwapOp: "delete swap",
401402
distinctOp: "distinct",
402403
errorIfRowsOp: "error if rows",
403404
explainOp: "explain",
@@ -435,6 +436,7 @@ var nodeNames = [...]string{
435436
sortOp: "sort",
436437
topKOp: "top-k",
437438
updateOp: "update",
439+
updateSwapOp: "update swap",
438440
upsertOp: "upsert",
439441
valuesOp: "", // This node does not have a fixed name.
440442
vectorSearchOp: "vector search",
@@ -1116,6 +1118,25 @@ func (e *emitter) emitNodeAttributes(ctx context.Context, evalCtx *eval.Context,
11161118
}
11171119
e.emitPolicies(ob, a.Table, n)
11181120

1121+
case updateSwapOp:
1122+
a := n.args.(*updateSwapArgs)
1123+
ob.Attrf("table", "%s", a.Table.Name())
1124+
ob.Attr("set", printColumns(tableColumns(a.Table, a.UpdateCols)))
1125+
if a.AutoCommit {
1126+
ob.Attr("auto commit", "")
1127+
}
1128+
beforeTriggers := cat.GetRowLevelTriggers(
1129+
a.Table, tree.TriggerActionTimeBefore, tree.MakeTriggerEventTypeSet(tree.TriggerEventUpdate),
1130+
)
1131+
if len(beforeTriggers) > 0 {
1132+
ob.EnterMetaNode("before-triggers")
1133+
for _, trigger := range beforeTriggers {
1134+
ob.Attrf("trigger", "%s", trigger.Name())
1135+
}
1136+
ob.LeaveNode()
1137+
}
1138+
e.emitPolicies(ob, a.Table, n)
1139+
11191140
case deleteOp:
11201141
a := n.args.(*deleteArgs)
11211142
ob.Attrf("from", "%s", a.Table.Name())
@@ -1133,6 +1154,23 @@ func (e *emitter) emitNodeAttributes(ctx context.Context, evalCtx *eval.Context,
11331154
ob.LeaveNode()
11341155
}
11351156

1157+
case deleteSwapOp:
1158+
a := n.args.(*deleteSwapArgs)
1159+
ob.Attrf("from", "%s", a.Table.Name())
1160+
if a.AutoCommit {
1161+
ob.Attr("auto commit", "")
1162+
}
1163+
beforeTriggers := cat.GetRowLevelTriggers(
1164+
a.Table, tree.TriggerActionTimeBefore, tree.MakeTriggerEventTypeSet(tree.TriggerEventDelete),
1165+
)
1166+
if len(beforeTriggers) > 0 {
1167+
ob.EnterMetaNode("before-triggers")
1168+
for _, trigger := range beforeTriggers {
1169+
ob.Attrf("trigger", "%s", trigger.Name())
1170+
}
1171+
ob.LeaveNode()
1172+
}
1173+
11361174
case deleteRangeOp:
11371175
a := n.args.(*deleteRangeArgs)
11381176
ob.Attrf("from", "%s", a.Table.Name())

pkg/sql/opt/exec/explain/result_columns.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,13 @@ func getResultColumns(
189189
a.Passthrough...,
190190
), nil
191191

192+
case updateSwapOp:
193+
a := args.(*updateSwapArgs)
194+
return appendColumns(
195+
tableColumns(a.Table, a.ReturnCols),
196+
a.Passthrough...,
197+
), nil
198+
192199
case upsertOp:
193200
a := args.(*upsertArgs)
194201
return tableColumns(a.Table, a.ReturnCols), nil
@@ -200,6 +207,13 @@ func getResultColumns(
200207
a.Passthrough...,
201208
), nil
202209

210+
case deleteSwapOp:
211+
a := args.(*deleteSwapArgs)
212+
return appendColumns(
213+
tableColumns(a.Table, a.ReturnCols),
214+
a.Passthrough...,
215+
), nil
216+
203217
case opaqueOp:
204218
if args.(*opaqueArgs).Metadata != nil {
205219
return args.(*opaqueArgs).Metadata.Columns(), nil

0 commit comments

Comments
 (0)