fix no rows return error when close (#1334)

This commit is contained in:
Lunny Xiao 2019-06-20 23:12:08 +08:00 committed by GitHub
parent d0827bfc00
commit f1b4f83684
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 11 deletions

14
rows.go
View File

@ -113,17 +113,9 @@ func (rows *Rows) Close() error {
defer rows.session.Close() defer rows.session.Close()
} }
if rows.lastError == nil { if rows.rows != nil {
if rows.rows != nil { return rows.rows.Close()
rows.lastError = rows.rows.Close()
if rows.lastError != nil {
return rows.lastError
}
}
} else {
if rows.rows != nil {
defer rows.rows.Close()
}
} }
return rows.lastError return rows.lastError
} }

View File

@ -38,6 +38,22 @@ func TestRows(t *testing.T) {
cnt++ cnt++
} }
assert.EqualValues(t, 1, 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() sess := testEngine.NewSession()
defer sess.Close() defer sess.Close()