#pragma once #include #include #include #include #include namespace DB { struct MergeTreeMutationStatus { String id; String command; time_t create_time = 0; std::map block_numbers; /// Parts that should be mutated/merged or otherwise moved to Obsolete state for this mutation to complete. Names parts_to_do_names; /// If the mutation is done. Note that in case of ReplicatedMergeTree parts_to_do == 0 doesn't imply is_done == true. bool is_done = false; String latest_failed_part; time_t latest_fail_time = 0; String latest_fail_reason; /// FIXME: currently unused, but would be much better to report killed mutations with this flag. bool is_killed = false; }; /// Check mutation status and throw exception in case of error during mutation /// (latest_fail_reason not empty) or if mutation was killed (status empty /// optional). mutation_ids passed separately, because status may be empty and /// we can execute multiple mutations at once void checkMutationStatus(std::optional & status, const std::set & mutation_ids); }