diff options
author | Yoann Cerda <tuxlinuxien@gmail.com> | 2018-06-09 12:42:16 +0800 |
---|---|---|
committer | Gert-Jan Timmer <gjr.timmer@gmail.com> | 2018-06-12 13:55:59 +0200 |
commit | a06d1c9512f90652d55f8cd4a717a4dd1808ed64 (patch) | |
tree | e2f4730c0a05ce68bb794488399c08fbb8203db4 /sqlite3_test.go | |
parent | Merge pull request #591 from mattn/fix/118 (diff) | |
download | golite-a06d1c9512f90652d55f8cd4a717a4dd1808ed64.tar.gz golite-a06d1c9512f90652d55f8cd4a717a4dd1808ed64.tar.xz |
bump sqlite3 3.24.0 and add TestUpsert.
Diffstat (limited to 'sqlite3_test.go')
-rw-r--r-- | sqlite3_test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sqlite3_test.go b/sqlite3_test.go index 186a2dd..d481871 100644 --- a/sqlite3_test.go +++ b/sqlite3_test.go @@ -231,6 +231,56 @@ func TestInsert(t *testing.T) { } } +func TestUpsert(t *testing.T) { + _, n, _ := Version() + if !(n >= 3024000) { + t.Log("your version of sqlite3 doesn't support UPSERT featue. Version >= '3.24.0' needed. Skipping test...") + return + } + 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("drop table foo") + _, err = db.Exec("create table foo (name string primary key, counter integer)") + if err != nil { + t.Fatal("Failed to create table:", err) + } + + for i := 0; i < 10; i++ { + res, err := db.Exec("insert into foo(name, counter) values('key', 1) on conflict (name) do update set counter=counter+1") + if err != nil { + t.Fatal("Failed to upsert record:", err) + } + affected, _ := res.RowsAffected() + if affected != 1 { + t.Fatalf("Expected %d for affected rows, but %d:", 1, affected) + } + } + rows, err := db.Query("select name, counter from foo") + if err != nil { + t.Fatal("Failed to select records:", err) + } + defer rows.Close() + + rows.Next() + + var resultName string + var resultCounter int + rows.Scan(&resultName, &resultCounter) + if resultName != "key" { + t.Errorf("Expected %s for fetched result, but %s:", "key", resultName) + } + if resultCounter != 10 { + t.Errorf("Expected %d for fetched result, but %d:", 10, resultCounter) + } + +} + func TestUpdate(t *testing.T) { tempFilename := TempFilename(t) defer os.Remove(tempFilename) |