From 957949a49d14efbaa1bd890b526265bc5f383ee5 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Sat, 8 Apr 2023 18:03:41 +0300 Subject: [PATCH] Fix delete() on non-existent ID --- core/mvcc/database/src/lib.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/core/mvcc/database/src/lib.rs b/core/mvcc/database/src/lib.rs index bc29f0cc5..88584c1b3 100644 --- a/core/mvcc/database/src/lib.rs +++ b/core/mvcc/database/src/lib.rs @@ -238,17 +238,19 @@ impl Database { let inner = self.inner.lock().unwrap(); let mut rows = inner.rows.borrow_mut(); let mut txs = inner.txs.borrow_mut(); - let row_versions = rows.get_mut(&id).unwrap(); - match row_versions.last_mut() { - Some(v) => { - let tx = txs.get(&tx).unwrap(); - if is_version_visible(&txs, tx, v) { - v.end = Some(TxTimestampOrID::TxID(tx.tx_id)); - } else { - return false; + match rows.get_mut(&id) { + Some(row_versions) => match row_versions.last_mut() { + Some(v) => { + let tx = txs.get(&tx).unwrap(); + if is_version_visible(&txs, tx, v) { + v.end = Some(TxTimestampOrID::TxID(tx.tx_id)); + } else { + return false; + } } - } - None => unreachable!("no versions for row {}", id), + None => unreachable!("no versions for row {}", id), + }, + None => return false, } let tx = txs.get_mut(&tx).unwrap(); tx.insert_to_write_set(id);