aboutsummaryrefslogtreecommitdiff
path: root/sqlite3_go18_test.go
diff options
context:
space:
mode:
authorYasuhiro Matsumoto <mattn.jp@gmail.com>2016-11-08 12:19:13 +0900
committerYasuhiro Matsumoto <mattn.jp@gmail.com>2016-11-08 12:19:51 +0900
commitdd2c82226baa4c72a4b99efb07d048e9d2e92796 (patch)
treeff713fe3531eea1db29723c33430d40ae37d5e39 /sqlite3_go18_test.go
parentMerge pull request #351 from andrefsp/data-race-fix (diff)
downloadgolite-dd2c82226baa4c72a4b99efb07d048e9d2e92796.tar.gz
golite-dd2c82226baa4c72a4b99efb07d048e9d2e92796.tar.xz
fix trace callback.
Close #352
Diffstat (limited to 'sqlite3_go18_test.go')
-rw-r--r--sqlite3_go18_test.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/sqlite3_go18_test.go b/sqlite3_go18_test.go
index 54e6604..0536042 100644
--- a/sqlite3_go18_test.go
+++ b/sqlite3_go18_test.go
@@ -9,6 +9,7 @@ package sqlite3
import (
"database/sql"
+ "fmt"
"os"
"testing"
)
@@ -48,3 +49,58 @@ func TestNamedParams(t *testing.T) {
t.Error("Failed to db.QueryRow: not matched results")
}
}
+
+func TestMultipleResultSet(t *testing.T) {
+ tempFilename := TempFilename(t)
+ defer os.Remove(tempFilename)
+ db, err := sql.Open("sqlite3", tempFilename)
+ if err != nil {
+ t.Fatal("Failed to open database:", err)
+ }
+ defer db.Close()
+
+ _, err = db.Exec(`
+ create table foo (id integer, name text);
+ `)
+ if err != nil {
+ t.Error("Failed to call db.Query:", err)
+ }
+
+ for i := 0; i < 100; i++ {
+ _, err = db.Exec(`insert into foo(id, name) values(?, ?)`, i+1, fmt.Sprintf("foo%03d", i+1))
+ if err != nil {
+ t.Error("Failed to call db.Exec:", err)
+ }
+ }
+
+ rows, err := db.Query(`
+ select id, name from foo where id < :id1;
+ select id, name from foo where id = :id2;
+ select id, name from foo where id > :id3;
+ `,
+ sql.Param(":id1", 3),
+ sql.Param(":id2", 50),
+ sql.Param(":id3", 98),
+ )
+ if err != nil {
+ t.Error("Failed to call db.Query:", err)
+ }
+
+ var id int
+ var extra string
+
+ for {
+ for rows.Next() {
+ err = rows.Scan(&id, &extra)
+ if err != nil {
+ t.Error("Failed to db.Scan:", err)
+ }
+ if id != 1 || extra != "foo" {
+ t.Error("Failed to db.QueryRow: not matched results")
+ }
+ }
+ if !rows.NextResultSet() {
+ break
+ }
+ }
+}