diff --git a/bindings/dart/rust/src/api/connect.rs b/bindings/dart/rust/src/api/connect.rs index d29e2a867..b5aa352c9 100644 --- a/bindings/dart/rust/src/api/connect.rs +++ b/bindings/dart/rust/src/api/connect.rs @@ -23,10 +23,22 @@ pub struct ConnectArgs { pub async fn connect(args: ConnectArgs) -> RustConnection { let database = if args.url == ":memory:" { let io: Arc = Arc::new(turso_core::MemoryIO::new()); - turso_core::Database::open_file(io, args.url.as_str(), false, true) + turso_core::Database::open_file( + io, + args.url.as_str(), + false, + true, + turso_core::MvccMode::Noop, + ) } else { let io: Arc = Arc::new(turso_core::PlatformIO::new().unwrap()); - turso_core::Database::open_file(io, args.url.as_str(), false, true) + turso_core::Database::open_file( + io, + args.url.as_str(), + false, + true, + turso_core::MvccMode::Noop, + ) } .unwrap(); let connection = database.connect().unwrap(); diff --git a/bindings/java/rs_src/turso_db.rs b/bindings/java/rs_src/turso_db.rs index 1c533474c..1c1927305 100644 --- a/bindings/java/rs_src/turso_db.rs +++ b/bindings/java/rs_src/turso_db.rs @@ -68,7 +68,7 @@ pub extern "system" fn Java_tech_turso_core_TursoDB_openUtf8<'local>( } }; - let db = match Database::open_file(io.clone(), &path, false, true) { + let db = match Database::open_file(io.clone(), &path, false, true, turso_core::MvccMode::Noop) { Ok(db) => db, Err(e) => { set_err_msg_and_throw_exception(&mut env, obj, TURSO_ETC, e.to_string()); diff --git a/core/benches/benchmark.rs b/core/benches/benchmark.rs index 51b844aad..f48f761f8 100644 --- a/core/benches/benchmark.rs +++ b/core/benches/benchmark.rs @@ -2,7 +2,7 @@ use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criteri use pprof::criterion::{Output, PProfProfiler}; use regex::Regex; use std::{sync::Arc, time::Instant}; -use turso_core::{Database, LimboError, PlatformIO, StepResult}; +use turso_core::{Database, LimboError, MvccMode, PlatformIO, StepResult}; #[cfg(not(target_family = "wasm"))] #[global_allocator] @@ -24,7 +24,14 @@ fn bench_open(criterion: &mut Criterion) { if !std::fs::exists("../testing/schema_5k.db").unwrap() { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/schema_5k.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/schema_5k.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let conn = db.connect().unwrap(); for i in 0..5000 { @@ -40,8 +47,14 @@ fn bench_open(criterion: &mut Criterion) { b.iter(|| { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = - Database::open_file(io.clone(), "../testing/schema_5k.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/schema_5k.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let conn = db.connect().unwrap(); conn.execute("SELECT * FROM table_0").unwrap(); }); @@ -67,7 +80,14 @@ fn bench_alter(criterion: &mut Criterion) { if !std::fs::exists("../testing/schema_5k.db").unwrap() { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/schema_5k.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/schema_5k.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let conn = db.connect().unwrap(); for i in 0..5000 { @@ -82,7 +102,14 @@ fn bench_alter(criterion: &mut Criterion) { group.bench_function(BenchmarkId::new("limbo_rename_table", ""), |b| { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/schema_5k.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/schema_5k.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let conn = db.connect().unwrap(); b.iter_custom(|iters| { (0..iters) @@ -127,7 +154,14 @@ fn bench_alter(criterion: &mut Criterion) { group.bench_function(BenchmarkId::new("limbo_rename_column", ""), |b| { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/schema_5k.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/schema_5k.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let conn = db.connect().unwrap(); b.iter_custom(|iters| { (0..iters) @@ -173,7 +207,14 @@ fn bench_alter(criterion: &mut Criterion) { group.bench_function(BenchmarkId::new("limbo_add_column", ""), |b| { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/schema_5k.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/schema_5k.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let conn = db.connect().unwrap(); b.iter_custom(|iters| { (0..iters) @@ -218,7 +259,14 @@ fn bench_alter(criterion: &mut Criterion) { group.bench_function(BenchmarkId::new("limbo_drop_column", ""), |b| { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/schema_5k.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/schema_5k.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let conn = db.connect().unwrap(); b.iter_custom(|iters| { (0..iters) @@ -266,7 +314,14 @@ fn bench_prepare_query(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/testing.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/testing.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); let queries = [ @@ -345,7 +400,14 @@ fn bench_execute_select_rows(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/testing.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/testing.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); let mut group = criterion.benchmark_group("Execute `SELECT * FROM users LIMIT ?`"); @@ -413,7 +475,14 @@ fn bench_execute_select_1(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/testing.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/testing.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); let mut group = criterion.benchmark_group("Execute `SELECT 1`"); @@ -465,7 +534,14 @@ fn bench_execute_select_count(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/testing.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/testing.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); let mut group = criterion.benchmark_group("Execute `SELECT count() FROM users`"); @@ -523,7 +599,14 @@ fn bench_insert_rows(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), db_path.to_str().unwrap(), false, false).unwrap(); + let db = Database::open_file( + io.clone(), + db_path.to_str().unwrap(), + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); let mut stmt = limbo_conn @@ -647,7 +730,14 @@ fn bench_limbo( let io = Arc::new(PlatformIO::new().unwrap()); let temp_dir = tempfile::tempdir().unwrap(); let path = temp_dir.path().join("bench.db"); - let db = Database::open_file(io.clone(), path.to_str().unwrap(), mvcc, false).unwrap(); + let db = Database::open_file( + io.clone(), + path.to_str().unwrap(), + mvcc, + false, + MvccMode::Noop, + ) + .unwrap(); let mut connecitons = Vec::new(); { let conn = db.connect().unwrap(); @@ -730,7 +820,14 @@ fn bench_limbo_mvcc( let io = Arc::new(PlatformIO::new().unwrap()); let temp_dir = tempfile::tempdir().unwrap(); let path = temp_dir.path().join("bench.db"); - let db = Database::open_file(io.clone(), path.to_str().unwrap(), mvcc, false).unwrap(); + let db = Database::open_file( + io.clone(), + path.to_str().unwrap(), + mvcc, + false, + MvccMode::Noop, + ) + .unwrap(); let mut connecitons = Vec::new(); let conn0 = db.connect().unwrap(); conn0.execute("CREATE TABLE test (x)").unwrap(); diff --git a/core/benches/json_benchmark.rs b/core/benches/json_benchmark.rs index a6f63ceb4..4b9cb3ce8 100644 --- a/core/benches/json_benchmark.rs +++ b/core/benches/json_benchmark.rs @@ -4,7 +4,7 @@ use pprof::{ flamegraph::Options, }; use std::sync::Arc; -use turso_core::{Database, PlatformIO}; +use turso_core::{Database, MvccMode, PlatformIO}; // Title: JSONB Function Benchmarking @@ -22,7 +22,14 @@ fn bench(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/testing.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/testing.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); // Benchmark JSONB with different payload sizes @@ -490,7 +497,14 @@ fn bench_sequential_jsonb(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/testing.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/testing.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); // Select a subset of JSON payloads to use in the sequential test @@ -646,7 +660,14 @@ fn bench_json_patch(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), "../testing/testing.db", false, false).unwrap(); + let db = Database::open_file( + io.clone(), + "../testing/testing.db", + false, + false, + MvccMode::Noop, + ) + .unwrap(); let limbo_conn = db.connect().unwrap(); let json_patch_cases = [ diff --git a/core/benches/mvcc_benchmark.rs b/core/benches/mvcc_benchmark.rs index de8d4bdff..8ba35e67e 100644 --- a/core/benches/mvcc_benchmark.rs +++ b/core/benches/mvcc_benchmark.rs @@ -7,7 +7,7 @@ use turso_core::mvcc::clock::LocalClock; use turso_core::mvcc::database::{MvStore, Row, RowID}; use turso_core::state_machine::{StateTransition, TransitionResult}; use turso_core::types::{ImmutableRecord, Text}; -use turso_core::{Connection, Database, MemoryIO, Value}; +use turso_core::{Connection, Database, MemoryIO, MvccMode, Value}; struct BenchDb { _db: Arc, @@ -17,7 +17,7 @@ struct BenchDb { fn bench_db() -> BenchDb { let io = Arc::new(MemoryIO::new()); - let db = Database::open_file(io.clone(), ":memory:", true, true).unwrap(); + let db = Database::open_file(io.clone(), ":memory:", true, true, MvccMode::Noop).unwrap(); let conn = db.connect().unwrap(); let mvcc_store = db.get_mv_store().unwrap().clone(); BenchDb { diff --git a/core/benches/tpc_h_benchmark.rs b/core/benches/tpc_h_benchmark.rs index 39d59f50f..c3c91127c 100644 --- a/core/benches/tpc_h_benchmark.rs +++ b/core/benches/tpc_h_benchmark.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, SamplingMode}; use pprof::criterion::{Output, PProfProfiler}; -use turso_core::{Database, PlatformIO}; +use turso_core::{Database, MvccMode, PlatformIO}; const TPC_H_PATH: &str = "../perf/tpc-h/TPC-H.db"; @@ -30,7 +30,7 @@ fn bench_tpc_h_queries(criterion: &mut Criterion) { #[allow(clippy::arc_with_non_send_sync)] let io = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), TPC_H_PATH, false, true).unwrap(); + let db = Database::open_file(io.clone(), TPC_H_PATH, false, true, MvccMode::Noop).unwrap(); let limbo_conn = db.connect().unwrap(); let queries = [ diff --git a/core/incremental/compiler.rs b/core/incremental/compiler.rs index fdb8e210e..ad0082321 100644 --- a/core/incremental/compiler.rs +++ b/core/incremental/compiler.rs @@ -1318,7 +1318,8 @@ mod tests { use crate::translate::logical::LogicalPlanBuilder; use crate::translate::logical::LogicalSchema; use crate::util::IOExt; - use crate::{Database, MemoryIO, Pager, IO}; + use crate::{Database, MemoryIO, MvccMode, Pager, IO}; + use std::rc::Rc; use std::sync::Arc; use turso_parser::ast; use turso_parser::parser::Parser; @@ -1416,7 +1417,7 @@ mod tests { fn setup_btree_for_circuit() -> (Arc, usize, usize, usize) { let io: Arc = Arc::new(MemoryIO::new()); - let db = Database::open_file(io.clone(), ":memory:", false, false).unwrap(); + let db = Database::open_file(io.clone(), ":memory:", false, false, MvccMode::Noop).unwrap(); let conn = db.connect().unwrap(); let pager = conn.pager.borrow().clone(); diff --git a/core/incremental/cursor.rs b/core/incremental/cursor.rs index 9bf39f53d..fcbab1b9c 100644 --- a/core/incremental/cursor.rs +++ b/core/incremental/cursor.rs @@ -313,6 +313,7 @@ mod tests { OpenFlags::default(), crate::DatabaseOpts { enable_mvcc: false, + mvcc_mode: crate::MvccMode::Noop, enable_indexes: false, enable_views: true, enable_strict: false, diff --git a/core/incremental/operator.rs b/core/incremental/operator.rs index e61e36983..fcd10b3e8 100644 --- a/core/incremental/operator.rs +++ b/core/incremental/operator.rs @@ -2240,14 +2240,14 @@ mod tests { use crate::storage::pager::CreateBTreeFlags; use crate::types::Text; use crate::util::IOExt; - use crate::Value; use crate::{Database, MemoryIO, IO}; + use crate::{MvccMode, Value}; use std::sync::{Arc, Mutex}; /// Create a test pager for operator tests with both table and index fn create_test_pager() -> (std::sync::Arc, usize, usize) { let io: Arc = Arc::new(MemoryIO::new()); - let db = Database::open_file(io.clone(), ":memory:", false, false).unwrap(); + let db = Database::open_file(io.clone(), ":memory:", false, false, MvccMode::Noop).unwrap(); let conn = db.connect().unwrap(); let pager = conn.pager.borrow().clone(); diff --git a/core/mvcc/database/tests.rs b/core/mvcc/database/tests.rs index 2a7a2e5cc..485dde1f1 100644 --- a/core/mvcc/database/tests.rs +++ b/core/mvcc/database/tests.rs @@ -19,7 +19,7 @@ pub(crate) struct MvccTestDb { impl MvccTestDb { pub fn new() -> Self { let io = Arc::new(MemoryIO::new()); - let db = Database::open_file(io.clone(), ":memory:", true, true).unwrap(); + let db = Database::open_file(io.clone(), ":memory:", true, true, MvccMode::Noop).unwrap(); let conn = db.connect().unwrap(); let mvcc_store = db.mv_store.as_ref().unwrap().clone(); Self { @@ -33,7 +33,7 @@ impl MvccTestDb { impl MvccTestDbNoConn { pub fn new() -> Self { let io = Arc::new(MemoryIO::new()); - let db = Database::open_file(io.clone(), ":memory:", true, true).unwrap(); + let db = Database::open_file(io.clone(), ":memory:", true, true, MvccMode::Noop).unwrap(); Self { db: Some(db), path: None, @@ -50,8 +50,14 @@ impl MvccTestDbNoConn { std::fs::create_dir_all(path.parent().unwrap()).unwrap(); let io = Arc::new(PlatformIO::new().unwrap()); println!("path: {}", path.as_os_str().to_str().unwrap()); - let db = Database::open_file(io.clone(), path.as_os_str().to_str().unwrap(), true, true) - .unwrap(); + let db = Database::open_file( + io.clone(), + path.as_os_str().to_str().unwrap(), + true, + true, + MvccMode::Noop, + ) + .unwrap(); Self { db: Some(db), path: Some(path.to_str().unwrap().to_string()), @@ -63,7 +69,7 @@ impl MvccTestDbNoConn { pub fn restart(&mut self) { let io = Arc::new(PlatformIO::new().unwrap()); let path = self.path.as_ref().unwrap(); - let db = Database::open_file(io.clone(), path, true, true).unwrap(); + let db = Database::open_file(io.clone(), path, true, true, MvccMode::Noop).unwrap(); self.db.replace(db); } @@ -727,10 +733,10 @@ fn test_future_row() { use crate::mvcc::cursor::MvccLazyCursor; use crate::mvcc::database::{MvStore, Row, RowID}; use crate::types::Text; -use crate::RefValue; use crate::Value; use crate::{Database, StepResult}; use crate::{MemoryIO, Statement}; +use crate::{MvccMode, RefValue}; // Simple atomic clock implementation for testing diff --git a/core/storage/btree.rs b/core/storage/btree.rs index f463cd36e..dcb46ed1b 100644 --- a/core/storage/btree.rs +++ b/core/storage/btree.rs @@ -7810,7 +7810,8 @@ mod tests { }, types::Text, vdbe::Register, - BufferPool, Completion, Connection, IOContext, StepResult, WalFile, WalFileShared, + BufferPool, Completion, Connection, IOContext, MvccMode, StepResult, WalFile, + WalFileShared, }; use std::{ cell::RefCell, @@ -7856,7 +7857,14 @@ mod tests { .unwrap(); } let io: Arc = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), path.to_str().unwrap(), false, false).unwrap(); + let db = Database::open_file( + io.clone(), + path.to_str().unwrap(), + false, + false, + MvccMode::Noop, + ) + .unwrap(); db } @@ -8158,7 +8166,7 @@ mod tests { fn empty_btree() -> (Arc, usize, Arc, Arc) { #[allow(clippy::arc_with_non_send_sync)] let io: Arc = Arc::new(MemoryIO::new()); - let db = Database::open_file(io.clone(), ":memory:", false, false).unwrap(); + let db = Database::open_file(io.clone(), ":memory:", false, false, MvccMode::Noop).unwrap(); let conn = db.connect().unwrap(); let pager = conn.pager.borrow().clone(); @@ -8173,7 +8181,7 @@ mod tests { fn btree_with_virtual_page_1() -> Result<()> { #[allow(clippy::arc_with_non_send_sync)] let io: Arc = Arc::new(MemoryIO::new()); - let db = Database::open_file(io.clone(), ":memory:", false, false).unwrap(); + let db = Database::open_file(io.clone(), ":memory:", false, false, MvccMode::Noop).unwrap(); let conn = db.connect().unwrap(); let pager = conn.pager.borrow().clone(); diff --git a/core/storage/wal.rs b/core/storage/wal.rs index e4abf9785..60d6ec12e 100644 --- a/core/storage/wal.rs +++ b/core/storage/wal.rs @@ -2427,7 +2427,14 @@ pub mod test { .unwrap(); } let io: Arc = Arc::new(PlatformIO::new().unwrap()); - let db = Database::open_file(io.clone(), path.to_str().unwrap(), false, false).unwrap(); + let db = Database::open_file( + io.clone(), + path.to_str().unwrap(), + false, + false, + crate::MvccMode::Noop, + ) + .unwrap(); // db + tmp directory (db, dbpath) } diff --git a/simulator/generation/plan.rs b/simulator/generation/plan.rs index 2189c21e2..da70a8c21 100644 --- a/simulator/generation/plan.rs +++ b/simulator/generation/plan.rs @@ -811,6 +811,7 @@ fn reopen_database(env: &mut SimulatorEnv) { env.get_db_path().to_str().expect("path should be 'to_str'"), false, true, + turso_core::MvccMode::Noop, ) { Ok(db) => db, Err(e) => { diff --git a/simulator/runner/env.rs b/simulator/runner/env.rs index c5423f97c..f1e631df2 100644 --- a/simulator/runner/env.rs +++ b/simulator/runner/env.rs @@ -9,7 +9,7 @@ use garde::Validate; use rand::{Rng, SeedableRng}; use rand_chacha::ChaCha8Rng; use sql_generation::model::table::Table; -use turso_core::Database; +use turso_core::{Database, MvccMode}; use crate::profiles::Profile; use crate::runner::SimIO; @@ -141,6 +141,7 @@ impl SimulatorEnv { db_path.to_str().unwrap(), self.profile.experimental_mvcc, self.profile.query.gen_opts.indexes, + MvccMode::Noop, ) { Ok(db) => db, Err(e) => { @@ -271,6 +272,7 @@ impl SimulatorEnv { db_path.to_str().unwrap(), profile.experimental_mvcc, profile.query.gen_opts.indexes, + MvccMode::Noop, ) { Ok(db) => db, Err(e) => { diff --git a/sqlite3/src/lib.rs b/sqlite3/src/lib.rs index 037e5015b..e17a09d56 100644 --- a/sqlite3/src/lib.rs +++ b/sqlite3/src/lib.rs @@ -151,7 +151,13 @@ pub unsafe extern "C" fn sqlite3_open( Err(_) => return SQLITE_CANTOPEN, }, }; - match turso_core::Database::open_file(io.clone(), filename_str, false, false) { + match turso_core::Database::open_file( + io.clone(), + filename_str, + false, + false, + turso_core::MvccMode::Noop, + ) { Ok(db) => { let conn = db.connect().unwrap(); let filename = match filename_str { diff --git a/sync/engine/src/database_tape.rs b/sync/engine/src/database_tape.rs index b98cd0847..fd420836f 100644 --- a/sync/engine/src/database_tape.rs +++ b/sync/engine/src/database_tape.rs @@ -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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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({ diff --git a/sync/engine/src/io_operations.rs b/sync/engine/src/io_operations.rs index 978e5ae34..7ddcad9f6 100644 --- a/sync/engine/src/io_operations.rs +++ b/sync/engine/src/io_operations.rs @@ -23,7 +23,9 @@ pub trait IoOperations { impl IoOperations for Arc { fn open_tape(&self, path: &str, capture: bool) -> Result { 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()), diff --git a/tests/integration/common.rs b/tests/integration/common.rs index 2a687ade2..8ac71c859 100644 --- a/tests/integration/common.rs +++ b/tests/integration/common.rs @@ -5,6 +5,7 @@ use std::path::{Path, PathBuf}; use std::sync::Arc; use tempfile::TempDir; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter}; +use turso::MvccMode; use turso_core::{Connection, Database, Row, StepResult, IO}; #[allow(dead_code)] @@ -122,6 +123,7 @@ impl TempDatabase { self.path.to_str().unwrap(), false, enable_indexes, + MvccMode::Noop, ) .unwrap() } @@ -340,6 +342,7 @@ pub fn run_query_core( mod tests { use std::{sync::Arc, vec}; use tempfile::{NamedTempFile, TempDir}; + use turso::MvccMode; use turso_core::{Database, StepResult, IO}; use crate::common::do_flush; @@ -635,7 +638,7 @@ mod tests { // Open database #[allow(clippy::arc_with_non_send_sync)] let io: Arc = Arc::new(turso_core::PlatformIO::new().unwrap()); - let db = Database::open_file(io, &db_path, false, false)?; + let db = Database::open_file(io, &db_path, false, false, MvccMode::Noop)?; const NUM_CONNECTIONS: usize = 5; let mut connections = Vec::new();