From 58d63b6cf3c5d69c9e44902541883450915ed251 Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Mon, 24 Mar 2025 11:52:28 +0100 Subject: [PATCH] Fix missing error and add test --- query.go | 3 +++ query_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/query.go b/query.go index 2c351b9..1472a54 100644 --- a/query.go +++ b/query.go @@ -138,6 +138,9 @@ type Rows struct { } func (q *Query) ScanMulti() (*Rows, error) { + if q.err != nil { + return nil, q.err + } return &Rows{ query: q, }, nil diff --git a/query_test.go b/query_test.go index 13b34c0..16269ec 100644 --- a/query_test.go +++ b/query_test.go @@ -133,3 +133,28 @@ func TestTransactionRollback(t *testing.T) { db.Query("select value from mytable where key = 'foo'").MustScanSingle(&value) require.Equal(t, "bar", value, "expected original value after rollback") } + +func TestQueryWithInClause(t *testing.T) { + db := openTestDb(t) + // Insert additional test rows + db.Query("insert into mytable(key, value) values ('key1', 'value1')").MustExec() + db.Query("insert into mytable(key, value) values ('key2', 'value2')").MustExec() + + // Execute query with IN clause + rows, err := db.Query("select key, value from mytable where key in (?, ?)").Bind("foo", "key2").ScanMulti() + require.NoError(t, err) + defer rows.MustFinish() + + // Check results + results := make(map[string]string) + for rows.MustNext() { + var key, value string + rows.MustScan(&key, &value) + results[key] = value + } + + // Verify we got exactly the expected results + require.Equal(t, 2, len(results), "expected 2 matching rows") + require.Equal(t, "bar", results["foo"], "unexpected value for key 'foo'") + require.Equal(t, "value2", results["key2"], "unexpected value for key 'key2'") +}