fix all open_file use cases for mvcc mode

This commit is contained in:
Pere Diaz Bou
2025-09-16 21:13:24 +02:00
parent 9b35c6efb6
commit e2824835dc
18 changed files with 268 additions and 64 deletions

View File

@@ -673,6 +673,7 @@ mod tests {
use std::sync::Arc;
use tempfile::NamedTempFile;
use turso::MvccMode;
use crate::{
database_tape::{
@@ -687,7 +688,9 @@ mod tests {
let db_path1 = temp_file1.path().to_str().unwrap();
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, false).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, false, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let mut gen = genawaiter::sync::Gen::new({
let db1 = db1.clone();
@@ -717,7 +720,9 @@ mod tests {
let db_path1 = temp_file1.path().to_str().unwrap();
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, false).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, false, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let mut gen = genawaiter::sync::Gen::new({
@@ -785,10 +790,14 @@ mod tests {
let db_path2 = temp_file2.path().to_str().unwrap();
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, false).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, false, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let db2 = turso_core::Database::open_file(io.clone(), db_path2, false, false).unwrap();
let db2 =
turso_core::Database::open_file(io.clone(), db_path2, false, false, MvccMode::Noop)
.unwrap();
let db2 = Arc::new(DatabaseTape::new(db2));
let mut gen = genawaiter::sync::Gen::new({
@@ -864,10 +873,14 @@ mod tests {
let db_path2 = temp_file2.path().to_str().unwrap();
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, false).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, false, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let db2 = turso_core::Database::open_file(io.clone(), db_path2, false, false).unwrap();
let db2 =
turso_core::Database::open_file(io.clone(), db_path2, false, false, MvccMode::Noop)
.unwrap();
let db2 = Arc::new(DatabaseTape::new(db2));
let mut gen = genawaiter::sync::Gen::new({
@@ -937,10 +950,14 @@ mod tests {
let db_path2 = temp_file2.path().to_str().unwrap();
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, true).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, true, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let db2 = turso_core::Database::open_file(io.clone(), db_path2, false, true).unwrap();
let db2 =
turso_core::Database::open_file(io.clone(), db_path2, false, true, MvccMode::Noop)
.unwrap();
let db2 = Arc::new(DatabaseTape::new(db2));
let mut gen = genawaiter::sync::Gen::new({
@@ -1002,13 +1019,19 @@ mod tests {
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, true).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, true, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let db2 = turso_core::Database::open_file(io.clone(), db_path2, false, true).unwrap();
let db2 =
turso_core::Database::open_file(io.clone(), db_path2, false, true, MvccMode::Noop)
.unwrap();
let db2 = Arc::new(DatabaseTape::new(db2));
let db3 = turso_core::Database::open_file(io.clone(), db_path3, false, true).unwrap();
let db3 =
turso_core::Database::open_file(io.clone(), db_path3, false, true, MvccMode::Noop)
.unwrap();
let db3 = Arc::new(DatabaseTape::new(db3));
let mut gen = genawaiter::sync::Gen::new({
@@ -1131,10 +1154,14 @@ mod tests {
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, true).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, true, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let db2 = turso_core::Database::open_file(io.clone(), db_path2, false, true).unwrap();
let db2 =
turso_core::Database::open_file(io.clone(), db_path2, false, true, MvccMode::Noop)
.unwrap();
let db2 = Arc::new(DatabaseTape::new(db2));
let mut gen = genawaiter::sync::Gen::new({
@@ -1215,10 +1242,14 @@ mod tests {
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, true).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, true, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let db2 = turso_core::Database::open_file(io.clone(), db_path2, false, true).unwrap();
let db2 =
turso_core::Database::open_file(io.clone(), db_path2, false, true, MvccMode::Noop)
.unwrap();
let db2 = Arc::new(DatabaseTape::new(db2));
let mut gen = genawaiter::sync::Gen::new({
@@ -1291,13 +1322,19 @@ mod tests {
let io: Arc<dyn turso_core::IO> = Arc::new(turso_core::PlatformIO::new().unwrap());
let db1 = turso_core::Database::open_file(io.clone(), db_path1, false, true).unwrap();
let db1 =
turso_core::Database::open_file(io.clone(), db_path1, false, true, MvccMode::Noop)
.unwrap();
let db1 = Arc::new(DatabaseTape::new(db1));
let db2 = turso_core::Database::open_file(io.clone(), db_path2, false, true).unwrap();
let db2 =
turso_core::Database::open_file(io.clone(), db_path2, false, true, MvccMode::Noop)
.unwrap();
let db2 = Arc::new(DatabaseTape::new(db2));
let db3 = turso_core::Database::open_file(io.clone(), db_path3, false, true).unwrap();
let db3 =
turso_core::Database::open_file(io.clone(), db_path3, false, true, MvccMode::Noop)
.unwrap();
let db3 = Arc::new(DatabaseTape::new(db3));
let mut gen = genawaiter::sync::Gen::new({

View File

@@ -23,7 +23,9 @@ pub trait IoOperations {
impl IoOperations for Arc<dyn turso_core::IO> {
fn open_tape(&self, path: &str, capture: bool) -> Result<DatabaseTape> {
let io = self.clone();
let clean = turso_core::Database::open_file(io, path, false, true).unwrap();
let clean =
turso_core::Database::open_file(io, path, false, true, turso_core::MvccMode::Noop)
.unwrap();
let opts = DatabaseTapeOpts {
cdc_table: None,
cdc_mode: Some(if capture { "full" } else { "off" }.to_string()),