Self-review + revert test

This commit is contained in:
Igor Nikonov 2022-07-15 17:00:25 +00:00
parent a3a1ccc520
commit d9b312f955
5 changed files with 22 additions and 24 deletions

View File

@ -141,7 +141,7 @@ ReadFromMergeTree::ReadFromMergeTree(
output_stream->sort_mode = DataStream::SortMode::Chunk; output_stream->sort_mode = DataStream::SortMode::Chunk;
auto const& settings = context->getSettingsRef(); auto const& settings = context->getSettingsRef();
if ((settings.optimize_read_in_order || settings.optimize_aggregation_in_order || settings.optimize_read_in_window_order) && getInputOrderInfo()) if ((settings.optimize_read_in_order || settings.optimize_aggregation_in_order) && getInputOrderInfo(query_info))
output_stream->sort_mode = DataStream::SortMode::Port; output_stream->sort_mode = DataStream::SortMode::Port;
} }
} }
@ -966,10 +966,7 @@ MergeTreeDataSelectAnalysisResultPtr ReadFromMergeTree::selectRangesToRead(
result.total_marks_pk = total_marks_pk; result.total_marks_pk = total_marks_pk;
result.selected_rows = sum_rows; result.selected_rows = sum_rows;
const auto & input_order_info = query_info.input_order_info const auto & input_order_info = getInputOrderInfo(query_info);
? query_info.input_order_info
: (query_info.projection ? query_info.projection->input_order_info : nullptr);
if ((settings.optimize_read_in_order || settings.optimize_aggregation_in_order) && input_order_info) if ((settings.optimize_read_in_order || settings.optimize_aggregation_in_order) && input_order_info)
result.read_type = (input_order_info->direction > 0) ? ReadType::InOrder result.read_type = (input_order_info->direction > 0) ? ReadType::InOrder
: ReadType::InReverseOrder; : ReadType::InReverseOrder;
@ -989,10 +986,8 @@ void ReadFromMergeTree::setQueryInfoOrderOptimizer(std::shared_ptr<ReadInOrderOp
} }
} }
void ReadFromMergeTree::setQueryInfoInputOrderInfo(const InputOrderInfoPtr & order_info) void ReadFromMergeTree::setQueryInfoInputOrderInfo(InputOrderInfoPtr order_info)
{ {
// todo? update sort mode
if (query_info.projection) if (query_info.projection)
{ {
query_info.projection->input_order_info = order_info; query_info.projection->input_order_info = order_info;
@ -1062,7 +1057,7 @@ void ReadFromMergeTree::initializePipeline(QueryPipelineBuilder & pipeline, cons
Pipe pipe; Pipe pipe;
const auto & settings = context->getSettingsRef(); const auto & settings = context->getSettingsRef();
const auto & input_order_info = getInputOrderInfo(); const auto & input_order_info = getInputOrderInfo(query_info);
if (select.final()) if (select.final())
{ {

View File

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <Processors/QueryPlan/ISourceStep.h> #include <Processors/QueryPlan/ISourceStep.h>
#include <Storages/MergeTree/RangesInDataPart.h> #include <Storages/MergeTree/RangesInDataPart.h>
#include "Storages/SelectQueryInfo.h" #include <Storages/SelectQueryInfo.h>
namespace DB namespace DB
{ {
@ -135,17 +135,17 @@ public:
StorageMetadataPtr getStorageMetadata() const { return metadata_for_reading; } StorageMetadataPtr getStorageMetadata() const { return metadata_for_reading; }
void setQueryInfoOrderOptimizer(std::shared_ptr<ReadInOrderOptimizer> read_in_order_optimizer); void setQueryInfoOrderOptimizer(std::shared_ptr<ReadInOrderOptimizer> read_in_order_optimizer);
void setQueryInfoInputOrderInfo(const InputOrderInfoPtr & order_info); void setQueryInfoInputOrderInfo(InputOrderInfoPtr order_info);
private: private:
InputOrderInfoPtr getInputOrderInfo() const static InputOrderInfoPtr getInputOrderInfo(const SelectQueryInfo & query_info_)
{ {
return query_info.input_order_info ? query_info.input_order_info return query_info_.input_order_info ? query_info_.input_order_info
: (query_info.projection ? query_info.projection->input_order_info : nullptr); : (query_info_.projection ? query_info_.projection->input_order_info : nullptr);
} }
int getSortDirection() const int getSortDirection() const
{ {
const InputOrderInfoPtr & order_info = getInputOrderInfo(); const InputOrderInfoPtr & order_info = getInputOrderInfo(query_info);
if (order_info) if (order_info)
return order_info->direction; return order_info->direction;

View File

@ -106,6 +106,12 @@ void SortingStep::updateLimit(size_t limit_)
} }
} }
void SortingStep::convertToFinishSorting(SortDescription prefix_description_)
{
type = Type::FinishSorting;
prefix_description = std::move(prefix_description_);
}
void SortingStep::finishSorting(QueryPipelineBuilder & pipeline, const SortDescription & input_sort_desc) void SortingStep::finishSorting(QueryPipelineBuilder & pipeline, const SortDescription & input_sort_desc)
{ {
pipeline.addSimpleTransform( pipeline.addSimpleTransform(
@ -220,12 +226,6 @@ void SortingStep::fullSort(QueryPipelineBuilder & pipeline, const bool skip_part
} }
} }
void SortingStep::convertToFinishSorting(SortDescription prefix_description_)
{
type = Type::FinishSorting;
prefix_description = std::move(prefix_description_);
}
static Poco::Logger * getLogger() static Poco::Logger * getLogger()
{ {
static Poco::Logger & logger = Poco::Logger::get("SortingStep"); static Poco::Logger & logger = Poco::Logger::get("SortingStep");

View File

@ -19,13 +19,13 @@ $CLICKHOUSE_CLIENT -q "create table ${name}_n_x engine=MergeTree order by (n, x)
$CLICKHOUSE_CLIENT -q "optimize table ${name}_n final" $CLICKHOUSE_CLIENT -q "optimize table ${name}_n final"
$CLICKHOUSE_CLIENT -q "optimize table ${name}_n_x final" $CLICKHOUSE_CLIENT -q "optimize table ${name}_n_x final"
$CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n SETTINGS optimize_read_in_window_order=0, max_memory_usage=$max_memory_usage, max_threads=1 format Null" $CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n SETTINGS optimize_read_in_window_order=0, max_memory_usage=$max_memory_usage, max_threads=1 format Null" 2>&1 | grep -F -q "MEMORY_LIMIT_EXCEEDED" && echo 'OK' || echo 'FAIL'
$CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null" $CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null"
$CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=0, max_memory_usage=$max_memory_usage, max_threads=1 format Null" $CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=0, max_memory_usage=$max_memory_usage, max_threads=1 format Null" 2>&1 | grep -F -q "MEMORY_LIMIT_EXCEEDED" && echo 'OK' || echo 'FAIL'
$CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null" $CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null"
$CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (PARTITION BY n ORDER BY x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=0, max_memory_usage=$max_memory_usage, max_threads=1 format Null" $CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (PARTITION BY n ORDER BY x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=0, max_memory_usage=$max_memory_usage, max_threads=1 format Null" 2>&1 | grep -F -q "MEMORY_LIMIT_EXCEEDED" && echo 'OK' || echo 'FAIL'
$CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (PARTITION BY n ORDER BY x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null" $CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (PARTITION BY n ORDER BY x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null"
$CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (PARTITION BY n+x%2 ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null" 2>&1 | grep -F -q "MEMORY_LIMIT_EXCEEDED" && echo 'OK' || echo 'FAIL' $CLICKHOUSE_CLIENT -q "select n, sum(x) OVER (PARTITION BY n+x%2 ORDER BY n, x ROWS BETWEEN 100 PRECEDING AND CURRENT ROW) from ${name}_n_x SETTINGS optimize_read_in_window_order=1, max_memory_usage=$max_memory_usage, max_threads=1 format Null" 2>&1 | grep -F -q "MEMORY_LIMIT_EXCEEDED" && echo 'OK' || echo 'FAIL'