@@ -14,22 +14,6 @@ import (
1414 "github.com/go-mysql-org/go-mysql/utils"
1515)
1616
17- func (c * Conn ) readUntilEOF () (err error ) {
18- var data []byte
19-
20- for {
21- data , err = c .ReadPacket ()
22- if err != nil {
23- return err
24- }
25-
26- // EOF Packet
27- if c .isEOFPacket (data ) {
28- return err
29- }
30- }
31- }
32-
3317func (c * Conn ) isEOFPacket (data []byte ) bool {
3418 return data [0 ] == mysql .EOF_HEADER && len (data ) <= 5
3519}
@@ -357,7 +341,7 @@ func (c *Conn) readResultColumns(result *mysql.Result) (err error) {
357341 result .FieldNames [utils .ByteSliceToString (result .Fields [i ].Name )] = i
358342 }
359343
360- if ! c . HasCapability ( mysql .CLIENT_DEPRECATE_EOF ) {
344+ if c . capability & mysql .CLIENT_DEPRECATE_EOF == 0 {
361345 // EOF Packet
362346 rawPkgLen := len (result .RawPkg )
363347 result .RawPkg , err = c .ReadPacketReuseMem (result .RawPkg )
@@ -394,7 +378,7 @@ func (c *Conn) readResultRows(result *mysql.Result, isBinary bool) (err error) {
394378 data = result .RawPkg [rawPkgLen :]
395379
396380 if data [0 ] == mysql .EOF_HEADER && len (data ) <= 0xffffff {
397- if c .HasCapability ( mysql .CLIENT_DEPRECATE_EOF ) {
381+ if c .capability & mysql .CLIENT_DEPRECATE_EOF != 0 {
398382 // Treat like OK
399383 affectedRows , _ , n := mysql .LengthEncodedInt (data [1 :])
400384 insertId , _ , m := mysql .LengthEncodedInt (data [1 + n :])
@@ -446,9 +430,16 @@ func (c *Conn) readResultRowsStreaming(result *mysql.Result, isBinary bool, perR
446430 return err
447431 }
448432
449- // EOF Packet
450- if c .isEOFPacket (data ) {
451- if c .capability & mysql .CLIENT_PROTOCOL_41 > 0 {
433+ if data [0 ] == mysql .EOF_HEADER && len (data ) <= 0xffffff {
434+ if c .capability & mysql .CLIENT_DEPRECATE_EOF != 0 {
435+ // Treat like OK
436+ affectedRows , _ , n := mysql .LengthEncodedInt (data [1 :])
437+ insertId , _ , m := mysql .LengthEncodedInt (data [1 + n :])
438+ result .Status = binary .LittleEndian .Uint16 (data [1 + n + m :])
439+ result .AffectedRows = affectedRows
440+ result .InsertId = insertId
441+ c .status = result .Status
442+ } else if c .capability & mysql .CLIENT_PROTOCOL_41 > 0 {
452443 result .Warnings = binary .LittleEndian .Uint16 (data [1 :])
453444 // todo add strict_mode, warning will be treat as error
454445 result .Status = binary .LittleEndian .Uint16 (data [3 :])
0 commit comments