From f406481849b7acf289257fce40153e0c72cbf9aa Mon Sep 17 00:00:00 2001 From: Kim Seon Woo <69591622+seonwoo960000@users.noreply.github.com> Date: Fri, 16 Aug 2024 19:56:06 +0900 Subject: [PATCH] Explain why it fails --- core/storage/sqlite3_ondisk.rs | 2 ++ database.db | Bin 0 -> 8192 bytes 2 files changed, 2 insertions(+) create mode 100644 database.db diff --git a/core/storage/sqlite3_ondisk.rs b/core/storage/sqlite3_ondisk.rs index e03e29729..d085128d4 100644 --- a/core/storage/sqlite3_ondisk.rs +++ b/core/storage/sqlite3_ondisk.rs @@ -495,6 +495,7 @@ fn finish_read_page( pub fn begin_write_btree_page(pager: &Pager, page: &Rc>) -> Result<()> { let page_source = &pager.page_io; let page_finish = page.clone(); + // page.borrow() returns RefCell which remains active for the entire begin_write_btree_page function let page = page.borrow(); let contents = page.contents.read().unwrap(); @@ -505,6 +506,7 @@ pub fn begin_write_btree_page(pager: &Pager, page: &Rc>) -> Result Box::new(move |bytes_written: i32| { let buf_copy = buf_copy.clone(); let buf_len = buf_copy.borrow().len(); + // requires a mutable borrow of the page_finish's RefCell page_finish.borrow_mut().clear_dirty(); if bytes_written < buf_len as i32 { log::error!("wrote({bytes_written}) less than expected({buf_len})"); diff --git a/database.db b/database.db new file mode 100644 index 0000000000000000000000000000000000000000..51f2d758f1c9cf49ae717efca7e4bc502cc793c6 GIT binary patch literal 8192 zcmeI#u?oU45C-78R@@}w(!u3M1#$5O)RI9ELCxUWVidtvY3u8`=tKArK7?t}NkQBk z{+}er9T~#6WjUYj3M-pKmPCaNs7cH;6d@vZ+jIMsvah`wSIhoenEK(R;cl@ylUoP` zAOHafKmY;|fB*y_009U<00KV?47nZz0Y^m?@9inKSzaApxX>e`#f-*NE!9XmyR}Sa zrdPFTlvpu(WxD0x+*empcXe|GfdB*`009U<00Izz00bZa0SG|gPX$`OUvEF(#z&jR NHruwm4>NwBJpjV&Dc1l1 literal 0 HcmV?d00001