fix trace callback.

Close #352
This commit is contained in:
Yasuhiro Matsumoto
2016-11-08 12:19:13 +09:00
parent 3e26a9df84
commit dd2c82226b
4 changed files with 97 additions and 31 deletions

View File

@@ -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
}
}
}