diff --git a/planner/core/logical_plan_builder.go b/planner/core/logical_plan_builder.go index cdc8ce46ab..0e3e0f1819 100644 --- a/planner/core/logical_plan_builder.go +++ b/planner/core/logical_plan_builder.go @@ -2530,21 +2530,14 @@ func (b *PlanBuilder) buildUpdate(update *ast.UpdateStmt) (Plan, error) { } b.inUpdateStmt = true - sel := &ast.SelectStmt{ - Fields: &ast.FieldList{}, - From: update.TableRefs, - Where: update.Where, - OrderBy: update.Order, - Limit: update.Limit, - } - p, err := b.buildResultSetNode(sel.From.TableRefs) + p, err := b.buildResultSetNode(update.TableRefs.TableRefs) if err != nil { return nil, err } var tableList []*ast.TableName - tableList = extractTableList(sel.From.TableRefs, tableList, false) + tableList = extractTableList(update.TableRefs.TableRefs, tableList, false) for _, t := range tableList { dbName := t.Schema.L if dbName == "" { @@ -2556,27 +2549,27 @@ func (b *PlanBuilder) buildUpdate(update *ast.UpdateStmt) (Plan, error) { b.visitInfo = appendVisitInfo(b.visitInfo, mysql.SelectPriv, dbName, t.Name.L, "", nil) } - if sel.Where != nil { - p, err = b.buildSelection(p, sel.Where, nil) + if update.Where != nil { + p, err = b.buildSelection(p, update.Where, nil) if err != nil { return nil, err } } - if sel.OrderBy != nil { - p, err = b.buildSort(p, sel.OrderBy.Items, nil, nil) + if update.Order != nil { + p, err = b.buildSort(p, update.Order.Items, nil, nil) if err != nil { return nil, err } } - if sel.Limit != nil { - p, err = b.buildLimit(p, sel.Limit) + if update.Limit != nil { + p, err = b.buildLimit(p, update.Limit) if err != nil { return nil, err } } var updateTableList []*ast.TableName - updateTableList = extractTableList(sel.From.TableRefs, updateTableList, true) + updateTableList = extractTableList(update.TableRefs.TableRefs, updateTableList, true) orderedList, np, err := b.buildUpdateLists(updateTableList, update.List, p) if err != nil { return nil, err @@ -2736,36 +2729,29 @@ func (b *PlanBuilder) buildDelete(delete *ast.DeleteStmt) (Plan, error) { defer b.popTableHints() } - sel := &ast.SelectStmt{ - Fields: &ast.FieldList{}, - From: delete.TableRefs, - Where: delete.Where, - OrderBy: delete.Order, - Limit: delete.Limit, - } - p, err := b.buildResultSetNode(sel.From.TableRefs) + p, err := b.buildResultSetNode(delete.TableRefs.TableRefs) if err != nil { return nil, err } oldSchema := p.Schema() oldLen := oldSchema.Len() - if sel.Where != nil { - p, err = b.buildSelection(p, sel.Where, nil) + if delete.Where != nil { + p, err = b.buildSelection(p, delete.Where, nil) if err != nil { return nil, err } } - if sel.OrderBy != nil { - p, err = b.buildSort(p, sel.OrderBy.Items, nil, nil) + if delete.Order != nil { + p, err = b.buildSort(p, delete.Order.Items, nil, nil) if err != nil { return nil, err } } - if sel.Limit != nil { - p, err = b.buildLimit(p, sel.Limit) + if delete.Limit != nil { + p, err = b.buildLimit(p, delete.Limit) if err != nil { return nil, err }