diff --git a/executor/adapter.go b/executor/adapter.go index fa1af494f2873..f8746e114b297 100644 --- a/executor/adapter.go +++ b/executor/adapter.go @@ -455,25 +455,20 @@ func (a *ExecStmt) handlePessimisticSelectForUpdate(ctx context.Context, e Execu } func (a *ExecStmt) runPessimisticSelectForUpdate(ctx context.Context, e Executor) (sqlexec.RecordSet, error) { - rs := &recordSet{ - executor: e, - stmt: a, - } defer func() { - terror.Log(rs.Close()) + terror.Log(e.Close()) }() - var rows []chunk.Row var err error - fields := rs.Fields() - req := rs.NewChunk() + req := newFirstChunk(e) for { - err = rs.Next(ctx, req) + err = Next(ctx, e, req) if err != nil { // Handle 'write conflict' error. break } if req.NumRows() == 0 { + fields := colNames2ResultFields(e.Schema(), a.OutputNames, a.Ctx.GetSessionVars().CurrentDB) return &chunkRowRecordSet{rows: rows, fields: fields, e: e}, nil } iter := chunk.NewIterator4Chunk(req)