From 7ba98d23bc4218169d31ab64e93313edb5a5fb27 Mon Sep 17 00:00:00 2001 From: micanzhang Date: Thu, 23 Nov 2017 20:03:32 +0800 Subject: [PATCH 1/2] fix Scan NullTime type failed at sqlite3 (#33) --- circle.yml | 3 ++- db_test.go | 25 ++++++++++++------------- pk_test.go | 5 ++--- scan.go | 3 +++ 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/circle.yml b/circle.yml index 006e1230..e6a05be2 100644 --- a/circle.yml +++ b/circle.yml @@ -11,4 +11,5 @@ database: test: override: # './...' is a relative pattern which means all subdirectories - - go test -v -race \ No newline at end of file + - go test -v -race + - go test -v -race --dbtype=sqlite3 diff --git a/db_test.go b/db_test.go index 94c4ea4f..43637e8c 100644 --- a/db_test.go +++ b/db_test.go @@ -2,7 +2,7 @@ package core import ( "errors" - "fmt" + "flag" "os" "testing" "time" @@ -12,8 +12,7 @@ import ( ) var ( - //dbtype string = "sqlite3" - dbtype string = "mysql" + dbtype = flag.String("dbtype", "mysql", "database type") createTableSql string ) @@ -28,7 +27,8 @@ type User struct { } func init() { - switch dbtype { + flag.Parse() + switch *dbtype { case "sqlite3": createTableSql = "CREATE TABLE IF NOT EXISTS `user` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NULL, " + "`title` TEXT NULL, `age` FLOAT NULL, `alias` TEXT NULL, `nick_name` TEXT NULL, `created` datetime);" @@ -41,7 +41,7 @@ func init() { } func testOpen() (*DB, error) { - switch dbtype { + switch *dbtype { case "sqlite3": os.Remove("./test.db") return Open("sqlite3", "./test.db") @@ -133,7 +133,7 @@ func BenchmarkStructQuery(b *testing.B) { b.Error(err) } if user.Name != "xlw" { - fmt.Println(user) + b.Log(user) b.Error(errors.New("name should be xlw")) } } @@ -179,7 +179,7 @@ func BenchmarkStruct2Query(b *testing.B) { b.Error(err) } if user.Name != "xlw" { - fmt.Println(user) + b.Log(user) b.Error(errors.New("name should be xlw")) } } @@ -228,9 +228,8 @@ func BenchmarkSliceInterfaceQuery(b *testing.B) { if err != nil { b.Error(err) } - fmt.Println(slice) + b.Log(slice) if *slice[1].(*string) != "xlw" { - fmt.Println(slice) b.Error(errors.New("name should be xlw")) } } @@ -332,7 +331,7 @@ func BenchmarkSliceStringQuery(b *testing.B) { b.Error(err) } if (*slice[1]) != "xlw" { - fmt.Println(slice) + b.Log(slice) b.Error(errors.New("name should be xlw")) } } @@ -378,7 +377,7 @@ func BenchmarkMapInterfaceQuery(b *testing.B) { b.Error(err) } if m["name"].(string) != "xlw" { - fmt.Println(m) + b.Log(m) b.Error(errors.New("name should be xlw")) } } @@ -579,7 +578,7 @@ func TestExecMap(t *testing.T) { if err != nil { t.Error(err) } - fmt.Println("--", user) + t.Log("--", user) } } @@ -621,7 +620,7 @@ func TestExecStruct(t *testing.T) { if err != nil { t.Error(err) } - fmt.Println("1--", user) + t.Log("1--", user) } } diff --git a/pk_test.go b/pk_test.go index 05486086..7986ae41 100644 --- a/pk_test.go +++ b/pk_test.go @@ -1,7 +1,6 @@ package core import ( - "fmt" "reflect" "testing" ) @@ -12,14 +11,14 @@ func TestPK(t *testing.T) { if err != nil { t.Error(err) } - fmt.Println(str) + t.Log(str) s := &PK{} err = s.FromString(str) if err != nil { t.Error(err) } - fmt.Println(s) + t.Log(s) if len(*p) != len(*s) { t.Fatal("p", *p, "should be equal", *s) diff --git a/scan.go b/scan.go index 7da338d8..b7c159b2 100644 --- a/scan.go +++ b/scan.go @@ -44,6 +44,9 @@ func convertTime(dest *NullTime, src interface{}) error { } *dest = NullTime(t) return nil + case time.Time: + *dest = NullTime(s) + return nil case nil: default: return fmt.Errorf("unsupported driver -> Scan pair: %T -> %T", src, dest) From 589eefd4f452f2bdb7cb2df841a548d5f6e2d48a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E6=99=A8?= Date: Wed, 6 Dec 2017 21:58:25 +0800 Subject: [PATCH 2/2] gofmt (#35) --- cache.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cache.go b/cache.go index bf81bd52..cd95e548 100644 --- a/cache.go +++ b/cache.go @@ -1,11 +1,11 @@ package core import ( + "bytes" + "encoding/gob" "errors" "fmt" "time" - "bytes" - "encoding/gob" ) const ( @@ -55,7 +55,6 @@ func encodeIds(ids []PK) (string, error) { return buf.String(), err } - func decodeIds(s string) ([]PK, error) { pks := make([]PK, 0)