refactor: Simplify partition sorting code

pull/24376/head
Carol (Nichols || Goulding) 2021-02-22 11:19:47 -05:00
parent 04e2631f26
commit 56c515a063
1 changed files with 5 additions and 17 deletions

View File

@ -210,34 +210,22 @@ impl MutableBufferDb {
&self,
sort_rules: &PartitionSortRules,
) -> Vec<Arc<RwLock<Partition>>> {
let partitions: Vec<_> = {
let mut partitions: Vec<_> = {
let partitions = self.partitions.read().expect("poisoned mutex");
partitions.values().map(Arc::clone).collect()
};
let mut partitions: Vec<_> = match &sort_rules.sort {
match &sort_rules.sort {
PartitionSort::CreatedAtTime => {
let times: Vec<_> = partitions
.iter()
.map(|p| p.read().expect("mutex poisoned").created_at)
.collect();
let mut pt: Vec<_> = partitions.into_iter().zip(times).collect();
pt.sort_by(|(_partition_a, time_a), (_partition_b, time_b)| time_a.cmp(time_b));
pt.into_iter().map(|(p, _)| p).collect()
partitions.sort_by_cached_key(|p| p.read().expect("mutex poisoned").created_at);
}
PartitionSort::LastWriteTime => {
let times: Vec<_> = partitions
.iter()
.map(|p| p.read().expect("mutex poisoned").last_write_at)
.collect();
let mut pt: Vec<_> = partitions.into_iter().zip(times).collect();
pt.sort_by(|(_partition_a, time_a), (_partition_b, time_b)| time_a.cmp(time_b));
pt.into_iter().map(|(p, _)| p).collect()
partitions.sort_by_cached_key(|p| p.read().expect("mutex poisoned").last_write_at);
}
PartitionSort::Column(_name, _data_type, _val) => {
unimplemented!()
}
};
}
if sort_rules.order == Order::Desc {
partitions.reverse();