mirror of
https://github.com/tursodatabase/limbo.git
synced 2025-08-04 10:08:20 +00:00
core: Add multi-version store to Database
This commit is contained in:
parent
96175cccf7
commit
461be0dc87
2 changed files with 15 additions and 0 deletions
12
core/lib.rs
12
core/lib.rs
|
@ -83,7 +83,10 @@ enum TransactionState {
|
|||
None,
|
||||
}
|
||||
|
||||
pub(crate) type MvStore = crate::mvcc::MvStore<crate::mvcc::LocalClock>;
|
||||
|
||||
pub struct Database {
|
||||
mv_store: Option<Rc<MvStore>>,
|
||||
schema: Arc<RwLock<Schema>>,
|
||||
// TODO: make header work without lock
|
||||
header: Arc<Mutex<DatabaseHeader>>,
|
||||
|
@ -128,11 +131,20 @@ impl Database {
|
|||
let version = db_header.lock().unwrap().version_number;
|
||||
version.to_string()
|
||||
});
|
||||
let mv_store = if enable_mvcc {
|
||||
Some(Rc::new(MvStore::new(
|
||||
crate::mvcc::LocalClock::new(),
|
||||
crate::mvcc::persistent_storage::Storage::new_noop(),
|
||||
)))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let shared_page_cache = Arc::new(RwLock::new(DumbLruPageCache::new(10)));
|
||||
let page_size = db_header.lock().unwrap().page_size;
|
||||
let header = db_header;
|
||||
let schema = Arc::new(RwLock::new(Schema::new()));
|
||||
let db = Database {
|
||||
mv_store,
|
||||
schema: schema.clone(),
|
||||
header: header.clone(),
|
||||
shared_page_cache: shared_page_cache.clone(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue