From df6af6ed79525391bb3f9a55024a4883c7414bed Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Tue, 25 Mar 2025 11:14:11 +0200 Subject: [PATCH] core: Rename FileStorage to DatabaseFile --- bindings/wasm/lib.rs | 17 +++++++++-------- core/lib.rs | 18 +++++++++--------- core/storage/btree.rs | 14 +++++++------- core/storage/database.rs | 10 +++++----- core/storage/pager.rs | 18 +++++++++--------- core/storage/sqlite3_ondisk.rs | 16 ++++++++-------- 6 files changed, 47 insertions(+), 46 deletions(-) diff --git a/bindings/wasm/lib.rs b/bindings/wasm/lib.rs index c151e1345..7a9037fa7 100644 --- a/bindings/wasm/lib.rs +++ b/bindings/wasm/lib.rs @@ -21,8 +21,8 @@ impl Database { .open_file(path, limbo_core::OpenFlags::Create, false) .unwrap(); maybe_init_database_file(&file, &io).unwrap(); - let page_io = Arc::new(DatabaseStorage::new(file)); - let db_header = Pager::begin_open(page_io.clone()).unwrap(); + let db_file = Arc::new(DatabaseFile::new(file)); + let db_header = Pager::begin_open(db_file.clone()).unwrap(); // ensure db header is there io.run_once().unwrap(); @@ -32,7 +32,7 @@ impl Database { let wal_path = format!("{}-wal", path); let wal_shared = WalFileShared::open_shared(&io, wal_path.as_str(), page_size).unwrap(); - let db = limbo_core::Database::open(io, page_io, wal_shared, false).unwrap(); + let db = limbo_core::Database::open(io, db_file, wal_shared, false).unwrap(); let conn = db.connect().unwrap(); Database { db, conn } } @@ -315,19 +315,20 @@ extern "C" { fn toISOString(this: &Date) -> String; } -pub struct DatabaseStorage { +pub struct DatabaseFile { file: Arc, } -unsafe impl Send for DatabaseStorage {} -unsafe impl Sync for DatabaseStorage {} -impl DatabaseStorage { +unsafe impl Send for DatabaseFile {} +unsafe impl Sync for DatabaseFile {} + +impl DatabaseFile { pub fn new(file: Arc) -> Self { Self { file } } } -impl limbo_core::DatabaseStorage for DatabaseStorage { +impl limbo_core::DatabaseStorage for DatabaseFile { fn read_page(&self, page_idx: usize, c: limbo_core::Completion) -> Result<()> { let r = match c { limbo_core::Completion::Read(ref r) => r, diff --git a/core/lib.rs b/core/lib.rs index 03392f8ba..f6cb01358 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -47,7 +47,7 @@ use std::{ }; use storage::btree::btree_init_page; #[cfg(feature = "fs")] -use storage::database::FileStorage; +use storage::database::DatabaseFile; pub use storage::{ buffer_pool::BufferPool, database::DatabaseStorage, @@ -84,7 +84,7 @@ pub struct Database { schema: Arc>, // TODO: make header work without lock header: Arc>, - page_io: Arc, + db_file: Arc, io: Arc, page_size: u16, // Shared structures of a Database are the parts that are common to multiple threads that might @@ -103,23 +103,23 @@ impl Database { let file = io.open_file(path, OpenFlags::Create, true)?; maybe_init_database_file(&file, &io)?; - let page_io = Arc::new(FileStorage::new(file)); + let db_file = Arc::new(DatabaseFile::new(file)); let wal_path = format!("{}-wal", path); - let db_header = Pager::begin_open(page_io.clone())?; + let db_header = Pager::begin_open(db_file.clone())?; io.run_once()?; let page_size = db_header.lock().page_size; let wal_shared = WalFileShared::open_shared(&io, wal_path.as_str(), page_size)?; - Self::open(io, page_io, wal_shared, enable_mvcc) + Self::open(io, db_file, wal_shared, enable_mvcc) } #[allow(clippy::arc_with_non_send_sync)] pub fn open( io: Arc, - page_io: Arc, + db_file: Arc, shared_wal: Arc>, enable_mvcc: bool, ) -> Result> { - let db_header = Pager::begin_open(page_io.clone())?; + let db_header = Pager::begin_open(db_file.clone())?; io.run_once()?; DATABASE_VERSION.get_or_init(|| { let version = db_header.lock().version_number; @@ -143,7 +143,7 @@ impl Database { header: header.clone(), shared_page_cache: shared_page_cache.clone(), shared_wal: shared_wal.clone(), - page_io, + db_file, io: io.clone(), page_size, }; @@ -172,7 +172,7 @@ impl Database { ))); let pager = Rc::new(Pager::finish_open( self.header.clone(), - self.page_io.clone(), + self.db_file.clone(), wal, self.io.clone(), self.shared_page_cache.clone(), diff --git a/core/storage/btree.rs b/core/storage/btree.rs index 5bbd94c89..58724430e 100644 --- a/core/storage/btree.rs +++ b/core/storage/btree.rs @@ -3159,7 +3159,7 @@ mod tests { use super::*; use crate::fast_lock::SpinLock; use crate::io::{Buffer, Completion, MemoryIO, OpenFlags, IO}; - use crate::storage::database::FileStorage; + use crate::storage::database::DatabaseFile; use crate::storage::page_cache::DumbLruPageCache; use crate::storage::sqlite3_ondisk; use crate::storage::sqlite3_ondisk::DatabaseHeader; @@ -3443,7 +3443,7 @@ mod tests { #[allow(clippy::arc_with_non_send_sync)] let io: Arc = Arc::new(MemoryIO::new()); let io_file = io.open_file("test.db", OpenFlags::Create, false).unwrap(); - let page_io = Arc::new(FileStorage::new(io_file)); + let db_file = Arc::new(DatabaseFile::new(io_file)); let buffer_pool = Rc::new(BufferPool::new(db_header.page_size as usize)); let wal_shared = WalFileShared::open_shared(&io, "test.wal", db_header.page_size).unwrap(); @@ -3453,7 +3453,7 @@ mod tests { let page_cache = Arc::new(parking_lot::RwLock::new(DumbLruPageCache::new(10))); let pager = { let db_header = Arc::new(SpinLock::new(db_header.clone())); - Pager::finish_open(db_header, page_io, wal, io, page_cache, buffer_pool).unwrap() + Pager::finish_open(db_header, db_file, wal, io, page_cache, buffer_pool).unwrap() }; let pager = Rc::new(pager); let page1 = pager.allocate_page().unwrap(); @@ -3700,7 +3700,7 @@ mod tests { } let io: Arc = Arc::new(MemoryIO::new()); - let page_io = Arc::new(FileStorage::new( + let db_file = Arc::new(DatabaseFile::new( io.open_file("test.db", OpenFlags::Create, false).unwrap(), )); @@ -3714,7 +3714,7 @@ mod tests { let write_complete = Box::new(|_| {}); let c = Completion::Write(WriteCompletion::new(write_complete)); - page_io.write_page(1, buf.clone(), c).unwrap(); + db_file.write_page(1, buf.clone(), c).unwrap(); let wal_shared = WalFileShared::open_shared(&io, "test.wal", page_size).unwrap(); let wal = Rc::new(RefCell::new(WalFile::new( @@ -3727,7 +3727,7 @@ mod tests { let pager = Rc::new( Pager::finish_open( db_header.clone(), - page_io, + db_file, wal, io, Arc::new(parking_lot::RwLock::new(DumbLruPageCache::new(10))), @@ -3765,7 +3765,7 @@ mod tests { let write_complete = Box::new(|_| {}); let c = Completion::Write(WriteCompletion::new(write_complete)); pager - .page_io + .db_file .write_page(current_page as usize, buf.clone(), c)?; pager.io.run_once()?; diff --git a/core/storage/database.rs b/core/storage/database.rs index c09090e25..df4216ef3 100644 --- a/core/storage/database.rs +++ b/core/storage/database.rs @@ -20,17 +20,17 @@ pub trait DatabaseStorage: Send + Sync { } #[cfg(feature = "fs")] -pub struct FileStorage { +pub struct DatabaseFile { file: Arc, } #[cfg(feature = "fs")] -unsafe impl Send for FileStorage {} +unsafe impl Send for DatabaseFile {} #[cfg(feature = "fs")] -unsafe impl Sync for FileStorage {} +unsafe impl Sync for DatabaseFile {} #[cfg(feature = "fs")] -impl DatabaseStorage for FileStorage { +impl DatabaseStorage for DatabaseFile { fn read_page(&self, page_idx: usize, c: Completion) -> Result<()> { let r = c.as_read(); let size = r.buf().len(); @@ -64,7 +64,7 @@ impl DatabaseStorage for FileStorage { } #[cfg(feature = "fs")] -impl FileStorage { +impl DatabaseFile { pub fn new(file: Arc) -> Self { Self { file } } diff --git a/core/storage/pager.rs b/core/storage/pager.rs index ff66bea6e..01a814c31 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -153,7 +153,7 @@ struct FlushInfo { /// transaction management. pub struct Pager { /// Source of the database pages. - pub page_io: Arc, + pub db_file: Arc, /// The write-ahead log (WAL) for the database. wal: Rc>, /// A page cache for the database. @@ -173,21 +173,21 @@ pub struct Pager { impl Pager { /// Begins opening a database by reading the database header. - pub fn begin_open(page_io: Arc) -> Result>> { - sqlite3_ondisk::begin_read_database_header(page_io) + pub fn begin_open(db_file: Arc) -> Result>> { + sqlite3_ondisk::begin_read_database_header(db_file) } /// Completes opening a database by initializing the Pager with the database header. pub fn finish_open( db_header_ref: Arc>, - page_io: Arc, + db_file: Arc, wal: Rc>, io: Arc, page_cache: Arc>, buffer_pool: Rc, ) -> Result { Ok(Self { - page_io, + db_file, wal, page_cache, io, @@ -285,7 +285,7 @@ impl Pager { return Ok(page); } sqlite3_ondisk::begin_read_page( - self.page_io.clone(), + self.db_file.clone(), self.buffer_pool.clone(), page.clone(), page_idx, @@ -316,7 +316,7 @@ impl Pager { return Ok(()); } sqlite3_ondisk::begin_read_page( - self.page_io.clone(), + self.db_file.clone(), self.buffer_pool.clone(), page.clone(), id, @@ -407,7 +407,7 @@ impl Pager { }; } FlushState::SyncDbFile => { - sqlite3_ondisk::begin_sync(self.page_io.clone(), self.syncing.clone())?; + sqlite3_ondisk::begin_sync(self.db_file.clone(), self.syncing.clone())?; self.flush_info.borrow_mut().state = FlushState::WaitSyncDbFile; } FlushState::WaitSyncDbFile => { @@ -444,7 +444,7 @@ impl Pager { }; } CheckpointState::SyncDbFile => { - sqlite3_ondisk::begin_sync(self.page_io.clone(), self.syncing.clone())?; + sqlite3_ondisk::begin_sync(self.db_file.clone(), self.syncing.clone())?; self.checkpoint_state .replace(CheckpointState::WaitSyncDbFile); } diff --git a/core/storage/sqlite3_ondisk.rs b/core/storage/sqlite3_ondisk.rs index 820c39e55..f7406008a 100644 --- a/core/storage/sqlite3_ondisk.rs +++ b/core/storage/sqlite3_ondisk.rs @@ -244,7 +244,7 @@ impl Default for DatabaseHeader { } pub fn begin_read_database_header( - page_io: Arc, + db_file: Arc, ) -> Result>> { let drop_fn = Rc::new(|_buf| {}); #[allow(clippy::arc_with_non_send_sync)] @@ -256,7 +256,7 @@ pub fn begin_read_database_header( finish_read_database_header(buf, header).unwrap(); }); let c = Completion::Read(ReadCompletion::new(buf, complete)); - page_io.read_page(1, c)?; + db_file.read_page(1, c)?; Ok(result) } @@ -297,7 +297,7 @@ fn finish_read_database_header( } pub fn begin_write_database_header(header: &DatabaseHeader, pager: &Pager) -> Result<()> { - let page_source = pager.page_io.clone(); + let page_source = pager.db_file.clone(); let header = Rc::new(header.clone()); let drop_fn = Rc::new(|_buf| {}); @@ -700,7 +700,7 @@ impl PageContent { } pub fn begin_read_page( - page_io: Arc, + db_file: Arc, buffer_pool: Rc, page: PageRef, page_idx: usize, @@ -720,7 +720,7 @@ pub fn begin_read_page( } }); let c = Completion::Read(ReadCompletion::new(buf, complete)); - page_io.read_page(page_idx, c)?; + db_file.read_page(page_idx, c)?; Ok(()) } @@ -755,7 +755,7 @@ pub fn begin_write_btree_page( write_counter: Rc>, ) -> Result<()> { trace!("begin_write_btree_page(page={})", page.get().id); - let page_source = &pager.page_io; + let page_source = &pager.db_file; let page_finish = page.clone(); let page_id = page.get().id; @@ -786,7 +786,7 @@ pub fn begin_write_btree_page( Ok(()) } -pub fn begin_sync(page_io: Arc, syncing: Rc>) -> Result<()> { +pub fn begin_sync(db_file: Arc, syncing: Rc>) -> Result<()> { assert!(!*syncing.borrow()); *syncing.borrow_mut() = true; let completion = Completion::Sync(SyncCompletion { @@ -794,7 +794,7 @@ pub fn begin_sync(page_io: Arc, syncing: Rc>) *syncing.borrow_mut() = false; }), }); - page_io.sync(completion)?; + db_file.sync(completion)?; Ok(()) }