Skip to content

Commit a630c55

Browse files
authored
Fix: Prevent nil pointer dereference in FOR UPDATE with CTE (#23165)
Fix nil pointer dereference panic when using `FOR UPDATE` with CTE. Added a nil check before accessing `tableDef` in `bindSelectClause` to prevent panic when `tableDef` is `nil` (which happens when the node is a PROJECT node from a CTE/subquery, not a base table). Approved by: @ouyuanning, @aunjgr
1 parent 06493c2 commit a630c55

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

pkg/sql/plan/query_builder.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3246,8 +3246,7 @@ func (builder *QueryBuilder) bindSelectClause(
32463246
return
32473247
}
32483248

3249-
if builder.isForUpdate {
3250-
tableDef := builder.qry.Nodes[nodeID].GetTableDef()
3249+
if tableDef := builder.qry.Nodes[nodeID].GetTableDef(); tableDef != nil && builder.isForUpdate {
32513250
pkPos, pkTyp := getPkPos(tableDef, false)
32523251
lastTag := builder.qry.Nodes[nodeID].BindingTags[0]
32533252
lockTarget := &plan.LockTarget{

0 commit comments

Comments
 (0)