Skip to content

Commit

Permalink
Merge pull request #57247 from ClickHouse/backport/23.8/57196
Browse files Browse the repository at this point in the history
Backport #57196 to 23.8: Fix incorrect JOIN plan optimization with partially materialized normal projection
  • Loading branch information
antonio2368 committed Nov 29, 2023
2 parents f2ff5b0 + ffe745c commit 7595e7b
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ bool optimizeUseNormalProjections(Stack & stack, QueryPlan::Nodes & nodes)
}
else
{
const auto & main_stream = iter->node->children.front()->step->getOutputStream();
const auto & main_stream = iter->node->children[iter->next_child - 1]->step->getOutputStream();
const auto * proj_stream = &next_node->step->getOutputStream();

if (auto materializing = makeMaterializingDAG(proj_stream->header, main_stream.header))
Expand All @@ -252,7 +252,7 @@ bool optimizeUseNormalProjections(Stack & stack, QueryPlan::Nodes & nodes)
auto & union_node = nodes.emplace_back();
DataStreams input_streams = {main_stream, *proj_stream};
union_node.step = std::make_unique<UnionStep>(std::move(input_streams));
union_node.children = {iter->node->children.front(), next_node};
union_node.children = {iter->node->children[iter->next_child - 1], next_node};
iter->node->children[iter->next_child - 1] = &union_node;
}

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;

CREATE TABLE t1 (id UInt32, s String) Engine = MergeTree ORDER BY id;
CREATE TABLE t2 (id1 UInt32, id2 UInt32) Engine = MergeTree ORDER BY id1 SETTINGS index_granularity = 1;
INSERT INTO t2 SELECT number, number from numbers(100);
ALTER TABLE t2 ADD PROJECTION proj (SELECT id2 ORDER BY id2);
INSERT INTO t2 SELECT number, number from numbers(100);

SELECT s FROM t1 as lhs LEFT JOIN (SELECT * FROM t2 WHERE id2 = 2) as rhs ON lhs.id = rhs.id2;

DROP TABLE t1;
DROP TABLE t2;

0 comments on commit 7595e7b

Please sign in to comment.