mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-14 18:32:29 +00:00
Self-review + revert test
This commit is contained in:
parent
a3a1ccc520
commit
d9b312f955
@ -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())
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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");
|
||||||
|
@ -1 +1,4 @@
|
|||||||
OK
|
OK
|
||||||
|
OK
|
||||||
|
OK
|
||||||
|
OK
|
||||||
|
@ -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'
|
||||||
|
Loading…
Reference in New Issue
Block a user