aboutsummaryrefslogtreecommitdiff
path: root/all_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'all_test.go')
-rw-r--r--all_test.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/all_test.go b/all_test.go
index 08f565b..676fd8c 100644
--- a/all_test.go
+++ b/all_test.go
@@ -826,3 +826,67 @@ func TestIssue28(t *testing.T) {
t.Fatalf("got %T(%[1]v), expected %T(%[2]v)", err, sql.ErrNoRows)
}
}
+
+// https://gitlab.com/cznic/sqlite/-/issues/30
+func TestIssue30(t *testing.T) {
+ tempDir, err := ioutil.TempDir("", "")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ defer os.RemoveAll(tempDir)
+
+ db, err := sql.Open("sqlite", filepath.Join(tempDir, "test.db"))
+ if err != nil {
+ t.Fatalf("test.db open fail: %v", err)
+ }
+
+ defer db.Close()
+
+ _, err = db.Query("CREATE TABLE IF NOT EXISTS `userinfo` (`uid` INTEGER PRIMARY KEY AUTOINCREMENT,`username` VARCHAR(64) NULL, `departname` VARCHAR(64) NULL, `created` DATE NULL);")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ insertStatement := `INSERT INTO userinfo(username, departname, created) values("astaxie", "研发部门", "2012-12-09")`
+ _, err = db.Query(insertStatement)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ rows2, err := db.Query("SELECT * FROM userinfo")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ columnTypes, _ := rows2.ColumnTypes()
+ var b strings.Builder
+ for rows2.Next() {
+ for index, value := range columnTypes {
+ precision, scale, precisionOk := value.DecimalSize()
+ length, lengthOk := value.Length()
+ nullable, nullableOk := value.Nullable()
+ fmt.Fprintf(&b, "Col %d: DatabaseTypeName %q, DecimalSize %v %v %v, Length %v %v, Name %q, Nullable %v %v, ScanType %q\n",
+ index,
+ value.DatabaseTypeName(),
+ precision, scale, precisionOk,
+ length, lengthOk,
+ value.Name(),
+ nullable, nullableOk,
+ value.ScanType(),
+ )
+ }
+ }
+ if err := rows2.Err(); err != nil {
+ t.Fatal(err)
+ }
+
+ if g, e := b.String(), `Col 0: DatabaseTypeName "INTEGER", DecimalSize 0 0 false, Length 0 false, Name "uid", Nullable true true, ScanType "int64"
+Col 1: DatabaseTypeName "VARCHAR(64)", DecimalSize 0 0 false, Length 9223372036854775807 true, Name "username", Nullable true true, ScanType "string"
+Col 2: DatabaseTypeName "VARCHAR(64)", DecimalSize 0 0 false, Length 9223372036854775807 true, Name "departname", Nullable true true, ScanType "string"
+Col 3: DatabaseTypeName "DATE", DecimalSize 0 0 false, Length 9223372036854775807 true, Name "created", Nullable true true, ScanType "string"
+`; g != e {
+ t.Fatalf("---- got\n%s\n----expected\n%s", g, e)
+ }
+ t.Log(b.String())
+}