1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use std::cmp;
use txn_types::TimeStamp;
#[derive(Clone, Debug)]
pub struct MvccProperties {
pub min_ts: TimeStamp,
pub max_ts: TimeStamp,
pub num_rows: u64,
pub num_puts: u64,
pub num_deletes: u64,
pub num_versions: u64,
pub max_row_versions: u64,
}
impl MvccProperties {
pub fn new() -> MvccProperties {
MvccProperties {
min_ts: TimeStamp::max(),
max_ts: TimeStamp::zero(),
num_rows: 0,
num_puts: 0,
num_deletes: 0,
num_versions: 0,
max_row_versions: 0,
}
}
pub fn add(&mut self, other: &MvccProperties) {
self.min_ts = cmp::min(self.min_ts, other.min_ts);
self.max_ts = cmp::max(self.max_ts, other.max_ts);
self.num_rows += other.num_rows;
self.num_puts += other.num_puts;
self.num_deletes += other.num_deletes;
self.num_versions += other.num_versions;
self.max_row_versions = cmp::max(self.max_row_versions, other.max_row_versions);
}
}
pub trait MvccPropertiesExt {
fn get_mvcc_properties_cf(
&self,
cf: &str,
safe_point: TimeStamp,
start_key: &[u8],
end_key: &[u8],
) -> Option<MvccProperties>;
}