Struct sqlite_rs::header::IncrementalVacuumSettings
source · pub struct IncrementalVacuumSettings {
pub largest_root_btree_page: LargestRootBtreePage,
pub incremental_vacuum_mode: IncrementalVacuumMode,
}Expand description
Incremental vacuum settings (8 Bytes)
The two 4-byte big-endian integers at offsets 52 and 64 are used to manage the auto_vacuum and incremental_vacuum modes. If the integer at offset 52 is zero then pointer-map (ptrmap) pages are omitted from the database file and neither auto_vacuum nor incremental_vacuum are supported. If the integer at offset 52 is non-zero then it is the page number of the largest root page in the database file, the database file will contain ptrmap pages, and the mode must be either auto_vacuum or incremental_vacuum. In this latter case, the integer at offset 64 is true for incremental_vacuum and false for auto_vacuum. If the integer at offset 52 is zero then the integer at offset 64 must also be zero.
Fields§
§largest_root_btree_page: LargestRootBtreePage§incremental_vacuum_mode: IncrementalVacuumModeImplementations§
source§impl IncrementalVacuumSettings
impl IncrementalVacuumSettings
sourcepub fn largest_root_btree_page(&self) -> &LargestRootBtreePage
pub fn largest_root_btree_page(&self) -> &LargestRootBtreePage
Examples found in repository?
examples/sqlite_info.rs (line 123)
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
fn print_sqlite_info(sqlite_database: &SQLiteDatabase) -> AppResult<()> {
const LABEL_WIDTH: usize = 21;
// TODO:
let sqlite_header = sqlite_database.header();
let mut output = "".to_owned();
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "database page size:",
value = **sqlite_header.page_size()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "write format:",
value =
u8::from(sqlite_header.file_format_version_numbers().write_version())
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "read format:",
value =
u8::from(sqlite_header.file_format_version_numbers().read_version())
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "reserved bytes:",
value = **sqlite_header.reserved_bytes_per_page()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "file change counter:",
value = **sqlite_header.file_change_counter()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "database page count:",
value = **sqlite_header.db_filesize_in_pages()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "freelist page count:",
value = **sqlite_header.freelist_pages().total()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "schema cookie:",
value = **sqlite_header.schema_cookie()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "schema format:",
value = u32::from(sqlite_header.schema_format())
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "default cache size:",
value = **sqlite_header.suggested_cache_size()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "autovacuum top root:",
value = **sqlite_header
.incremental_vacuum_settings()
.largest_root_btree_page()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "incremental vacuum:",
value = u32::from(
sqlite_header
.incremental_vacuum_settings()
.incremental_vacuum_mode()
)
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "text encoding:",
value = sqlite_header.database_text_encoding()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "user version:",
value = **sqlite_header.user_version()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "application id:",
value = **sqlite_header.application_id()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "software version:",
value = **sqlite_header.write_library_version()
));
println!("{output}");
Ok(())
}sourcepub fn incremental_vacuum_mode(&self) -> &IncrementalVacuumMode
pub fn incremental_vacuum_mode(&self) -> &IncrementalVacuumMode
Examples found in repository?
examples/sqlite_info.rs (line 133)
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
fn print_sqlite_info(sqlite_database: &SQLiteDatabase) -> AppResult<()> {
const LABEL_WIDTH: usize = 21;
// TODO:
let sqlite_header = sqlite_database.header();
let mut output = "".to_owned();
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "database page size:",
value = **sqlite_header.page_size()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "write format:",
value =
u8::from(sqlite_header.file_format_version_numbers().write_version())
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "read format:",
value =
u8::from(sqlite_header.file_format_version_numbers().read_version())
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "reserved bytes:",
value = **sqlite_header.reserved_bytes_per_page()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "file change counter:",
value = **sqlite_header.file_change_counter()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "database page count:",
value = **sqlite_header.db_filesize_in_pages()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "freelist page count:",
value = **sqlite_header.freelist_pages().total()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "schema cookie:",
value = **sqlite_header.schema_cookie()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "schema format:",
value = u32::from(sqlite_header.schema_format())
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "default cache size:",
value = **sqlite_header.suggested_cache_size()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "autovacuum top root:",
value = **sqlite_header
.incremental_vacuum_settings()
.largest_root_btree_page()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "incremental vacuum:",
value = u32::from(
sqlite_header
.incremental_vacuum_settings()
.incremental_vacuum_mode()
)
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "text encoding:",
value = sqlite_header.database_text_encoding()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "user version:",
value = **sqlite_header.user_version()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "application id:",
value = **sqlite_header.application_id()
));
output.push_str(&format!(
"{label: <w$}{value}\n",
w = LABEL_WIDTH,
label = "software version:",
value = **sqlite_header.write_library_version()
));
println!("{output}");
Ok(())
}Trait Implementations§
source§impl Debug for IncrementalVacuumSettings
impl Debug for IncrementalVacuumSettings
source§impl PartialEq<IncrementalVacuumSettings> for IncrementalVacuumSettings
impl PartialEq<IncrementalVacuumSettings> for IncrementalVacuumSettings
source§fn eq(&self, other: &IncrementalVacuumSettings) -> bool
fn eq(&self, other: &IncrementalVacuumSettings) -> bool
This method tests for
self and other values to be equal, and is used
by ==.impl Eq for IncrementalVacuumSettings
impl StructuralEq for IncrementalVacuumSettings
impl StructuralPartialEq for IncrementalVacuumSettings
Auto Trait Implementations§
impl RefUnwindSafe for IncrementalVacuumSettings
impl Send for IncrementalVacuumSettings
impl Sync for IncrementalVacuumSettings
impl Unpin for IncrementalVacuumSettings
impl UnwindSafe for IncrementalVacuumSettings
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more