| 1 | #include <Storages/MergeTree/AllMergeSelector.h> | 
|---|---|
| 2 | |
| 3 | #include <cmath> | 
| 4 | |
| 5 | |
| 6 | namespace DB | 
| 7 | { | 
| 8 | |
| 9 | AllMergeSelector::PartsInPartition AllMergeSelector::select( | 
| 10 | const Partitions & partitions, | 
| 11 | const size_t /*max_total_size_to_merge*/) | 
| 12 | { | 
| 13 | size_t min_partition_size = 0; | 
| 14 | Partitions::const_iterator best_partition; | 
| 15 | |
| 16 | for (auto it = partitions.begin(); it != partitions.end(); ++it) | 
| 17 | { | 
| 18 | if (it->size() <= 1) | 
| 19 | continue; | 
| 20 | |
| 21 | size_t sum_size = 0; | 
| 22 | for (const auto & part : *it) | 
| 23 | sum_size += part.size; | 
| 24 | |
| 25 | if (!min_partition_size || sum_size < min_partition_size) | 
| 26 | { | 
| 27 | min_partition_size = sum_size; | 
| 28 | best_partition = it; | 
| 29 | } | 
| 30 | } | 
| 31 | |
| 32 | if (min_partition_size) | 
| 33 | return *best_partition; | 
| 34 | else | 
| 35 | return {}; | 
| 36 | } | 
| 37 | |
| 38 | } | 
| 39 | 
