@@ -111,14 +111,13 @@ func (mc *mysqlConn) handleParams() (err error) {
111
111
return
112
112
}
113
113
114
+ // markBadConn replaces errBadConnNoWrite with driver.ErrBadConn.
115
+ // This function is used to return driver.ErrBadConn only when safe to retry.
114
116
func (mc * mysqlConn ) markBadConn (err error ) error {
115
- if mc == nil {
116
- return err
117
- }
118
- if err != errBadConnNoWrite {
119
- return err
117
+ if err == errBadConnNoWrite {
118
+ return driver .ErrBadConn
120
119
}
121
- return driver . ErrBadConn
120
+ return err
122
121
}
123
122
124
123
func (mc * mysqlConn ) Begin () (driver.Tx , error ) {
@@ -127,7 +126,6 @@ func (mc *mysqlConn) Begin() (driver.Tx, error) {
127
126
128
127
func (mc * mysqlConn ) begin (readOnly bool ) (driver.Tx , error ) {
129
128
if mc .closed .Load () {
130
- mc .log (ErrInvalidConn )
131
129
return nil , driver .ErrBadConn
132
130
}
133
131
var q string
@@ -189,7 +187,6 @@ func (mc *mysqlConn) error() error {
189
187
190
188
func (mc * mysqlConn ) Prepare (query string ) (driver.Stmt , error ) {
191
189
if mc .closed .Load () {
192
- mc .log (ErrInvalidConn )
193
190
return nil , driver .ErrBadConn
194
191
}
195
192
// Send command
@@ -324,7 +321,6 @@ func (mc *mysqlConn) interpolateParams(query string, args []driver.Value) (strin
324
321
325
322
func (mc * mysqlConn ) Exec (query string , args []driver.Value ) (driver.Result , error ) {
326
323
if mc .closed .Load () {
327
- mc .log (ErrInvalidConn )
328
324
return nil , driver .ErrBadConn
329
325
}
330
326
if len (args ) != 0 {
@@ -384,7 +380,6 @@ func (mc *mysqlConn) query(query string, args []driver.Value) (*textRows, error)
384
380
handleOk := mc .clearResult ()
385
381
386
382
if mc .closed .Load () {
387
- mc .log (ErrInvalidConn )
388
383
return nil , driver .ErrBadConn
389
384
}
390
385
if len (args ) != 0 {
@@ -408,7 +403,7 @@ func (mc *mysqlConn) query(query string, args []driver.Value) (*textRows, error)
408
403
var resLen int
409
404
resLen , err = handleOk .readResultSetHeaderPacket ()
410
405
if err != nil {
411
- return nil , mc . markBadConn ( err )
406
+ return nil , err
412
407
}
413
408
414
409
rows := new (textRows )
@@ -482,7 +477,6 @@ func (mc *mysqlConn) finish() {
482
477
// Ping implements driver.Pinger interface
483
478
func (mc * mysqlConn ) Ping (ctx context.Context ) (err error ) {
484
479
if mc .closed .Load () {
485
- mc .log (ErrInvalidConn )
486
480
return driver .ErrBadConn
487
481
}
488
482
@@ -704,3 +698,6 @@ func (mc *mysqlConn) ResetSession(ctx context.Context) error {
704
698
func (mc * mysqlConn ) IsValid () bool {
705
699
return ! mc .closed .Load ()
706
700
}
701
+
702
+ var _ driver.SessionResetter = & mysqlConn {}
703
+ var _ driver.Validator = & mysqlConn {}
0 commit comments