1#pragma once
2
3#include <Storages/MergeTree/MergeSelector.h>
4
5
6namespace DB
7{
8
9/** Merge selector, which is used to remove values with expired ttl.
10 * It selects parts to merge by greedy algorithm:
11 * 1. Finds part with the most earliest expired ttl and includes it to result.
12 * 2. Tries to find the longest range of parts with expired ttl, that includes part from step 1.
13 */
14class TTLMergeSelector : public IMergeSelector
15{
16public:
17 explicit TTLMergeSelector(time_t current_time_, bool only_drop_parts_) : current_time(current_time_), only_drop_parts(only_drop_parts_) {}
18
19 PartsInPartition select(
20 const Partitions & partitions,
21 const size_t max_total_size_to_merge) override;
22private:
23 time_t current_time;
24 bool only_drop_parts;
25};
26
27}
28