1#pragma once
2
3#include <Core/Types.h>
4#include <Storages/MutationCommands.h>
5#include <Storages/MergeTree/MergeTreePartInfo.h>
6
7
8namespace DB
9{
10
11/// A mutation entry for non-replicated MergeTree storage engines.
12/// Stores information about mutation in file mutation_*.txt.
13struct MergeTreeMutationEntry
14{
15 time_t create_time = 0;
16 MutationCommands commands;
17
18 String path_prefix;
19 String file_name;
20 bool is_temp = false;
21
22 Int64 block_number = 0;
23
24 String latest_failed_part;
25 MergeTreePartInfo latest_failed_part_info;
26 time_t latest_fail_time = 0;
27 String latest_fail_reason;
28
29 /// Create a new entry and write it to a temporary file.
30 MergeTreeMutationEntry(MutationCommands commands_, const String & path_prefix_, Int64 tmp_number);
31 MergeTreeMutationEntry(const MergeTreeMutationEntry &) = delete;
32 MergeTreeMutationEntry(MergeTreeMutationEntry &&) = default;
33
34 /// Commit entry and rename it to a permanent file.
35 void commit(Int64 block_number_);
36
37 void removeFile();
38
39 /// Load an existing entry.
40 MergeTreeMutationEntry(const String & path_prefix_, const String & file_name_);
41
42 ~MergeTreeMutationEntry();
43};
44
45}
46