func (sc *StatementContext) RecordRows() uint64 {
	sc.mu.Lock()
	rows := sc.mu.records
	sc.mu.Unlock()
	return rows
}
RecordRows is used to generate info message
package stmtctx
import (
	"math"
	"sync"
	"time"
	"github.com/nooncall/shazam/mysql"
)
const (
	WarnLevelError = "Error"
	WarnLevelWarning = "Warning"
	WarnLevelNote = "Note"
)
type SQLWarn struct {
	Level string
	Err   error
}
type StatementContext struct {
	IsDDLJobInQueue        bool
	InInsertStmt           bool
	InUpdateStmt           bool
	InDeleteStmt           bool
	InSelectStmt           bool
	InLoadDataStmt         bool
	IgnoreTruncate         bool
	IgnoreZeroInDate       bool
	DupKeyAsWarning        bool
	BadNullAsWarning       bool
	DividedByZeroAsWarning bool
	TruncateAsWarning      bool
	OverflowAsWarning      bool
	InShowWarning          bool
	UseCache               bool
	PadCharToFullLength    bool
	BatchCheck             bool
	InNullRejectCheck      bool
	AllowInvalidDate       bool
	mu struct {
		sync.Mutex
		affectedRows uint64
		foundRows    uint64
		records uint64
		updated uint64
		copied  uint64
		touched uint64
		message           string
		warnings          []SQLWarn
		histogramsNotLoad bool
	}
	PrevAffectedRows int64
	PrevLastInsertID uint64
	LastInsertID uint64
	InsertID uint64
	TimeZone     *time.Location
	Priority     mysql.PriorityEnum
	NotFillCache bool
	TableIDs     []int64
	IndexIDs     []int64
	NowTs        time.Time
	SysTs        time.Time
	StmtType     string
}
func (sc *StatementContext) AddAffectedRows(rows uint64) {
	sc.mu.Lock()
	sc.mu.affectedRows += rows
	sc.mu.Unlock()
}
func (sc *StatementContext) AffectedRows() uint64 {
	sc.mu.Lock()
	rows := sc.mu.affectedRows
	sc.mu.Unlock()
	return rows
}
func (sc *StatementContext) FoundRows() uint64 {
	sc.mu.Lock()
	rows := sc.mu.foundRows
	sc.mu.Unlock()
	return rows
}
func (sc *StatementContext) AddFoundRows(rows uint64) {
	sc.mu.Lock()
	sc.mu.foundRows += rows
	sc.mu.Unlock()
}