2019-10-19 16:49:36 +00:00
|
|
|
#include <Storages/MergeTree/IMergeTreeDataPartWriter.h>
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
IMergeTreeDataPartWriter::IMergeTreeDataPartWriter(
|
|
|
|
const String & part_path_,
|
2019-10-20 23:36:27 +00:00
|
|
|
const MergeTreeData & storage_,
|
2019-10-19 16:49:36 +00:00
|
|
|
const NamesAndTypesList & columns_list_,
|
|
|
|
const IColumn::Permutation * permutation_,
|
|
|
|
const String & marks_file_extension_,
|
|
|
|
const CompressionCodecPtr & default_codec_,
|
|
|
|
size_t max_compress_block_size_,
|
|
|
|
size_t aio_threshold_)
|
|
|
|
: part_path(part_path_)
|
2019-10-20 23:36:27 +00:00
|
|
|
, storage(storage_)
|
2019-10-19 16:49:36 +00:00
|
|
|
, columns_list(columns_list_)
|
|
|
|
, permutation(permutation_)
|
|
|
|
, marks_file_extension(marks_file_extension_)
|
|
|
|
, default_codec(default_codec_)
|
|
|
|
, max_compress_block_size(max_compress_block_size_)
|
|
|
|
, aio_threshold(aio_threshold_) {}
|
|
|
|
|
|
|
|
void IMergeTreeDataPartWriter::ColumnStream::finalize()
|
|
|
|
{
|
|
|
|
compressed.next();
|
|
|
|
plain_file->next();
|
|
|
|
marks.next();
|
|
|
|
}
|
|
|
|
|
|
|
|
void IMergeTreeDataPartWriter::ColumnStream::sync()
|
|
|
|
{
|
|
|
|
plain_file->sync();
|
|
|
|
marks_file.sync();
|
|
|
|
}
|
|
|
|
|
|
|
|
IMergeTreeDataPartWriter::ColumnStream::ColumnStream(
|
|
|
|
const String & escaped_column_name_,
|
|
|
|
const String & data_path_,
|
|
|
|
const std::string & data_file_extension_,
|
|
|
|
const std::string & marks_path_,
|
|
|
|
const std::string & marks_file_extension_,
|
|
|
|
const CompressionCodecPtr & compression_codec_,
|
|
|
|
size_t max_compress_block_size_,
|
|
|
|
size_t estimated_size_,
|
|
|
|
size_t aio_threshold_) :
|
|
|
|
escaped_column_name(escaped_column_name_),
|
|
|
|
data_file_extension{data_file_extension_},
|
|
|
|
marks_file_extension{marks_file_extension_},
|
|
|
|
plain_file(createWriteBufferFromFileBase(data_path_ + data_file_extension, estimated_size_, aio_threshold_, max_compress_block_size_)),
|
|
|
|
plain_hashing(*plain_file), compressed_buf(plain_hashing, compression_codec_), compressed(compressed_buf),
|
|
|
|
marks_file(marks_path_ + marks_file_extension, 4096, O_TRUNC | O_CREAT | O_WRONLY), marks(marks_file)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2019-10-21 00:28:29 +00:00
|
|
|
// void IMergeTreeDataPartWriter::ColumnStream::addToChecksums(MergeTreeData::DataPart::Checksums & checksums)
|
|
|
|
// {
|
|
|
|
// String name = escaped_column_name;
|
2019-10-19 16:49:36 +00:00
|
|
|
|
2019-10-21 00:28:29 +00:00
|
|
|
// checksums.files[name + data_file_extension].is_compressed = true;
|
|
|
|
// checksums.files[name + data_file_extension].uncompressed_size = compressed.count();
|
|
|
|
// checksums.files[name + data_file_extension].uncompressed_hash = compressed.getHash();
|
|
|
|
// checksums.files[name + data_file_extension].file_size = plain_hashing.count();
|
|
|
|
// checksums.files[name + data_file_extension].file_hash = plain_hashing.getHash();
|
2019-10-19 16:49:36 +00:00
|
|
|
|
2019-10-21 00:28:29 +00:00
|
|
|
// checksums.files[name + marks_file_extension].file_size = marks.count();
|
|
|
|
// checksums.files[name + marks_file_extension].file_hash = marks.getHash();
|
|
|
|
// }
|
2019-10-19 16:49:36 +00:00
|
|
|
|
|
|
|
}
|