diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2012-01-17 10:44:35 -0800 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2012-01-17 10:44:35 -0800 |
| commit | ebc8013edfc009b1190c656e738b15fe9729cc89 (patch) | |
| tree | 8e4f7367fecfb54f79977d276e04c086bbf6eca5 /src/pkg/exp/sql/sql_test.go | |
| parent | ddef49dfce26e13e7df6e28669bc43eb82510933 (diff) | |
| download | go-ebc8013edfc009b1190c656e738b15fe9729cc89.tar.xz | |
exp/sql: copy when scanning into []byte by default
Fixes #2698
R=rsc
CC=golang-dev
https://golang.org/cl/5539060
Diffstat (limited to 'src/pkg/exp/sql/sql_test.go')
| -rw-r--r-- | src/pkg/exp/sql/sql_test.go | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/src/pkg/exp/sql/sql_test.go b/src/pkg/exp/sql/sql_test.go index 3f98a8cd9f..30cd97d176 100644 --- a/src/pkg/exp/sql/sql_test.go +++ b/src/pkg/exp/sql/sql_test.go @@ -76,7 +76,7 @@ func TestQuery(t *testing.T) { {age: 3, name: "Chris"}, } if !reflect.DeepEqual(got, want) { - t.Logf(" got: %#v\nwant: %#v", got, want) + t.Errorf("mismatch.\n got: %#v\nwant: %#v", got, want) } // And verify that the final rows.Next() call, which hit EOF, @@ -86,6 +86,43 @@ func TestQuery(t *testing.T) { } } +func TestByteOwnership(t *testing.T) { + db := newTestDB(t, "people") + defer closeDB(t, db) + rows, err := db.Query("SELECT|people|name,photo|") + if err != nil { + t.Fatalf("Query: %v", err) + } + type row struct { + name []byte + photo RawBytes + } + got := []row{} + for rows.Next() { + var r row + err = rows.Scan(&r.name, &r.photo) + if err != nil { + t.Fatalf("Scan: %v", err) + } + got = append(got, r) + } + corruptMemory := []byte("\xffPHOTO") + want := []row{ + {name: []byte("Alice"), photo: corruptMemory}, + {name: []byte("Bob"), photo: corruptMemory}, + {name: []byte("Chris"), photo: corruptMemory}, + } + if !reflect.DeepEqual(got, want) { + t.Errorf("mismatch.\n got: %#v\nwant: %#v", got, want) + } + + var photo RawBytes + err = db.QueryRow("SELECT|people|photo|name=?", "Alice").Scan(&photo) + if err == nil { + t.Error("want error scanning into RawBytes from QueryRow") + } +} + func TestRowsColumns(t *testing.T) { db := newTestDB(t, "people") defer closeDB(t, db) @@ -300,6 +337,6 @@ func TestQueryRowClosingStmt(t *testing.T) { } fakeConn := db.freeConn[0].(*fakeConn) if made, closed := fakeConn.stmtsMade, fakeConn.stmtsClosed; made != closed { - t.Logf("statement close mismatch: made %d, closed %d", made, closed) + t.Errorf("statement close mismatch: made %d, closed %d", made, closed) } } |
