Fix dbSavepoint.Begin recursive self call

It needed to call the inner tx.

fixes 
pull/636/head
Jack Christensen 2019-10-22 20:38:12 -05:00
parent 3da4ea1a97
commit 78a83eba6a
2 changed files with 17 additions and 2 deletions

2
tx.go
View File

@ -261,7 +261,7 @@ func (sp *dbSavepoint) Begin(ctx context.Context) (Tx, error) {
return nil, ErrTxClosed
}
return sp.Begin(ctx)
return sp.tx.Begin(ctx)
}
// Commit releases the savepoint essentially committing the pseudo nested transaction.

View File

@ -269,6 +269,21 @@ func TestTxNestedTransactionCommit(t *testing.T) {
t.Fatalf("nestedTx.Exec failed: %v", err)
}
doubleNestedTx, err := nestedTx.Begin(context.Background())
if err != nil {
t.Fatal(err)
}
_, err = doubleNestedTx.Exec(context.Background(), "insert into foo(id) values (3)")
if err != nil {
t.Fatalf("doubleNestedTx.Exec failed: %v", err)
}
err = doubleNestedTx.Commit(context.Background())
if err != nil {
t.Fatalf("doubleNestedTx.Commit failed: %v", err)
}
err = nestedTx.Commit(context.Background())
if err != nil {
t.Fatalf("nestedTx.Commit failed: %v", err)
@ -284,7 +299,7 @@ func TestTxNestedTransactionCommit(t *testing.T) {
if err != nil {
t.Fatalf("QueryRow Scan failed: %v", err)
}
if n != 2 {
if n != 3 {
t.Fatalf("Did not receive correct number of rows: %v", n)
}
}