mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
database/sql: Close per-tx prepared statements when the associated tx ends
LGTM=bradfitz R=golang-codereviews, bradfitz, mattn.jp CC=golang-codereviews https://golang.org/cl/131650043
This commit is contained in:
parent
93e5cc224e
commit
5f739d9dcd
2 changed files with 67 additions and 5 deletions
|
|
@ -441,6 +441,33 @@ func TestExec(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestTxPrepare(t *testing.T) {
|
||||
db := newTestDB(t, "")
|
||||
defer closeDB(t, db)
|
||||
exec(t, db, "CREATE|t1|name=string,age=int32,dead=bool")
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
t.Fatalf("Begin = %v", err)
|
||||
}
|
||||
stmt, err := tx.Prepare("INSERT|t1|name=?,age=?")
|
||||
if err != nil {
|
||||
t.Fatalf("Stmt, err = %v, %v", stmt, err)
|
||||
}
|
||||
defer stmt.Close()
|
||||
_, err = stmt.Exec("Bobby", 7)
|
||||
if err != nil {
|
||||
t.Fatalf("Exec = %v", err)
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
t.Fatalf("Commit = %v", err)
|
||||
}
|
||||
// Commit() should have closed the statement
|
||||
if !stmt.closed {
|
||||
t.Fatal("Stmt not closed after Commit")
|
||||
}
|
||||
}
|
||||
|
||||
func TestTxStmt(t *testing.T) {
|
||||
db := newTestDB(t, "")
|
||||
defer closeDB(t, db)
|
||||
|
|
@ -464,6 +491,10 @@ func TestTxStmt(t *testing.T) {
|
|||
if err != nil {
|
||||
t.Fatalf("Commit = %v", err)
|
||||
}
|
||||
// Commit() should have closed the statement
|
||||
if !txs.closed {
|
||||
t.Fatal("Stmt not closed after Commit")
|
||||
}
|
||||
}
|
||||
|
||||
// Issue: http://golang.org/issue/2784
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue