mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-09 02:04:22 +01:00
Merge 'core/btree: Add PageContent::new() helper' from Pekka Enberg
Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com> Closes #1294
This commit is contained in:
@@ -4920,14 +4920,13 @@ mod tests {
|
||||
let page = Arc::new(Page::new(id));
|
||||
|
||||
let drop_fn = Rc::new(|_| {});
|
||||
let inner = PageContent {
|
||||
offset: 0,
|
||||
buffer: Arc::new(RefCell::new(Buffer::new(
|
||||
let inner = PageContent::new(
|
||||
0,
|
||||
Arc::new(RefCell::new(Buffer::new(
|
||||
BufferData::new(vec![0; 4096]),
|
||||
drop_fn,
|
||||
))),
|
||||
overflow_cells: Vec::new(),
|
||||
};
|
||||
);
|
||||
page.get().contents.replace(inner);
|
||||
|
||||
btree_init_page(&page, PageType::TableLeaf, 0, 4096);
|
||||
|
||||
@@ -637,11 +637,7 @@ pub fn allocate_page(page_id: usize, buffer_pool: &Rc<BufferPool>, offset: usize
|
||||
});
|
||||
let buffer = Arc::new(RefCell::new(Buffer::new(buffer, drop_fn)));
|
||||
page.set_loaded();
|
||||
page.get().contents = Some(PageContent {
|
||||
offset,
|
||||
buffer,
|
||||
overflow_cells: Vec::new(),
|
||||
});
|
||||
page.get().contents = Some(PageContent::new(offset, buffer));
|
||||
}
|
||||
page
|
||||
}
|
||||
|
||||
@@ -413,6 +413,14 @@ impl Clone for PageContent {
|
||||
}
|
||||
|
||||
impl PageContent {
|
||||
pub fn new(offset: usize, buffer: Arc<RefCell<Buffer>>) -> Self {
|
||||
Self {
|
||||
offset,
|
||||
buffer,
|
||||
overflow_cells: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn page_type(&self) -> PageType {
|
||||
self.read_u8(0).try_into().unwrap()
|
||||
}
|
||||
@@ -741,11 +749,7 @@ fn finish_read_page(
|
||||
} else {
|
||||
0
|
||||
};
|
||||
let inner = PageContent {
|
||||
offset: pos,
|
||||
buffer: buffer_ref.clone(),
|
||||
overflow_cells: Vec::new(),
|
||||
};
|
||||
let inner = PageContent::new(pos, buffer_ref.clone());
|
||||
{
|
||||
page.get().contents.replace(inner);
|
||||
page.set_uptodate();
|
||||
|
||||
@@ -698,11 +698,10 @@ impl WalFile {
|
||||
let drop_fn = Rc::new(move |buf| {
|
||||
buffer_pool.put(buf);
|
||||
});
|
||||
checkpoint_page.get().contents = Some(PageContent {
|
||||
offset: 0,
|
||||
buffer: Arc::new(RefCell::new(Buffer::new(buffer, drop_fn))),
|
||||
overflow_cells: Vec::new(),
|
||||
});
|
||||
checkpoint_page.get().contents = Some(PageContent::new(
|
||||
0,
|
||||
Arc::new(RefCell::new(Buffer::new(buffer, drop_fn))),
|
||||
));
|
||||
}
|
||||
Self {
|
||||
io,
|
||||
|
||||
Reference in New Issue
Block a user