diff options
| author | James P. Cooper <jamespcooper@gmail.com> | 2012-01-26 15:12:48 -0800 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2012-01-26 15:12:48 -0800 |
| commit | 2a22f35598bba353f13d4808b4c4d710fa125f43 (patch) | |
| tree | ba4b61a52b8e0e9c01847f8dc1b5d91a0029e65a /src/pkg/database/sql/sql_test.go | |
| parent | 01afb79c5960c746238c21b1eadc222af85d7c19 (diff) | |
| download | go-2a22f35598bba353f13d4808b4c4d710fa125f43.tar.xz | |
database/sql: convert SQL null values to []byte as nil.
Also allow string values to scan into []byte.
Fixes #2788.
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5577054
Diffstat (limited to 'src/pkg/database/sql/sql_test.go')
| -rw-r--r-- | src/pkg/database/sql/sql_test.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/pkg/database/sql/sql_test.go b/src/pkg/database/sql/sql_test.go index 08db6d38ff..c5cadad849 100644 --- a/src/pkg/database/sql/sql_test.go +++ b/src/pkg/database/sql/sql_test.go @@ -358,6 +358,34 @@ func TestIssue2542Deadlock(t *testing.T) { } } +// Tests fix for issue 2788, that we bind nil to a []byte if the +// value in the column is sql null +func TestNullByteSlice(t *testing.T) { + db := newTestDB(t, "") + defer closeDB(t, db) + exec(t, db, "CREATE|t|id=int32,name=nullstring") + exec(t, db, "INSERT|t|id=10,name=?", nil) + + var name []byte + + err := db.QueryRow("SELECT|t|name|id=?", 10).Scan(&name) + if err != nil { + t.Fatal(err) + } + if name != nil { + t.Fatalf("name []byte should be nil for null column value, got: %#v", name) + } + + exec(t, db, "INSERT|t|id=11,name=?", "bob") + err = db.QueryRow("SELECT|t|name|id=?", 11).Scan(&name) + if err != nil { + t.Fatal(err) + } + if string(name) != "bob" { + t.Fatalf("name []byte should be bob, got: %q", string(name)) + } +} + func TestQueryRowClosingStmt(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) |
