diff options
author | mattn <mattn.jp@gmail.com> | 2013-09-12 18:00:34 -0700 |
---|---|---|
committer | mattn <mattn.jp@gmail.com> | 2013-09-12 18:00:34 -0700 |
commit | d0ce1a17849d6e1182b1637115ec46f60a83562b (patch) | |
tree | 369bc4be72de57fc20b39be69b8095e6f095ff47 | |
parent | Disable Execer/Queryer until database/sql/driver implement QueryRow: #82 (diff) | |
parent | add new test for WAL journal_mode (diff) | |
download | golite-d0ce1a17849d6e1182b1637115ec46f60a83562b.tar.gz golite-d0ce1a17849d6e1182b1637115ec46f60a83562b.tar.xz |
Merge pull request #83 from dajohi/master
add new test for WAL journal_mode
-rw-r--r-- | sqlite3_test.go | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/sqlite3_test.go b/sqlite3_test.go index ec86aef..55536e8 100644 --- a/sqlite3_test.go +++ b/sqlite3_test.go @@ -580,6 +580,52 @@ func TestTransaction(t *testing.T) { } } +func TestWAL(t *testing.T) { + tempFilename := TempFilename() + db, err := sql.Open("sqlite3", tempFilename) + if err != nil { + t.Fatal("Failed to open database:", err) + } + + defer os.Remove(tempFilename) + defer db.Close() + if _, err = db.Exec("PRAGMA journal_mode=WAL;"); err != nil { + t.Fatal("Failed to Exec PRAGMA journal_mode:", err) + } + if _, err = db.Exec("PRAGMA locking_mode=EXCLUSIVE;"); err != nil { + t.Fatal("Failed to Exec PRAGMA locking_mode:", err) + } + if _, err = db.Exec("CREATE TABLE test (id SERIAL, user TEXT NOT NULL, name TEXT NOT NULL);"); err != nil { + t.Fatal("Failed to Exec CREATE TABLE:", err) + } + if _, err = db.Exec("INSERT INTO test (user, name) VALUES ('user','name');"); err != nil { + t.Fatal("Failed to Exec INSERT:", err) + } + + trans, err := db.Begin() + if err != nil { + t.Fatal("Failed to Begin:", err) + } + s, err := trans.Prepare("INSERT INTO test (user, name) VALUES (?, ?);") + if err != nil { + t.Fatal("Failed to Prepare:", err) + } + + var count int + if err = trans.QueryRow("SELECT count(user) FROM test;").Scan(&count); err != nil { + t.Fatal("Failed to QueryRow:", err) + } + if _, err = s.Exec("bbbb", "aaaa"); err != nil { + t.Fatal("Failed to Exec prepared statement:", err) + } + if err = s.Close(); err != nil { + t.Fatal("Failed to Close prepared statement:", err) + } + if err = trans.Commit(); err != nil { + t.Fatal("Failed to Commit:", err) + } +} + // TODO: Execer & Queryer currently disabled // https://github.com/mattn/go-sqlite3/issues/82 //func TestExecer(t *testing.T) { @@ -645,4 +691,3 @@ func TestTransaction(t *testing.T) { // } // } //} - |