From 9eac898d4a1803c413aac449bdf49c06ebfbd2d2 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Wed, 28 May 2025 14:00:48 +0200 Subject: [PATCH] Page::reset_for: stop zeroing pages for the time being --- crates/table/src/page.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/table/src/page.rs b/crates/table/src/page.rs index fb15955b9db..eaae19f4c6e 100644 --- a/crates/table/src/page.rs +++ b/crates/table/src/page.rs @@ -1837,8 +1837,16 @@ impl Page { /// The reset page supports `max_rows_in_page` at most. pub fn reset_for(&mut self, max_rows_in_page: usize) { self.header.reset_for(max_rows_in_page); - // SAFETY: We just reset the page header. - unsafe { self.zero_data() }; + + // NOTE(centril): We previously zeroed pages when resetting. + // This had an adverse performance impact. + // The reason why we previously zeroed was for security under a multi-tenant setup + // when exposing a module ABI that allows modules to memcpy whole pages over. + // However, we have no such ABI for the time being, so we can soundly avoid zeroing. + // If we ever decide to add such an ABI, we must start zeroing again. + // + // // SAFETY: We just reset the page header. + // unsafe { self.zero_data() }; } /// Sets the header and the row data.