mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
database/sql: ensure Commit and Rollback return ErrTxDone
Ensure documented behavior of returning ErrTxDone if the Tx has already been committed or rolled back. Fixes #18147 Change-Id: I07dc75bef4dbd4dd88dd252c96dc8ab99f28c00e Reviewed-on: https://go-review.googlesource.com/33793 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
2d136ae82e
commit
ae9712c766
2 changed files with 34 additions and 3 deletions
|
|
@ -683,6 +683,37 @@ func TestQueryRow(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestTxRollbackCommitErr(t *testing.T) {
|
||||
db := newTestDB(t, "people")
|
||||
defer closeDB(t, db)
|
||||
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = tx.Rollback()
|
||||
if err != nil {
|
||||
t.Errorf("expected nil error from Rollback; got %v", err)
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != ErrTxDone {
|
||||
t.Errorf("expected %q from Commit; got %q", ErrTxDone, err)
|
||||
}
|
||||
|
||||
tx, err = db.Begin()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
t.Errorf("expected nil error from Commit; got %v", err)
|
||||
}
|
||||
err = tx.Rollback()
|
||||
if err != ErrTxDone {
|
||||
t.Errorf("expected %q from Rollback; got %q", ErrTxDone, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStatementErrorAfterClose(t *testing.T) {
|
||||
db := newTestDB(t, "people")
|
||||
defer closeDB(t, db)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue