Skip to content

Commit

Permalink
Backport #48998 to 23.3: Fix incorrect createColumn call on join clause
Browse files Browse the repository at this point in the history
  • Loading branch information
robot-clickhouse committed Sep 7, 2023
1 parent 7ac4ef9 commit 5dcb1ce
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
12 changes: 4 additions & 8 deletions src/Interpreters/ExpressionAnalyzer.cpp
Expand Up @@ -1020,13 +1020,6 @@ static std::shared_ptr<IJoin> chooseJoinAlgorithm(
{
const auto & settings = context->getSettings();

Block left_sample_block(left_sample_columns);
for (auto & column : left_sample_block)
{
if (!column.column)
column.column = column.type->createColumn();
}

Block right_sample_block = joined_plan->getCurrentDataStream().header;

std::vector<String> tried_algorithms;
Expand Down Expand Up @@ -1072,7 +1065,10 @@ static std::shared_ptr<IJoin> chooseJoinAlgorithm(
if (analyzed_join->isEnabledAlgorithm(JoinAlgorithm::GRACE_HASH))
{
tried_algorithms.push_back(toString(JoinAlgorithm::GRACE_HASH));
if (GraceHashJoin::isSupported(analyzed_join))

// Grace hash join requires that columns exist in left_sample_block.
Block left_sample_block(left_sample_columns);
if (sanitizeBlock(left_sample_block, false) && GraceHashJoin::isSupported(analyzed_join))
return std::make_shared<GraceHashJoin>(context, analyzed_join, left_sample_block, right_sample_block, context->getTempDataOnDisk());
}

Expand Down
@@ -0,0 +1 @@
1
@@ -0,0 +1,8 @@
select count(*)
from (
select 1 as id, [1, 2, 3] as arr
) as sessions
ASOF LEFT JOIN (
select 1 as session_id, 4 as id
) as visitors
ON visitors.session_id <= sessions.id AND arrayFirst(a -> a, arrayMap((a) -> a, sessions.arr)) = visitors.id

0 comments on commit 5dcb1ce

Please sign in to comment.