@@ -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}
@@ -287,6 +271,7 @@ func (c *Conn) readResultset(data []byte, binary bool) (*mysql.Result, error) {
287271
288272 result := mysql .NewResultReserveResultset (int (count ))
289273
274+ fmt .Println (c .CapabilityString ())
290275 if err := c .readResultColumns (result ); err != nil {
291276 return nil , errors .Trace (err )
292277 }
@@ -357,7 +342,7 @@ func (c *Conn) readResultColumns(result *mysql.Result) (err error) {
357342 result .FieldNames [utils .ByteSliceToString (result .Fields [i ].Name )] = i
358343 }
359344
360- if ! c . HasCapability ( mysql .CLIENT_DEPRECATE_EOF ) {
345+ if c . capability & mysql .CLIENT_DEPRECATE_EOF == 0 {
361346 // EOF Packet
362347 rawPkgLen := len (result .RawPkg )
363348 result .RawPkg , err = c .ReadPacketReuseMem (result .RawPkg )
@@ -394,7 +379,7 @@ func (c *Conn) readResultRows(result *mysql.Result, isBinary bool) (err error) {
394379 data = result .RawPkg [rawPkgLen :]
395380
396381 if data [0 ] == mysql .EOF_HEADER && len (data ) <= 0xffffff {
397- if c .HasCapability ( mysql .CLIENT_DEPRECATE_EOF ) {
382+ if c .capability & mysql .CLIENT_DEPRECATE_EOF != 0 {
398383 // Treat like OK
399384 affectedRows , _ , n := mysql .LengthEncodedInt (data [1 :])
400385 insertId , _ , m := mysql .LengthEncodedInt (data [1 + n :])
@@ -446,9 +431,16 @@ func (c *Conn) readResultRowsStreaming(result *mysql.Result, isBinary bool, perR
446431 return err
447432 }
448433
449- // EOF Packet
450- if c .isEOFPacket (data ) {
451- if c .capability & mysql .CLIENT_PROTOCOL_41 > 0 {
434+ if data [0 ] == mysql .EOF_HEADER && len (data ) <= 0xffffff {
435+ if c .capability & mysql .CLIENT_DEPRECATE_EOF != 0 {
436+ // Treat like OK
437+ affectedRows , _ , n := mysql .LengthEncodedInt (data [1 :])
438+ insertId , _ , m := mysql .LengthEncodedInt (data [1 + n :])
439+ result .Status = binary .LittleEndian .Uint16 (data [1 + n + m :])
440+ result .AffectedRows = affectedRows
441+ result .InsertId = insertId
442+ c .status = result .Status
443+ } else if c .capability & mysql .CLIENT_PROTOCOL_41 > 0 {
452444 result .Warnings = binary .LittleEndian .Uint16 (data [1 :])
453445 // todo add strict_mode, warning will be treat as error
454446 result .Status = binary .LittleEndian .Uint16 (data [3 :])
0 commit comments