| 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 |