mysql_handler/hton/
table_statistics.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
34#[non_exhaustive]
35pub struct TableStatistics {
36 records: u64,
37 data_file_length: u64,
38 max_data_file_length: u64,
39 index_file_length: u64,
40 max_index_file_length: u64,
41 delete_length: u64,
42 auto_increment_value: u64,
43 deleted: u64,
44 mean_rec_length: u64,
45 create_time: i64,
46 check_time: u64,
47 update_time: u64,
48 block_size: u32,
49}
50
51impl TableStatistics {
52 #[must_use]
55 pub const fn new() -> Self {
56 Self {
57 records: 0,
58 data_file_length: 0,
59 max_data_file_length: 0,
60 index_file_length: 0,
61 max_index_file_length: 0,
62 delete_length: 0,
63 auto_increment_value: 0,
64 deleted: 0,
65 mean_rec_length: 0,
66 create_time: 0,
67 check_time: 0,
68 update_time: 0,
69 block_size: 0,
70 }
71 }
72
73 #[must_use]
75 pub const fn with_records(mut self, value: u64) -> Self {
76 self.records = value;
77 self
78 }
79
80 #[must_use]
82 pub const fn with_data_file_length(mut self, value: u64) -> Self {
83 self.data_file_length = value;
84 self
85 }
86
87 #[must_use]
89 pub const fn with_max_data_file_length(mut self, value: u64) -> Self {
90 self.max_data_file_length = value;
91 self
92 }
93
94 #[must_use]
96 pub const fn with_index_file_length(mut self, value: u64) -> Self {
97 self.index_file_length = value;
98 self
99 }
100
101 #[must_use]
103 pub const fn with_max_index_file_length(mut self, value: u64) -> Self {
104 self.max_index_file_length = value;
105 self
106 }
107
108 #[must_use]
110 pub const fn with_delete_length(mut self, value: u64) -> Self {
111 self.delete_length = value;
112 self
113 }
114
115 #[must_use]
117 pub const fn with_auto_increment_value(mut self, value: u64) -> Self {
118 self.auto_increment_value = value;
119 self
120 }
121
122 #[must_use]
124 pub const fn with_deleted(mut self, value: u64) -> Self {
125 self.deleted = value;
126 self
127 }
128
129 #[must_use]
131 pub const fn with_mean_rec_length(mut self, value: u64) -> Self {
132 self.mean_rec_length = value;
133 self
134 }
135
136 #[must_use]
138 pub const fn with_create_time(mut self, value: i64) -> Self {
139 self.create_time = value;
140 self
141 }
142
143 #[must_use]
145 pub const fn with_check_time(mut self, value: u64) -> Self {
146 self.check_time = value;
147 self
148 }
149
150 #[must_use]
152 pub const fn with_update_time(mut self, value: u64) -> Self {
153 self.update_time = value;
154 self
155 }
156
157 #[must_use]
159 pub const fn with_block_size(mut self, value: u32) -> Self {
160 self.block_size = value;
161 self
162 }
163
164 pub const fn records(&self) -> u64 {
166 self.records
167 }
168 pub const fn data_file_length(&self) -> u64 {
170 self.data_file_length
171 }
172 pub const fn max_data_file_length(&self) -> u64 {
174 self.max_data_file_length
175 }
176 pub const fn index_file_length(&self) -> u64 {
178 self.index_file_length
179 }
180 pub const fn max_index_file_length(&self) -> u64 {
182 self.max_index_file_length
183 }
184 pub const fn delete_length(&self) -> u64 {
186 self.delete_length
187 }
188 pub const fn auto_increment_value(&self) -> u64 {
190 self.auto_increment_value
191 }
192 pub const fn deleted(&self) -> u64 {
194 self.deleted
195 }
196 pub const fn mean_rec_length(&self) -> u64 {
198 self.mean_rec_length
199 }
200 pub const fn create_time(&self) -> i64 {
202 self.create_time
203 }
204 pub const fn check_time(&self) -> u64 {
206 self.check_time
207 }
208 pub const fn update_time(&self) -> u64 {
210 self.update_time
211 }
212 pub const fn block_size(&self) -> u32 {
214 self.block_size
215 }
216}
217
218impl Default for TableStatistics {
219 fn default() -> Self {
220 Self::new()
221 }
222}
223
224#[cfg(test)]
225mod tests {
226 use super::*;
227
228 #[test]
229 fn new_zeros_every_field() {
230 let s = TableStatistics::new();
231 assert_eq!(s.records(), 0);
232 assert_eq!(s.data_file_length(), 0);
233 assert_eq!(s.block_size(), 0);
234 }
235
236 #[test]
237 fn builder_preserves_each_setter() {
238 let s = TableStatistics::new()
239 .with_records(100)
240 .with_data_file_length(4096)
241 .with_block_size(16);
242 assert_eq!(s.records(), 100);
243 assert_eq!(s.data_file_length(), 4096);
244 assert_eq!(s.block_size(), 16);
245 }
246}