mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-22 01:30:51 +00:00
Took PREWHERE
into account.
This commit is contained in:
parent
6f5a72c963
commit
e5cbd82879
@ -231,6 +231,19 @@ std::vector<size_t> MergeTreeReadPool::fillPerPartInfo(
|
|||||||
auto [required_columns, required_pre_columns, should_reorder] =
|
auto [required_columns, required_pre_columns, should_reorder] =
|
||||||
getReadTaskColumns(data, metadata_snapshot, part.data_part, column_names, prewhere_info, check_columns);
|
getReadTaskColumns(data, metadata_snapshot, part.data_part, column_names, prewhere_info, check_columns);
|
||||||
|
|
||||||
|
if (predict_block_size_bytes)
|
||||||
|
{
|
||||||
|
const auto & required_column_names = required_columns.getNames();
|
||||||
|
const auto & required_pre_column_names = required_pre_columns.getNames();
|
||||||
|
NameSet complete_column_names(required_column_names.begin(), required_column_names.end());
|
||||||
|
complete_column_names.insert(required_pre_column_names.begin(), required_pre_column_names.end());
|
||||||
|
|
||||||
|
per_part_size_predictor.emplace_back(std::make_unique<MergeTreeBlockSizePredictor>(
|
||||||
|
part.data_part, Names(complete_column_names.begin(), complete_column_names.end()), sample_block));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
per_part_size_predictor.emplace_back(nullptr);
|
||||||
|
|
||||||
/// will be used to distinguish between PREWHERE and WHERE columns when applying filter
|
/// will be used to distinguish between PREWHERE and WHERE columns when applying filter
|
||||||
const auto & required_column_names = required_columns.getNames();
|
const auto & required_column_names = required_columns.getNames();
|
||||||
per_part_column_name_set.emplace_back(required_column_names.begin(), required_column_names.end());
|
per_part_column_name_set.emplace_back(required_column_names.begin(), required_column_names.end());
|
||||||
@ -240,14 +253,6 @@ std::vector<size_t> MergeTreeReadPool::fillPerPartInfo(
|
|||||||
per_part_should_reorder.push_back(should_reorder);
|
per_part_should_reorder.push_back(should_reorder);
|
||||||
|
|
||||||
parts_with_idx.push_back({ part.data_part, part.part_index_in_query });
|
parts_with_idx.push_back({ part.data_part, part.part_index_in_query });
|
||||||
|
|
||||||
if (predict_block_size_bytes)
|
|
||||||
{
|
|
||||||
per_part_size_predictor.emplace_back(std::make_unique<MergeTreeBlockSizePredictor>(
|
|
||||||
part.data_part, required_column_names, sample_block));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
per_part_size_predictor.emplace_back(nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return per_part_sum_marks;
|
return per_part_sum_marks;
|
||||||
|
@ -93,9 +93,17 @@ try
|
|||||||
MarkRanges mark_ranges_for_task = { all_mark_ranges.back() };
|
MarkRanges mark_ranges_for_task = { all_mark_ranges.back() };
|
||||||
all_mark_ranges.pop_back();
|
all_mark_ranges.pop_back();
|
||||||
|
|
||||||
auto size_predictor = (preferred_block_size_bytes == 0)
|
std::unique_ptr<MergeTreeBlockSizePredictor> size_predictor;
|
||||||
? nullptr
|
if (preferred_block_size_bytes)
|
||||||
: std::make_unique<MergeTreeBlockSizePredictor>(data_part, task_columns.columns.getNames(), metadata_snapshot->getSampleBlock());
|
{
|
||||||
|
const auto & required_column_names = task_columns.columns.getNames();
|
||||||
|
const auto & required_pre_column_names = task_columns.pre_columns.getNames();
|
||||||
|
NameSet complete_column_names(required_column_names.begin(), required_column_names.end());
|
||||||
|
complete_column_names.insert(required_pre_column_names.begin(), required_pre_column_names.end());
|
||||||
|
|
||||||
|
size_predictor = std::make_unique<MergeTreeBlockSizePredictor>(
|
||||||
|
data_part, Names(complete_column_names.begin(), complete_column_names.end()), metadata_snapshot->getSampleBlock());
|
||||||
|
}
|
||||||
|
|
||||||
task = std::make_unique<MergeTreeReadTask>(
|
task = std::make_unique<MergeTreeReadTask>(
|
||||||
data_part, mark_ranges_for_task, part_index_in_query, ordered_names, column_name_set,
|
data_part, mark_ranges_for_task, part_index_in_query, ordered_names, column_name_set,
|
||||||
|
@ -71,9 +71,17 @@ try
|
|||||||
storage, metadata_snapshot, data_part,
|
storage, metadata_snapshot, data_part,
|
||||||
required_columns, prewhere_info, check_columns);
|
required_columns, prewhere_info, check_columns);
|
||||||
|
|
||||||
auto size_predictor = (preferred_block_size_bytes == 0)
|
std::unique_ptr<MergeTreeBlockSizePredictor> size_predictor;
|
||||||
? nullptr
|
if (preferred_block_size_bytes)
|
||||||
: std::make_unique<MergeTreeBlockSizePredictor>(data_part, task_columns.columns.getNames(), metadata_snapshot->getSampleBlock());
|
{
|
||||||
|
const auto & required_column_names = task_columns.columns.getNames();
|
||||||
|
const auto & required_pre_column_names = task_columns.pre_columns.getNames();
|
||||||
|
NameSet complete_column_names(required_column_names.begin(), required_column_names.end());
|
||||||
|
complete_column_names.insert(required_pre_column_names.begin(), required_pre_column_names.end());
|
||||||
|
|
||||||
|
size_predictor = std::make_unique<MergeTreeBlockSizePredictor>(
|
||||||
|
data_part, Names(complete_column_names.begin(), complete_column_names.end()), metadata_snapshot->getSampleBlock());
|
||||||
|
}
|
||||||
|
|
||||||
/// will be used to distinguish between PREWHERE and WHERE columns when applying filter
|
/// will be used to distinguish between PREWHERE and WHERE columns when applying filter
|
||||||
const auto & column_names = task_columns.columns.getNames();
|
const auto & column_names = task_columns.columns.getNames();
|
||||||
|
Loading…
Reference in New Issue
Block a user