Skip to content

Commit

Permalink
server: let select for update could be recorded for slow log and stat…
Browse files Browse the repository at this point in the history
…ements (#16743)
  • Loading branch information
cfzjywxk authored Apr 28, 2020
1 parent fbea0b3 commit b32e834
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions executor/adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,7 @@ func (a *recordSet) NewChunk() *chunk.Chunk {

func (a *recordSet) Close() error {
err := a.executor.Close()
a.stmt.FinishExecuteStmt(a.txnStartTS, a.lastErr == nil, false)
a.stmt.logAudit()
// Detach the disk tracker from GlobalDiskUsageTracker after every execution
if stmtCtx := a.stmt.Ctx.GetSessionVars().StmtCtx; stmtCtx != nil && stmtCtx.DiskTracker != nil {
stmtCtx.DiskTracker.DetachFromGlobalTracker()
}
a.stmt.CloseRecordSet(a.txnStartTS, a.lastErr)
return err
}

Expand Down Expand Up @@ -413,10 +408,11 @@ func getMaxExecutionTime(sctx sessionctx.Context) uint64 {
}

type chunkRowRecordSet struct {
rows []chunk.Row
idx int
fields []*ast.ResultField
e Executor
rows []chunk.Row
idx int
fields []*ast.ResultField
e Executor
execStmt *ExecStmt
}

func (c *chunkRowRecordSet) Fields() []*ast.ResultField {
Expand All @@ -437,6 +433,7 @@ func (c *chunkRowRecordSet) NewChunk() *chunk.Chunk {
}

func (c *chunkRowRecordSet) Close() error {
c.execStmt.CloseRecordSet(c.execStmt.Ctx.GetSessionVars().TxnCtx.StartTS, nil)
return nil
}

Expand Down Expand Up @@ -468,7 +465,7 @@ func (a *ExecStmt) runPessimisticSelectForUpdate(ctx context.Context, e Executor
}
if req.NumRows() == 0 {
fields := colNames2ResultFields(e.Schema(), a.OutputNames, a.Ctx.GetSessionVars().CurrentDB)
return &chunkRowRecordSet{rows: rows, fields: fields, e: e}, nil
return &chunkRowRecordSet{rows: rows, fields: fields, e: e, execStmt: a}, nil
}
iter := chunk.NewIterator4Chunk(req)
for r := iter.Begin(); r != iter.End(); r = iter.Next() {
Expand Down Expand Up @@ -792,6 +789,16 @@ func (a *ExecStmt) FinishExecuteStmt(txnTS uint64, succ bool, hasMoreResults boo
}
}

// CloseRecordSet will finish the execution of current statement and do some record work
func (a *ExecStmt) CloseRecordSet(txnStartTS uint64, lastErr error) {
a.FinishExecuteStmt(txnStartTS, lastErr == nil, false)
a.logAudit()
// Detach the disk tracker from GlobalDiskUsageTracker after every execution
if stmtCtx := a.Ctx.GetSessionVars().StmtCtx; stmtCtx != nil && stmtCtx.DiskTracker != nil {
stmtCtx.DiskTracker.DetachFromGlobalTracker()
}
}

// LogSlowQuery is used to print the slow query in the log files.
func (a *ExecStmt) LogSlowQuery(txnTS uint64, succ bool, hasMoreResults bool) {
sessVars := a.Ctx.GetSessionVars()
Expand Down

0 comments on commit b32e834

Please sign in to comment.