ClickHouse/src/Storages/MergeTree/MergeTreeWriteAheadLog.h

48 lines
1.2 KiB
C++
Raw Normal View History

2020-04-14 19:47:19 +00:00
#pragma once
#include <DataStreams/NativeBlockInputStream.h>
#include <DataStreams/NativeBlockOutputStream.h>
#include <Storages/MergeTree/IMergeTreeDataPart.h>
#include <Disks/IDisk.h>
namespace DB
{
class MergeTreeData;
class MergeTreeWriteAheadLog
{
public:
constexpr static auto WAL_FILE_NAME = "wal";
constexpr static auto WAL_FILE_EXTENSION = ".bin";
2020-05-14 20:08:15 +00:00
constexpr static auto DEFAULT_WAL_FILE = "wal.bin";
2020-04-14 19:47:19 +00:00
MergeTreeWriteAheadLog(const MergeTreeData & storage_, const DiskPtr & disk_,
2020-05-14 20:08:15 +00:00
const String & name = DEFAULT_WAL_FILE);
2020-04-14 19:47:19 +00:00
void write(const Block & block, const String & part_name);
std::vector<MergeTreeMutableDataPartPtr> restore();
2020-04-14 19:47:19 +00:00
using MinMaxBlockNumber = std::pair<Int64, Int64>;
static std::optional<MinMaxBlockNumber> tryParseMinMaxBlockNumber(const String & filename);
2020-04-14 19:47:19 +00:00
private:
void init();
void rotate();
2020-04-14 19:47:19 +00:00
const MergeTreeData & storage;
DiskPtr disk;
2020-05-14 20:08:15 +00:00
String name;
2020-04-14 19:47:19 +00:00
String path;
std::unique_ptr<WriteBuffer> out;
std::unique_ptr<NativeBlockOutputStream> block_out;
Int64 min_block_number = std::numeric_limits<Int64>::max();
2020-05-14 20:08:15 +00:00
Int64 max_block_number = -1;
2020-04-14 19:47:19 +00:00
mutable std::mutex write_mutex;
};
}