@@ -781,6 +781,84 @@ func TestDestructiveTransaction(t *testing.T) {
781781 },
782782 }
783783 testRunQueryResults (t , queryResults )
784+
785+ // Run new transactions after the others finished successfully.
786+ var tx3 * sql.Tx
787+ var tx4 * sql.Tx
788+
789+ tx3 , err = TestDB .BeginTx (ctx , nil )
790+ if err != nil {
791+ t .Fatal ("begin tx error:" , err )
792+ }
793+
794+ tx4 , err = TestDB .BeginTx (ctx , nil )
795+ if err != nil {
796+ t .Fatal ("begin tx error:" , err )
797+ }
798+
799+ result , err = tx4 .ExecContext (ctx , "update TRANSACTION_" + TestTimeString + " set B = :1 where A = :2" , []interface {}{99 , 1 }... )
800+ if err != nil {
801+ t .Fatal ("exec error:" , err )
802+ }
803+
804+ count , err = result .RowsAffected ()
805+ if err != nil {
806+ t .Fatal ("rows affected error:" , err )
807+ }
808+ if count != 1 {
809+ t .Fatalf ("rows affected %v not equal to 1" , count )
810+ }
811+
812+ result , err = tx3 .ExecContext (ctx , "update TRANSACTION_" + TestTimeString + " set B = :1 where A = :2" , []interface {}{88 , 6 }... )
813+ if err != nil {
814+ t .Fatal ("exec error:" , err )
815+ }
816+
817+ count , err = result .RowsAffected ()
818+ if err != nil {
819+ t .Fatal ("rows affected error:" , err )
820+ }
821+ if count != 1 {
822+ t .Fatalf ("rows affected %v not equal to 1" , count )
823+ }
824+
825+ queryResults = testQueryResults {
826+ query : "select A, B, C from TRANSACTION_" + TestTimeString + " order by A" ,
827+ queryResults : []testQueryResult {
828+ {
829+ results : [][]interface {}{
830+ {int64 (1 ), int64 (22 ), int64 (3 )},
831+ {int64 (4 ), int64 (55 ), int64 (6 )},
832+ {int64 (6 ), int64 (7 ), int64 (8 )},
833+ },
834+ },
835+ },
836+ }
837+ testRunQueryResults (t , queryResults )
838+
839+ err = tx3 .Commit ()
840+ if err != nil {
841+ t .Fatal ("commit err:" , err )
842+ }
843+
844+ err = tx4 .Rollback ()
845+ if err != nil {
846+ t .Fatal ("commit err:" , err )
847+ }
848+
849+ queryResults = testQueryResults {
850+ query : "select A, B, C from TRANSACTION_" + TestTimeString + " order by A" ,
851+ queryResults : []testQueryResult {
852+ {
853+ results : [][]interface {}{
854+ {int64 (1 ), int64 (22 ), int64 (3 )},
855+ {int64 (4 ), int64 (55 ), int64 (6 )},
856+ {int64 (6 ), int64 (88 ), int64 (8 )},
857+ },
858+ },
859+ },
860+ }
861+ testRunQueryResults (t , queryResults )
784862}
785863
786864// TestSelectDualNull checks null from dual
0 commit comments