ClickHouse/programs/copier/ShardPartition.h

55 lines
1.5 KiB
C++
Raw Normal View History

2020-02-13 10:52:46 +00:00
#pragma once
2022-10-20 14:37:27 +00:00
#include "ShardPartitionPiece.h"
#include <base/types.h>
#include <map>
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
namespace DB
{
2020-02-13 10:52:46 +00:00
2022-10-20 14:37:27 +00:00
struct TaskShard;
2020-02-13 10:52:46 +00:00
/// Just destination partition of a shard
/// I don't know what this comment means.
/// In short, when we discovered what shards contain currently processing partition,
/// This class describes a partition (name) that is stored on the shard (parent).
2020-03-17 18:07:54 +00:00
struct ShardPartition
{
ShardPartition(TaskShard &parent, String name_quoted_, size_t number_of_splits = 10);
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getPartitionPath() const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getPartitionPiecePath(size_t current_piece_number) const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getPartitionCleanStartPath() const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getPartitionPieceCleanStartPath(size_t current_piece_number) const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getCommonPartitionIsDirtyPath() const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getCommonPartitionIsCleanedPath() const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getPartitionActiveWorkersPath() const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getActiveWorkerPath() const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getPartitionShardsPath() const;
2020-02-13 10:52:46 +00:00
2020-03-17 18:07:54 +00:00
String getShardStatusPath() const;
2020-02-13 10:52:46 +00:00
/// What partition pieces are present in current shard.
/// FYI: Piece is a part of partition which has modulo equals to concrete constant (less than number_of_splits obliously)
/// For example SELECT ... from ... WHERE partition=current_partition AND cityHash64(*) == const;
/// Absent pieces have field is_absent_piece equals to true.
PartitionPieces pieces;
TaskShard & task_shard;
String name;
};
2022-10-20 14:37:27 +00:00
using TasksPartition = std::map<String, ShardPartition, std::greater<>>;
2020-02-13 10:52:46 +00:00
}