File tree Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,27 @@ func newBuffer(nc net.Conn) buffer {
37
37
}
38
38
}
39
39
40
+ // discard trims b.buf[:b.idx] to prohibit it reused.
41
+ //
42
+ // This is required by Rows.Close().
43
+ // See https://github.com/golang/go/commit/651ddbdb5056ded455f47f9c494c67b389622a47
44
+ func (b * buffer ) discard () {
45
+ if len (b .buf )- b .idx >= defaultBufSize {
46
+ b .buf = b .buf [b .idx :]
47
+ b .idx = 0
48
+ return
49
+ }
50
+
51
+ bufSize := defaultBufSize
52
+ if bufSize < b .length {
53
+ bufSize = b .length
54
+ }
55
+ newBuf := make ([]byte , bufSize )
56
+ copy (newBuf , b .buf [b .idx :b .idx + b .length ])
57
+ b .buf = newBuf
58
+ b .idx = 0
59
+ }
60
+
40
61
// fill reads into the buffer until at least _need_ bytes are in it
41
62
func (b * buffer ) fill (need int ) error {
42
63
n := b .length
Original file line number Diff line number Diff line change @@ -111,6 +111,10 @@ func (rows *mysqlRows) Close() (err error) {
111
111
return err
112
112
}
113
113
114
+ // We can't reuse receive buffer when rows.Close() is called.
115
+ // See https://github.com/golang/go/commit/651ddbdb5056ded455f47f9c494c67b389622a47
116
+ mc .buf .discard ()
117
+
114
118
// Remove unread packets from stream
115
119
if ! rows .rs .done {
116
120
err = mc .readUntilEOF ()
You can’t perform that action at this time.
0 commit comments