move wal creation

This commit is contained in:
Pere Diaz Bou
2024-11-07 13:51:02 +01:00
parent 218c32e0e6
commit ce1367b76a
3 changed files with 19 additions and 15 deletions

View File

@@ -77,7 +77,7 @@ impl limbo_core::File for File {
todo!()
}
fn size(&self) -> Result<()> {
fn size(&self) -> Result<u64> {
todo!()
}
}

View File

@@ -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(())
}

View File

@@ -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,