mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-08 17:54:22 +01:00
move wal creation
This commit is contained in:
@@ -77,7 +77,7 @@ impl limbo_core::File for File {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn size(&self) -> Result<()> {
|
||||
fn size(&self) -> Result<u64> {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,19 +72,21 @@ impl File for GenericFile {
|
||||
&self,
|
||||
pos: usize,
|
||||
buffer: Rc<RefCell<crate::Buffer>>,
|
||||
_c: Rc<Completion>,
|
||||
c: Rc<Completion>,
|
||||
) -> Result<()> {
|
||||
let mut file = self.file.borrow_mut();
|
||||
file.seek(std::io::SeekFrom::Start(pos as u64))?;
|
||||
let buf = buffer.borrow();
|
||||
let buf = buf.as_slice();
|
||||
file.write_all(buf)?;
|
||||
c.complete(buf.len() as i32);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn sync(&self, _c: Rc<Completion>) -> Result<()> {
|
||||
fn sync(&self, c: Rc<Completion>) -> Result<()> {
|
||||
let mut file = self.file.borrow_mut();
|
||||
file.sync_all().map_err(|err| LimboError::IOError(err))?;
|
||||
c.complete(0);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
26
core/lib.rs
26
core/lib.rs
@@ -68,25 +68,27 @@ impl Database {
|
||||
let file = io.open_file(path, io::OpenFlags::None)?;
|
||||
let page_io = Rc::new(FileStorage::new(file));
|
||||
let wal_path = format!("{}-wal", path);
|
||||
Self::open(io, page_io, wal_path)
|
||||
}
|
||||
|
||||
pub fn open(
|
||||
io: Arc<dyn IO>,
|
||||
page_io: Rc<dyn DatabaseStorage>,
|
||||
wal_path: String,
|
||||
) -> Result<Rc<Database>> {
|
||||
let db_header = Pager::begin_open(page_io.clone())?;
|
||||
DATABASE_VERSION.get_or_init(|| {
|
||||
let version = db_header.borrow().version_number;
|
||||
version.to_string()
|
||||
});
|
||||
io.run_once()?;
|
||||
let wal = Rc::new(RefCell::new(WalFile::new(
|
||||
io.clone(),
|
||||
wal_path,
|
||||
db_header.borrow().page_size as usize,
|
||||
)));
|
||||
Self::open(io, page_io, wal)
|
||||
}
|
||||
|
||||
pub fn open(
|
||||
io: Arc<dyn IO>,
|
||||
page_io: Rc<dyn DatabaseStorage>,
|
||||
wal: Rc<RefCell<dyn Wal>>,
|
||||
) -> Result<Rc<Database>> {
|
||||
let db_header = Pager::begin_open(page_io.clone())?;
|
||||
io.run_once()?;
|
||||
DATABASE_VERSION.get_or_init(|| {
|
||||
let version = db_header.borrow().version_number;
|
||||
version.to_string()
|
||||
});
|
||||
let pager = Rc::new(Pager::finish_open(
|
||||
db_header.clone(),
|
||||
page_io,
|
||||
|
||||
Reference in New Issue
Block a user