From ca1957ab82c52e05e295d16a18de4ebadc4ae3f2 Mon Sep 17 00:00:00 2001 From: Nikolai Kochetov Date: Fri, 21 Jul 2017 20:45:51 +0300 Subject: [PATCH] ignore preferred_max_column_in_block_size_bytes if zero [#CLICKHOUSE-3170] --- .../MergeTreeBaseBlockInputStream.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/dbms/src/Storages/MergeTree/MergeTreeBaseBlockInputStream.cpp b/dbms/src/Storages/MergeTree/MergeTreeBaseBlockInputStream.cpp index 47bca1ad0f..168b746c99 100644 --- a/dbms/src/Storages/MergeTree/MergeTreeBaseBlockInputStream.cpp +++ b/dbms/src/Storages/MergeTree/MergeTreeBaseBlockInputStream.cpp @@ -87,13 +87,17 @@ Block MergeTreeBaseBlockInputStream::readFromPart() if (!task.size_predictor) return max_block_size_rows; - size_t rows_to_read_for_block = std::max(index_granularity, task.size_predictor->estimateNumRows(preferred_block_size_bytes)); - size_t rows_to_read_for_max_size_column - = task.size_predictor->estimateNumRowsForMaxSizeColumn(preferred_max_column_in_block_size_bytes); - double filtration_ratio = std::max(min_filtration_ratio, 1.0 - task.size_predictor->filtered_rows_ratio); - size_t rows_to_read_for_max_size_column_with_filtration - = static_cast(rows_to_read_for_max_size_column / filtration_ratio); - size_t rows_to_read = std::min(rows_to_read_for_block, rows_to_read_for_max_size_column_with_filtration); + size_t rows_to_read = std::max(index_granularity, task.size_predictor->estimateNumRows(preferred_block_size_bytes)); + + if (preferred_max_column_in_block_size_bytes) + { + size_t rows_to_read_for_max_size_column + = task.size_predictor->estimateNumRowsForMaxSizeColumn(preferred_max_column_in_block_size_bytes); + double filtration_ratio = std::max(min_filtration_ratio, 1.0 - task.size_predictor->filtered_rows_ratio); + size_t rows_to_read_for_max_size_column_with_filtration + = static_cast(rows_to_read_for_max_size_column / filtration_ratio); + rows_to_read = std::min(rows_to_read, rows_to_read_for_max_size_column_with_filtration); + } size_t unread_rows_in_current_granule = reader.unreadRowsInCurrentGranule(); if (unread_rows_in_current_granule >= rows_to_read) -- GitLab