aboutsummaryrefslogtreecommitdiff
path: root/sqlite3_test.go
diff options
context:
space:
mode:
authorYoann Cerda <tuxlinuxien@gmail.com>2018-06-09 12:42:16 +0800
committerGert-Jan Timmer <gjr.timmer@gmail.com>2018-06-12 13:55:59 +0200
commita06d1c9512f90652d55f8cd4a717a4dd1808ed64 (patch)
treee2f4730c0a05ce68bb794488399c08fbb8203db4 /sqlite3_test.go
parentMerge pull request #591 from mattn/fix/118 (diff)
downloadgolite-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.go50
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)