From 5a84b4799e4d13b211233b761c0228d2bc51651e Mon Sep 17 00:00:00 2001 From: Lz Date: Wed, 11 Dec 2024 11:14:33 +0800 Subject: [PATCH] fix(rows): doesn't close rows on Scan --- rows.go | 1 - rows_test.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/rows.go b/rows.go index 9f4dd0f..123b80b 100644 --- a/rows.go +++ b/rows.go @@ -24,7 +24,6 @@ func (r *Rows) Close() error { } func (r *Rows) Scan(dest ...any) error { - defer r.Close() return r.Rows.Scan(dest...) } diff --git a/rows_test.go b/rows_test.go index 1b3ff56..bcf4eb3 100644 --- a/rows_test.go +++ b/rows_test.go @@ -36,6 +36,40 @@ func TestRowsBind(t *testing.T) { name string run func(t *testing.T) }{ + { + name: "scan_on_rows_should_work", + run: func(t *testing.T) { + type user struct { + ID int + Status int + Email string + Passwd string + Salt string + Created *time.Time + } + rows, err := db.Query("SELECT id,email FROM rows WHERE id<4") + require.NoError(t, err) + + var id int + var email string + + err = rows.Scan(&id, &email) + require.NoError(t, err) + require.Equal(t, 1, id) + require.Equal(t, "test1@mail.com", email) + + err = rows.Scan(&id, &email) + require.NoError(t, err) + require.Equal(t, 2, id) + require.Equal(t, "test2@mail.com", email) + + err = rows.Scan(&id, &email) + require.NoError(t, err) + require.Equal(t, 3, id) + require.Equal(t, "test3@mail.com", email) + + }, + }, { name: "bind_slice_of_struct_should_work", run: func(t *testing.T) {