From 1f93e778282277f18de656ce83155c4b234df737 Mon Sep 17 00:00:00 2001 From: Avinash Sajjanshetty Date: Thu, 21 Aug 2025 16:21:33 +0530 Subject: [PATCH] Remove hardcoded flag usage in DBHeader for encryption Previously, we just hardcoded the reserved space with encryption flag. This patch removes that and sets the reserved space if a key was specified during a creation of db --- core/storage/pager.rs | 7 ++++++- core/storage/sqlite3_ondisk.rs | 3 --- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/storage/pager.rs b/core/storage/pager.rs index fbb200c4d..bc3406779 100644 --- a/core/storage/pager.rs +++ b/core/storage/pager.rs @@ -28,7 +28,7 @@ use super::btree::{btree_init_page, BTreePage}; use super::page_cache::{CacheError, CacheResizeResult, DumbLruPageCache, PageCacheKey}; use super::sqlite3_ondisk::begin_write_btree_page; use super::wal::CheckpointMode; -use crate::storage::encryption::EncryptionKey; +use crate::storage::encryption::{EncryptionKey, ENCRYPTION_METADATA_SIZE}; /// SQLite's default maximum page count const DEFAULT_MAX_PAGE_COUNT: u32 = 0xfffffffe; @@ -1684,6 +1684,11 @@ impl Pager { assert_eq!(default_header.database_size.get(), 0); default_header.database_size = 1.into(); + // if a key is set, then we will reserve space for encryption metadata + if self.encryption_key.borrow().is_some() { + default_header.reserved_space = ENCRYPTION_METADATA_SIZE as u8; + } + if let Some(size) = self.page_size.get() { default_header.page_size = size; } diff --git a/core/storage/sqlite3_ondisk.rs b/core/storage/sqlite3_ondisk.rs index 36537d024..7bc1202c8 100644 --- a/core/storage/sqlite3_ondisk.rs +++ b/core/storage/sqlite3_ondisk.rs @@ -308,9 +308,6 @@ impl Default for DatabaseHeader { page_size: Default::default(), write_version: Version::Wal, read_version: Version::Wal, - #[cfg(feature = "encryption")] - reserved_space: 28, - #[cfg(not(feature = "encryption"))] reserved_space: 0, max_embed_frac: 64, min_embed_frac: 32,