diff --git a/core/storage/btree.rs b/core/storage/btree.rs index afd514626..001049dfb 100644 --- a/core/storage/btree.rs +++ b/core/storage/btree.rs @@ -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); diff --git a/core/storage/pager.rs b/core/storage/pager.rs index 70af1c8d2..9d6d90c00 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -637,11 +637,7 @@ pub fn allocate_page(page_id: usize, buffer_pool: &Rc, 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 } diff --git a/core/storage/sqlite3_ondisk.rs b/core/storage/sqlite3_ondisk.rs index b8373514f..10251ca51 100644 --- a/core/storage/sqlite3_ondisk.rs +++ b/core/storage/sqlite3_ondisk.rs @@ -413,6 +413,14 @@ impl Clone for PageContent { } impl PageContent { + pub fn new(offset: usize, buffer: Arc>) -> 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(); diff --git a/core/storage/wal.rs b/core/storage/wal.rs index b56246a78..2d1f17776 100644 --- a/core/storage/wal.rs +++ b/core/storage/wal.rs @@ -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,