core: Fix transaction cleanup in Connection::close()

This commit is contained in:
Pekka Enberg
2025-07-28 12:49:28 +03:00
parent 5b6a30c1df
commit 9b67eb0e77

View File

@@ -1114,6 +1114,26 @@ impl Connection {
return Ok(());
}
self.closed.set(true);
match self.transaction_state.get() {
TransactionState::Write { schema_did_change } => {
let _result = self.pager.borrow().end_tx(
true, // rollback = true for close
schema_did_change,
self,
self.wal_checkpoint_disabled.get(),
);
self.transaction_state.set(TransactionState::None);
}
TransactionState::Read => {
let _result = self.pager.borrow().end_read_tx();
self.transaction_state.set(TransactionState::None);
}
TransactionState::None => {
// No active transaction
}
}
self.pager
.borrow()
.checkpoint_shutdown(self.wal_checkpoint_disabled.get())