mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
database/sql: fix double decrement of numOpen count; test for connection leaks
Add a check at the end of every test to make sure there are no leaked connections after running a test. Avoid incorrectly decrementing the number of open connections when the driver connection ends up it a bad state (numOpen was decremented twice). Prevent leaking a Rows struct (which ends up leaking a connection) in Row.Scan() when a *RawBytes destination is improperly used. Close the Rows struct in TestRowsColumns. Update #6593 R=golang-dev, bradfitz, dave CC=golang-dev https://golang.org/cl/14642044
This commit is contained in:
parent
4d38d1260e
commit
478f4b6754
2 changed files with 18 additions and 5 deletions
|
|
@ -94,6 +94,12 @@ func closeDB(t testing.TB, db *DB) {
|
|||
if err != nil {
|
||||
t.Fatalf("error closing DB: %v", err)
|
||||
}
|
||||
db.mu.Lock()
|
||||
count := db.numOpen
|
||||
db.mu.Unlock()
|
||||
if count != 0 {
|
||||
t.Fatalf("%d connections still open after closing DB", db.numOpen)
|
||||
}
|
||||
}
|
||||
|
||||
// numPrepares assumes that db has exactly 1 idle conn and returns
|
||||
|
|
@ -246,6 +252,9 @@ func TestRowsColumns(t *testing.T) {
|
|||
if !reflect.DeepEqual(cols, want) {
|
||||
t.Errorf("got %#v; want %#v", cols, want)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
t.Errorf("error closing rows: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestQueryRow(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue