Addressing review comments

This commit is contained in:
Igor Nikonov 2022-07-01 22:50:00 +00:00
parent 488ee75fc4
commit 9ef8ff5a31
2 changed files with 7 additions and 5 deletions

View File

@ -82,7 +82,8 @@ DistinctStep::DistinctStep(
void DistinctStep::transformPipeline(QueryPipelineBuilder & pipeline, const BuildQueryPipelineSettings &) void DistinctStep::transformPipeline(QueryPipelineBuilder & pipeline, const BuildQueryPipelineSettings &)
{ {
if (checkColumnsAlreadyDistinct(columns, input_streams.front().distinct_columns)) const auto & input_stream = input_streams.back();
if (checkColumnsAlreadyDistinct(columns, input_stream.distinct_columns))
return; return;
if (!pre_distinct) if (!pre_distinct)
@ -90,7 +91,6 @@ void DistinctStep::transformPipeline(QueryPipelineBuilder & pipeline, const Buil
if (optimize_distinct_in_order) if (optimize_distinct_in_order)
{ {
const auto & input_stream = input_streams.back();
SortDescription distinct_sort_desc = getSortDescription(input_stream.sort_description, columns); SortDescription distinct_sort_desc = getSortDescription(input_stream.sort_description, columns);
if (!distinct_sort_desc.empty()) if (!distinct_sort_desc.empty())
{ {
@ -109,8 +109,10 @@ void DistinctStep::transformPipeline(QueryPipelineBuilder & pipeline, const Buil
return; return;
} }
/// final distinct for sorted stream (sorting inside and among chunks) /// final distinct for sorted stream (sorting inside and among chunks)
if (input_stream.has_single_port) if (input_stream.sort_mode == DataStream::SortMode::Stream)
{ {
assert(input_stream.has_single_port);
pipeline.addSimpleTransform( pipeline.addSimpleTransform(
[&](const Block & header, QueryPipelineBuilder::StreamType stream_type) -> ProcessorPtr [&](const Block & header, QueryPipelineBuilder::StreamType stream_type) -> ProcessorPtr
{ {

View File

@ -1,7 +1,7 @@
<test> <test>
<!-- high cardinality --> <!-- high cardinality -->
<create_query>CREATE TABLE distinct_cardinality_high (high UInt64, medium UInt64, low UInt64) ENGINE MergeTree() ORDER BY (high, medium)</create_query> <create_query>CREATE TABLE distinct_cardinality_high (high UInt64, medium UInt64, low UInt64) ENGINE MergeTree() ORDER BY (high, medium)</create_query>
<fill_query>INSERT INTO distinct_cardinality_high SELECT number % 10000, number % 1000, number % 100 FROM numbers_mt(1e8)</fill_query> <fill_query>INSERT INTO distinct_cardinality_high SELECT number % 1e6, number % 1e4, number % 1e2 FROM numbers_mt(1e8)</fill_query>
<query>SELECT DISTINCT high FROM distinct_cardinality_high FORMAT Null</query> <query>SELECT DISTINCT high FROM distinct_cardinality_high FORMAT Null</query>
<query>SELECT DISTINCT high, low FROM distinct_cardinality_high FORMAT Null</query> <query>SELECT DISTINCT high, low FROM distinct_cardinality_high FORMAT Null</query>
@ -17,7 +17,7 @@
<!-- low cardinality --> <!-- low cardinality -->
<create_query>CREATE TABLE distinct_cardinality_low (low UInt64, medium UInt64, high UInt64) ENGINE MergeTree() ORDER BY (low, medium)</create_query> <create_query>CREATE TABLE distinct_cardinality_low (low UInt64, medium UInt64, high UInt64) ENGINE MergeTree() ORDER BY (low, medium)</create_query>
<fill_query>INSERT INTO distinct_cardinality_low SELECT number % 100, number % 1000, number % 10000 FROM numbers_mt(1e8)</fill_query> <fill_query>INSERT INTO distinct_cardinality_low SELECT number % 1e2, number % 1e4, number % 1e6 FROM numbers_mt(1e8)</fill_query>
<query>SELECT DISTINCT low FROM distinct_cardinality_low FORMAT Null</query> <query>SELECT DISTINCT low FROM distinct_cardinality_low FORMAT Null</query>
<query>SELECT DISTINCT low, medium FROM distinct_cardinality_low FORMAT Null</query> <query>SELECT DISTINCT low, medium FROM distinct_cardinality_low FORMAT Null</query>