diff options
author | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2016-11-08 12:19:13 +0900 |
---|---|---|
committer | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2016-11-08 12:19:51 +0900 |
commit | dd2c82226baa4c72a4b99efb07d048e9d2e92796 (patch) | |
tree | ff713fe3531eea1db29723c33430d40ae37d5e39 /sqlite3_go18_test.go | |
parent | Merge pull request #351 from andrefsp/data-race-fix (diff) | |
download | golite-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.go | 56 |
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 + } + } +} |