ClickHouse/src/Storages/MergeTree/MergeTreeIOSettings.h
Nikolai Kochetov d53439390f Review fixes.
2022-11-24 16:04:35 +00:00

86 lines
3.2 KiB
C++

#pragma once
#include <cstddef>
#include <Core/Settings.h>
#include <Storages/MergeTree/MergeTreeSettings.h>
#include <IO/WriteSettings.h>
#include <Parsers/ExpressionElementParsers.h>
#include <Parsers/parseQuery.h>
namespace DB
{
class MMappedFileCache;
using MMappedFileCachePtr = std::shared_ptr<MMappedFileCache>;
struct MergeTreeReaderSettings
{
/// Common read settings.
ReadSettings read_settings;
/// If save_marks_in_cache is false, then, if marks are not in cache,
/// we will load them but won't save in the cache, to avoid evicting other data.
bool save_marks_in_cache = false;
/// Validate checksums on reading (should be always enabled in production).
bool checksum_on_read = true;
/// True if we read in order of sorting key.
bool read_in_order = false;
/// Deleted mask is applied to all reads except internal select from mutate some part columns.
bool apply_deleted_mask = true;
/// Put reading task in a common I/O pool, return Async state on prepare()
bool use_asynchronous_read_from_pool = false;
};
struct MergeTreeWriterSettings
{
MergeTreeWriterSettings() = default;
MergeTreeWriterSettings(
const Settings & global_settings,
const WriteSettings & query_write_settings_,
const MergeTreeSettingsPtr & storage_settings,
bool can_use_adaptive_granularity_,
bool rewrite_primary_key_,
bool blocks_are_granules_size_ = false)
: min_compress_block_size(
storage_settings->min_compress_block_size ? storage_settings->min_compress_block_size : global_settings.min_compress_block_size)
, max_compress_block_size(
storage_settings->max_compress_block_size ? storage_settings->max_compress_block_size
: global_settings.max_compress_block_size)
, marks_compression_codec(storage_settings->marks_compression_codec)
, marks_compress_block_size(storage_settings->marks_compress_block_size)
, compress_primary_key(storage_settings->compress_primary_key)
, primary_key_compression_codec(storage_settings->primary_key_compression_codec)
, primary_key_compress_block_size(storage_settings->primary_key_compress_block_size)
, can_use_adaptive_granularity(can_use_adaptive_granularity_)
, rewrite_primary_key(rewrite_primary_key_)
, blocks_are_granules_size(blocks_are_granules_size_)
, query_write_settings(query_write_settings_)
{
}
CompressionCodecPtr getMarksCompressionCodec() const
{
ParserCodec codec_parser;
auto ast = parseQuery(codec_parser, "(" + Poco::toUpper(marks_compression_codec) + ")", 0, DBMS_DEFAULT_MAX_PARSER_DEPTH);
return CompressionCodecFactory::instance().get(ast, nullptr);
}
size_t min_compress_block_size;
size_t max_compress_block_size;
String marks_compression_codec;
size_t marks_compress_block_size;
bool compress_primary_key;
String primary_key_compression_codec;
size_t primary_key_compress_block_size;
bool can_use_adaptive_granularity;
bool rewrite_primary_key;
bool blocks_are_granules_size;
WriteSettings query_write_settings;
};
}