fix: replace unwrap() with ?

This commit is contained in:
Ryan Tan
2024-07-07 19:12:48 +08:00
parent dac8f4dcba
commit 9c2988e0ed
5 changed files with 15 additions and 8 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
/target
/.idea

1
Cargo.lock generated
View File

@@ -932,6 +932,7 @@ dependencies = [
"rusqlite",
"sieve-cache",
"sqlite3-parser",
"thiserror",
]
[[package]]

View File

@@ -30,6 +30,7 @@ fallible-iterator = "0.3.0"
log = "0.4.20"
sieve-cache = "0.1.4"
sqlite3-parser = "0.11.0"
thiserror = "1.0.61"
[target.'cfg(not(target_family = "windows"))'.dev-dependencies]
pprof = { version = "0.12.1", features = ["criterion", "flamegraph"] }

View File

@@ -140,8 +140,7 @@ impl Pager {
self.buffer_pool.clone(),
page.clone(),
page_idx,
)
.unwrap();
)?;
page_cache.insert(page_idx, page.clone());
Ok(page)
}

View File

@@ -4,8 +4,15 @@ use crate::{
io::{Completion, WriteCompletion},
Buffer,
};
use anyhow::Result;
use anyhow::{ensure, Result};
use std::{cell::RefCell, rc::Rc};
use thiserror::Error;
#[derive(Debug, Error)]
pub enum StorageError {
#[error("file is not a database")]
NotADB,
}
pub struct PageSource {
io: Rc<dyn PageIO>,
@@ -63,12 +70,10 @@ struct FileStorage {
#[cfg(feature = "fs")]
impl PageIO for FileStorage {
fn get(&self, page_idx: usize, c: Rc<Completion>) -> Result<()> {
let page_size = c.buf().len();
let size = c.buf().len();
assert!(page_idx > 0);
assert!(page_size >= 512);
assert!(page_size <= 65536);
assert!((page_size & (page_size - 1)) == 0);
let pos = (page_idx - 1) * page_size;
ensure!(size >= 1 << 9 && size <= 1 << 16 && size & (size - 1) == 0, StorageError::NotADB);
let pos = (page_idx - 1) * size;
self.file.pread(pos, c)?;
Ok(())
}