From 63dc97f1f37e2098738defaff5d753e26c4b5fa6 Mon Sep 17 00:00:00 2001 From: Arne Hormann Date: Wed, 30 Oct 2013 16:50:02 +0100 Subject: [PATCH 1/2] remove eof field from mysqlRows --- connection.go | 4 ++-- rows.go | 39 ++++++++++++++++----------------------- statement.go | 2 +- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/connection.go b/connection.go index f770f782e..77a7f24e6 100644 --- a/connection.go +++ b/connection.go @@ -211,7 +211,7 @@ func (mc *mysqlConn) Query(query string, args []driver.Value) (driver.Rows, erro var resLen int resLen, err = mc.readResultSetHeaderPacket() if err == nil { - rows := &mysqlRows{mc, nil, false, false} + rows := &mysqlRows{mc, nil, false} if resLen > 0 { // Columns @@ -238,7 +238,7 @@ func (mc *mysqlConn) getSystemVar(name string) ([]byte, error) { // Read Result resLen, err := mc.readResultSetHeaderPacket() if err == nil { - rows := &mysqlRows{mc, nil, false, false} + rows := &mysqlRows{mc, nil, false} if resLen > 0 { // Columns diff --git a/rows.go b/rows.go index 73f55d210..fcf39c70c 100644 --- a/rows.go +++ b/rows.go @@ -23,7 +23,6 @@ type mysqlRows struct { mc *mysqlConn columns []mysqlField binary bool - eof bool } func (rows *mysqlRows) Columns() []string { @@ -34,43 +33,37 @@ func (rows *mysqlRows) Columns() []string { return columns } -func (rows *mysqlRows) Close() (err error) { - // Remove unread packets from stream - if !rows.eof { - if rows.mc == nil || rows.mc.netConn == nil { - return errInvalidConn - } - - err = rows.mc.readUntilEOF() - - // explicitly set because readUntilEOF might return early in case of an - // error - rows.eof = true +func (rows *mysqlRows) Close() error { + mc := rows.mc + if mc == nil { + return nil } - + if mc.netConn == nil { + return errInvalidConn + } + // Remove unread packets from stream + err := mc.readUntilEOF() rows.mc = nil - - return + return err } -func (rows *mysqlRows) Next(dest []driver.Value) (err error) { - if rows.eof { +func (rows *mysqlRows) Next(dest []driver.Value) error { + mc := rows.mc + if mc == nil { return io.EOF } - - if rows.mc == nil || rows.mc.netConn == nil { + if mc.netConn == nil { return errInvalidConn } - + var err error // Fetch next row from stream if rows.binary { err = rows.readBinaryRow(dest) } else { err = rows.readRow(dest) } - if err == io.EOF { - rows.eof = true + rows.mc = nil } return err } diff --git a/statement.go b/statement.go index bceb38917..4a8e0dfe5 100644 --- a/statement.go +++ b/statement.go @@ -90,7 +90,7 @@ func (stmt *mysqlStmt) Query(args []driver.Value) (driver.Rows, error) { return nil, err } - rows := &mysqlRows{mc, nil, true, false} + rows := &mysqlRows{mc, nil, true} if resLen > 0 { // Columns From 69b04e16f8cf0ccb08c0824ff7df39c930a3dec6 Mon Sep 17 00:00:00 2001 From: Arne Hormann Date: Wed, 30 Oct 2013 18:21:34 +0100 Subject: [PATCH 2/2] removed internal err declaration --- rows.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rows.go b/rows.go index fcf39c70c..b76118758 100644 --- a/rows.go +++ b/rows.go @@ -47,7 +47,7 @@ func (rows *mysqlRows) Close() error { return err } -func (rows *mysqlRows) Next(dest []driver.Value) error { +func (rows *mysqlRows) Next(dest []driver.Value) (err error) { mc := rows.mc if mc == nil { return io.EOF @@ -55,7 +55,6 @@ func (rows *mysqlRows) Next(dest []driver.Value) error { if mc.netConn == nil { return errInvalidConn } - var err error // Fetch next row from stream if rows.binary { err = rows.readBinaryRow(dest) @@ -65,5 +64,5 @@ func (rows *mysqlRows) Next(dest []driver.Value) error { if err == io.EOF { rows.mc = nil } - return err + return }