@@ -559,14 +559,16 @@ func (ssbd *stmtSummaryByDigest) init(sei *StmtExecInfo, _ int64, _ int64, _ int
559
559
560
560
func (ssbd * stmtSummaryByDigest ) add (sei * StmtExecInfo , beginTime int64 , intervalSeconds int64 , historySize int ) {
561
561
// Enclose this block in a function to ensure the lock will always be released.
562
+ warningCount := int (sei .StmtCtx .WarningCount ())
563
+ affectedRows := sei .StmtCtx .AffectedRows ()
562
564
ssElement , isElementNew := func () (* stmtSummaryByDigestElement , bool ) {
563
565
ssbd .Lock ()
564
566
defer ssbd .Unlock ()
565
567
566
568
if ! ssbd .initialized {
567
569
ssbd .init (sei , beginTime , intervalSeconds , historySize )
568
570
}
569
- ssbd .cumulative .add (sei )
571
+ ssbd .cumulative .add (sei , warningCount , affectedRows )
570
572
571
573
var ssElement * stmtSummaryByDigestElement
572
574
isElementNew := true
@@ -582,7 +584,7 @@ func (ssbd *stmtSummaryByDigest) add(sei *StmtExecInfo, beginTime int64, interva
582
584
}
583
585
if isElementNew {
584
586
// If the element is new created, `ssElement.add(sei)` should be done inside the lock of `ssbd`.
585
- ssElement = newStmtSummaryByDigestElement (sei , beginTime , intervalSeconds )
587
+ ssElement = newStmtSummaryByDigestElement (sei , beginTime , intervalSeconds , warningCount , affectedRows )
586
588
if ssElement == nil {
587
589
return nil , isElementNew
588
590
}
@@ -600,7 +602,7 @@ func (ssbd *stmtSummaryByDigest) add(sei *StmtExecInfo, beginTime int64, interva
600
602
601
603
// Lock a single entry, not the whole `ssbd`.
602
604
if ! isElementNew {
603
- ssElement .add (sei , intervalSeconds )
605
+ ssElement .add (sei , intervalSeconds , warningCount , affectedRows )
604
606
}
605
607
}
606
608
@@ -666,12 +668,12 @@ func newStmtSummaryStats(sei *StmtExecInfo) *stmtSummaryStats {
666
668
}
667
669
}
668
670
669
- func newStmtSummaryByDigestElement (sei * StmtExecInfo , beginTime int64 , intervalSeconds int64 ) * stmtSummaryByDigestElement {
671
+ func newStmtSummaryByDigestElement (sei * StmtExecInfo , beginTime int64 , intervalSeconds int64 , warningCount int , affectedRows uint64 ) * stmtSummaryByDigestElement {
670
672
ssElement := & stmtSummaryByDigestElement {
671
673
beginTime : beginTime ,
672
674
stmtSummaryStats : * newStmtSummaryStats (sei ),
673
675
}
674
- ssElement .add (sei , intervalSeconds )
676
+ ssElement .add (sei , intervalSeconds , warningCount , affectedRows )
675
677
return ssElement
676
678
}
677
679
@@ -693,7 +695,7 @@ func (ssElement *stmtSummaryByDigestElement) onExpire(intervalSeconds int64) {
693
695
}
694
696
}
695
697
696
- func (ssStats * stmtSummaryStats ) add (sei * StmtExecInfo ) {
698
+ func (ssStats * stmtSummaryStats ) add (sei * StmtExecInfo , warningCount int , affectedRows uint64 ) {
697
699
// add user to auth users set
698
700
if len (sei .User ) > 0 {
699
701
if _ , exist := ssStats .authUsers [sei .User ]; ! exist {
@@ -705,7 +707,7 @@ func (ssStats *stmtSummaryStats) add(sei *StmtExecInfo) {
705
707
if ! sei .Succeed {
706
708
ssStats .sumErrors ++
707
709
}
708
- ssStats .sumWarnings += int ( sei . StmtCtx . WarningCount ())
710
+ ssStats .sumWarnings += warningCount
709
711
710
712
// latency
711
713
ssStats .sumLatency += sei .TotalLatency
@@ -863,7 +865,7 @@ func (ssStats *stmtSummaryStats) add(sei *StmtExecInfo) {
863
865
}
864
866
865
867
// other
866
- ssStats .sumAffectedRows += sei . StmtCtx . AffectedRows ( )
868
+ ssStats .sumAffectedRows += uint64 ( affectedRows )
867
869
ssStats .sumMem += sei .MemMax
868
870
if sei .MemMax > ssStats .maxMem {
869
871
ssStats .maxMem = sei .MemMax
@@ -907,13 +909,13 @@ func (ssStats *stmtSummaryStats) add(sei *StmtExecInfo) {
907
909
ssStats .StmtRUSummary .Add (sei .RUDetail )
908
910
}
909
911
910
- func (ssElement * stmtSummaryByDigestElement ) add (sei * StmtExecInfo , intervalSeconds int64 ) {
912
+ func (ssElement * stmtSummaryByDigestElement ) add (sei * StmtExecInfo , intervalSeconds int64 , warningCount int , affectedRows uint64 ) {
911
913
ssElement .Lock ()
912
914
defer ssElement .Unlock ()
913
915
914
916
// refreshInterval may change anytime, update endTime ASAP.
915
917
ssElement .endTime = ssElement .beginTime + intervalSeconds
916
- ssElement .stmtSummaryStats .add (sei )
918
+ ssElement .stmtSummaryStats .add (sei , warningCount , affectedRows )
917
919
}
918
920
919
921
// Truncate SQL to maxSQLLength.
0 commit comments