database/sql: refcounting and lifetime fixes
Simplifies the contract for Driver.Stmt.Close in
the process of fixing issue 3865.
Fixes #3865
Update #4459 (maybe fixes it; uninvestigated)
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/7363043
diff --git a/src/pkg/database/sql/sql_test.go b/src/pkg/database/sql/sql_test.go
index 6571cfd..e6fc6a1 100644
--- a/src/pkg/database/sql/sql_test.go
+++ b/src/pkg/database/sql/sql_test.go
@@ -8,7 +8,6 @@
"database/sql/driver"
"fmt"
"reflect"
- "runtime"
"strings"
"testing"
"time"
@@ -63,6 +62,10 @@
}
func closeDB(t *testing.T, db *DB) {
+ if e := recover(); e != nil {
+ fmt.Printf("Panic: %v\n", e)
+ panic(e)
+ }
err := db.Close()
if err != nil {
t.Fatalf("error closing DB: %v", err)
@@ -448,10 +451,8 @@
}
}
+// From golang.org/issue/3865
func TestCloseStmtBeforeRows(t *testing.T) {
- t.Skip("known broken test; golang.org/issue/3865")
- return
-
db := newTestDB(t, "people")
defer closeDB(t, db)
@@ -666,8 +667,3 @@
}
}
}
-
-func stack() string {
- buf := make([]byte, 1024)
- return string(buf[:runtime.Stack(buf, false)])
-}