diff --git a/src/lib.rs b/src/lib.rs index aa52b4b..367258d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -993,6 +993,7 @@ mod test { #[test] fn test_concurrent_transactions_busy_commit() { + use std::time::Duration; let tmp = TempDir::new("locked").unwrap(); let path = tmp.path().join("transactions.db3"); @@ -1004,8 +1005,8 @@ mod test { let mut db1 = Connection::open(&path).unwrap(); let mut db2 = Connection::open(&path).unwrap(); - db1.execute_batch("PRAGMA busy_timeout = 0;").unwrap(); - db2.execute_batch("PRAGMA busy_timeout = 0;").unwrap(); + db1.busy_timeout(Duration::from_millis(0)).unwrap(); + db2.busy_timeout(Duration::from_millis(0)).unwrap(); { let tx1 = db1.transaction().unwrap(); diff --git a/src/transaction.rs b/src/transaction.rs index 104bac0..fb74fd4 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -61,7 +61,6 @@ pub type SqliteTransaction<'conn> = Transaction<'conn>; pub struct Transaction<'conn> { conn: &'conn Connection, drop_behavior: DropBehavior, - committed: bool, } /// Represents a savepoint on a database connection. @@ -111,7 +110,6 @@ impl<'conn> Transaction<'conn> { Transaction { conn, drop_behavior: DropBehavior::Rollback, - committed: false, } }) } @@ -168,7 +166,6 @@ impl<'conn> Transaction<'conn> { fn commit_(&mut self) -> Result<()> { self.conn.execute_batch("COMMIT")?; - self.committed = true; Ok(()) } @@ -179,7 +176,6 @@ impl<'conn> Transaction<'conn> { fn rollback_(&mut self) -> Result<()> { self.conn.execute_batch("ROLLBACK")?; - self.committed = true; Ok(()) } @@ -193,7 +189,7 @@ impl<'conn> Transaction<'conn> { } fn finish_(&mut self) -> Result<()> { - if self.committed { + if self.conn.is_autocommit() { return Ok(()); } match self.drop_behavior() {