From 3dcc0ea1f4fdb9c35c09e60f00aacd4f76753c49 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Wed, 25 Feb 2015 18:19:53 +0900 Subject: [PATCH] Support receiving ERR packet while reading rows ref: http://dev.mysql.com/doc/internals/en/com-query-response.html --- packets.go | 6 ++++++ rows.go | 10 ++-------- 2 files changed, 8 insertions(+), 8 deletions(-) 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 }