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):
94
94
self .assertEqual (len (res ), 1 )
95
95
self .assertEqual (res [0 ][0 ], 5 )
96
96
97
- # TODO: RUSTPYTHON
98
- @unittest .expectedFailure
99
97
def test_toggle_auto_commit (self ):
100
98
self .cur1 .execute ("create table test(i)" )
101
99
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 {
1346
1346
if let Some ( val) = & val {
1347
1347
begin_statement_ptr_from_isolation_level ( val, vm) ?;
1348
1348
}
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
+
1349
1359
let _ = unsafe { self . isolation_level . swap ( val) } ;
1350
1360
Ok ( ( ) )
1351
1361
}
@@ -1472,7 +1482,10 @@ mod _sqlite {
1472
1482
1473
1483
let db = zelf. connection . db_lock ( vm) ?;
1474
1484
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
+ {
1476
1489
db. begin_transaction (
1477
1490
zelf. connection
1478
1491
. isolation_level
@@ -1552,7 +1565,10 @@ mod _sqlite {
1552
1565
1553
1566
let db = zelf. connection . db_lock ( vm) ?;
1554
1567
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
+ {
1556
1572
db. begin_transaction (
1557
1573
zelf. connection
1558
1574
. isolation_level
You can’t perform that action at this time.
0 commit comments