From 8db5cead07e6339bfe7300d4a26f356bfed7356d Mon Sep 17 00:00:00 2001 From: Pere Diaz Bou Date: Wed, 3 Sep 2025 14:11:28 +0200 Subject: [PATCH] core/mvcc: only commit if there is a txn --- core/vdbe/mod.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index 39d526564..1c844e08a 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -559,9 +559,12 @@ impl Program { let mut mv_transactions = conn.mv_transactions.borrow_mut(); if matches!(program_state.commit_state, CommitState::Ready) { assert!( - mv_transactions.len() == 1, - "for now we only support one mv transaction in single connection" + mv_transactions.len() <= 1, + "for now we only support one mv transaction in single connection, {mv_transactions:?}", ); + if mv_transactions.is_empty() { + return Ok(IOResult::Done(())); + } let tx_id = mv_transactions.first().unwrap(); let state_machine = mv_store.commit_tx(*tx_id, pager.clone(), &conn).unwrap(); program_state.commit_state = CommitState::CommitingMvcc { state_machine }; @@ -575,7 +578,9 @@ impl Program { assert!(state_machine.is_finalized()); conn.mv_tx_id.set(None); conn.transaction_state.replace(TransactionState::None); + program_state.commit_state = CommitState::Ready; mv_transactions.clear(); + return Ok(IOResult::Done(())); } IOResult::IO(io) => { return Ok(IOResult::IO(io));