From ecb5fce1bd1a54e8a5c3ff86e13994743224db7c Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Wed, 23 Jul 2025 10:54:20 +0300 Subject: [PATCH 1/2] Pager: clear overflow cells when freeing page --- core/storage/pager.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/storage/pager.rs b/core/storage/pager.rs index 95f7efb98..be1922e58 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -1140,7 +1140,16 @@ impl Pager { let page = match page.clone() { Some(page) => { - assert_eq!(page.get().id, page_id, "Page id mismatch"); + assert_eq!( + page.get().id, + page_id, + "Pager::free_page: Page id mismatch: expected {} but got {}", + page_id, + page.get().id + ); + turso_assert!(page.is_loaded(), "Pager::free_page: In memory page with id {} about to be dropped is not loaded", page.get().id); + let page_contents = page.get_contents(); + page_contents.overflow_cells.clear(); page } None => self.read_page(page_id)?, From f98a9e8939e5f308608dabf42d22fa8ab541a011 Mon Sep 17 00:00:00 2001 From: Jussi Saurio Date: Wed, 23 Jul 2025 11:08:34 +0300 Subject: [PATCH 2/2] Pager: don't assume page is necessarily in memory anymore --- core/storage/pager.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/storage/pager.rs b/core/storage/pager.rs index be1922e58..f0172037e 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -1147,9 +1147,10 @@ impl Pager { page_id, page.get().id ); - turso_assert!(page.is_loaded(), "Pager::free_page: In memory page with id {} about to be dropped is not loaded", page.get().id); - let page_contents = page.get_contents(); - page_contents.overflow_cells.clear(); + if page.is_loaded() { + let page_contents = page.get_contents(); + page_contents.overflow_cells.clear(); + } page } None => self.read_page(page_id)?,