From f1b4f83684597bbd71ee21462f7f8cd85c9bbf66 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 20 Jun 2019 23:12:08 +0800 Subject: [PATCH] fix no rows return error when close (#1334) --- rows.go | 14 +++----------- rows_test.go | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/rows.go b/rows.go index 3d3c81ea..bdd44589 100644 --- a/rows.go +++ b/rows.go @@ -113,17 +113,9 @@ func (rows *Rows) Close() error { defer rows.session.Close() } - if rows.lastError == nil { - if rows.rows != nil { - rows.lastError = rows.rows.Close() - if rows.lastError != nil { - return rows.lastError - } - } - } else { - if rows.rows != nil { - defer rows.rows.Close() - } + if rows.rows != nil { + return rows.rows.Close() } + return rows.lastError } diff --git a/rows_test.go b/rows_test.go index c5b44279..af333861 100644 --- a/rows_test.go +++ b/rows_test.go @@ -38,6 +38,22 @@ func TestRows(t *testing.T) { cnt++ } assert.EqualValues(t, 1, cnt) + assert.False(t, rows.Next()) + assert.NoError(t, rows.Close()) + + rows0, err := testEngine.Where("1>1").Rows(new(UserRows)) + assert.NoError(t, err) + defer rows0.Close() + + cnt = 0 + user0 := new(UserRows) + for rows0.Next() { + err = rows0.Scan(user0) + assert.NoError(t, err) + cnt++ + } + assert.EqualValues(t, 0, cnt) + assert.NoError(t, rows0.Close()) sess := testEngine.NewSession() defer sess.Close()