File tree Expand file tree Collapse file tree 2 files changed +18
-4
lines changed
Expand file tree Collapse file tree 2 files changed +18
-4
lines changed Original file line number Diff line number Diff line change @@ -94,8 +94,6 @@ def test_replace_starts_transaction(self):
9494 self .assertEqual (len (res ), 1 )
9595 self .assertEqual (res [0 ][0 ], 5 )
9696
97- # TODO: RUSTPYTHON
98- @unittest .expectedFailure
9997 def test_toggle_auto_commit (self ):
10098 self .cur1 .execute ("create table test(i)" )
10199 self .cur1 .execute ("insert into test(i) values (5)" )
Original file line number Diff line number Diff line change @@ -1346,6 +1346,16 @@ mod _sqlite {
13461346 if let Some ( val) = & val {
13471347 begin_statement_ptr_from_isolation_level ( val, vm) ?;
13481348 }
1349+
1350+ // If setting isolation_level to None (auto-commit mode), commit any pending transaction
1351+ if val. is_none ( ) {
1352+ let db = self . db_lock ( vm) ?;
1353+ if !db. is_autocommit ( ) {
1354+ // Keep the lock and call implicit_commit directly to avoid race conditions
1355+ db. implicit_commit ( vm) ?;
1356+ }
1357+ }
1358+
13491359 let _ = unsafe { self . isolation_level . swap ( val) } ;
13501360 Ok ( ( ) )
13511361 }
@@ -1472,7 +1482,10 @@ mod _sqlite {
14721482
14731483 let db = zelf. connection . db_lock ( vm) ?;
14741484
1475- if stmt. is_dml && db. is_autocommit ( ) {
1485+ if stmt. is_dml
1486+ && db. is_autocommit ( )
1487+ && zelf. connection . isolation_level . deref ( ) . is_some ( )
1488+ {
14761489 db. begin_transaction (
14771490 zelf. connection
14781491 . isolation_level
@@ -1552,7 +1565,10 @@ mod _sqlite {
15521565
15531566 let db = zelf. connection . db_lock ( vm) ?;
15541567
1555- if stmt. is_dml && db. is_autocommit ( ) {
1568+ if stmt. is_dml
1569+ && db. is_autocommit ( )
1570+ && zelf. connection . isolation_level . deref ( ) . is_some ( )
1571+ {
15561572 db. begin_transaction (
15571573 zelf. connection
15581574 . isolation_level
You can’t perform that action at this time.
0 commit comments