add test that demonstrates issue 3083 can be closed

This commit is contained in:
Jussi Saurio
2025-09-15 11:30:56 +03:00
parent 59f18e2dc8
commit d643bb2092

View File

@@ -355,6 +355,47 @@ fn test_mvcc_concurrent_insert_basic() {
);
}
#[test]
fn test_mvcc_update_same_row_twice() {
let tmp_db = TempDatabase::new_with_opts(
"test_mvcc_update_same_row_twice.db",
turso_core::DatabaseOpts::new().with_mvcc(true),
);
let conn1 = tmp_db.connect_limbo();
conn1.execute("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT)")
.unwrap();
conn1.execute("INSERT INTO test (id, value) VALUES (1, 'first')")
.unwrap();
conn1.execute("UPDATE test SET value = 'second' WHERE id = 1")
.unwrap();
let stmt = conn1
.query("SELECT value FROM test WHERE id = 1")
.unwrap()
.unwrap();
let row = helper_read_single_row(stmt);
let Value::Text(value) = &row[0] else {
panic!("expected text value");
};
assert_eq!(value.as_str(), "second");
conn1.execute("UPDATE test SET value = 'third' WHERE id = 1")
.unwrap();
let stmt = conn1
.query("SELECT value FROM test WHERE id = 1")
.unwrap()
.unwrap();
let row = helper_read_single_row(stmt);
let Value::Text(value) = &row[0] else {
panic!("expected text value");
};
assert_eq!(value.as_str(), "third");
}
fn helper_read_all_rows(mut stmt: turso_core::Statement) -> Vec<Vec<Value>> {
let mut ret = Vec::new();
loop {