From 5a45a157f2e94cb3fec38a3be8afa3bffd800067 Mon Sep 17 00:00:00 2001 From: Daniel Theophanes Date: Thu, 30 Mar 2017 16:03:03 -0700 Subject: database/sql: support scanning into user defined string types User defined numeric types such as "type Int int64" have been able to be scanned into without a custom scanner by using the reflect scan code path used to convert between various numeric types. Add in a path for string types for symmetry and least surprise. Fixes #18101 Change-Id: I00553bcf021ffe6d95047eca0067ee94b54ff501 Reviewed-on: https://go-review.googlesource.com/39031 Run-TryBot: Daniel Theophanes TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/database/sql/sql_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/database/sql/sql_test.go') diff --git a/src/database/sql/sql_test.go b/src/database/sql/sql_test.go index 4c1adf51b6..f511aa4ac3 100644 --- a/src/database/sql/sql_test.go +++ b/src/database/sql/sql_test.go @@ -3155,6 +3155,24 @@ func TestPing(t *testing.T) { } } +// Issue 18101. +func TestTypedString(t *testing.T) { + db := newTestDB(t, "people") + defer closeDB(t, db) + + type Str string + var scanned Str + + err := db.QueryRow("SELECT|people|name|name=?", "Alice").Scan(&scanned) + if err != nil { + t.Fatal(err) + } + expected := Str("Alice") + if scanned != expected { + t.Errorf("expected %+v, got %+v", expected, scanned) + } +} + func BenchmarkConcurrentDBExec(b *testing.B) { b.ReportAllocs() ct := new(concurrentDBExecTest) -- cgit v1.3