diff --git a/packets.go b/packets.go index f39d65c70..290a3887a 100644 --- a/packets.go +++ b/packets.go @@ -603,8 +603,13 @@ func (rows *textRows) readRow(dest []driver.Value) error { // EOF Packet if data[0] == iEOF && len(data) == 5 { + rows.mc = nil return io.EOF } + if data[0] == iERR { + rows.mc = nil + return mc.handleErrorPacket(data) + } // RowSet Packet var n int @@ -968,6 +973,7 @@ func (rows *binaryRows) readRow(dest []driver.Value) error { // packet indicator [1 byte] if data[0] != iOK { + rows.mc = nil // EOF Packet if data[0] == iEOF && len(data) == 5 { return io.EOF diff --git a/rows.go b/rows.go index bb161c8d8..9d97d6d4f 100644 --- a/rows.go +++ b/rows.go @@ -72,10 +72,7 @@ func (rows *binaryRows) Next(dest []driver.Value) error { } // Fetch next row from stream - if err := rows.readRow(dest); err != io.EOF { - return err - } - rows.mc = nil + return rows.readRow(dest) } return io.EOF } @@ -87,10 +84,7 @@ func (rows *textRows) Next(dest []driver.Value) error { } // Fetch next row from stream - if err := rows.readRow(dest); err != io.EOF { - return err - } - rows.mc = nil + return rows.readRow(dest) } return io.EOF }