minor fix (remove logic dependent on partial_merge_join setting)

This commit is contained in:
chertus 2020-02-19 14:20:35 +03:00
parent 74a5227ac4
commit f748427ffd

View File

@ -50,6 +50,7 @@
#include <Interpreters/JoinToSubqueryTransformVisitor.h> #include <Interpreters/JoinToSubqueryTransformVisitor.h>
#include <Interpreters/CrossToInnerJoinVisitor.h> #include <Interpreters/CrossToInnerJoinVisitor.h>
#include <Interpreters/AnalyzedJoin.h> #include <Interpreters/AnalyzedJoin.h>
#include <Interpreters/Join.h>
#include <Storages/MergeTree/MergeTreeData.h> #include <Storages/MergeTree/MergeTreeData.h>
#include <Storages/MergeTree/MergeTreeWhereOptimizer.h> #include <Storages/MergeTree/MergeTreeWhereOptimizer.h>
@ -862,6 +863,7 @@ void InterpreterSelectQuery::executeImpl(TPipeline & pipeline, const BlockInputS
if (expressions.hasJoin()) if (expressions.hasJoin())
{ {
Block header_before_join; Block header_before_join;
JoinPtr join = expressions.before_join->getTableJoinAlgo();
if constexpr (pipeline_with_processors) if constexpr (pipeline_with_processors)
{ {
@ -879,10 +881,11 @@ void InterpreterSelectQuery::executeImpl(TPipeline & pipeline, const BlockInputS
{ {
bool on_totals = type == QueryPipeline::StreamType::Totals; bool on_totals = type == QueryPipeline::StreamType::Totals;
std::shared_ptr<IProcessor> ret; std::shared_ptr<IProcessor> ret;
if (settings.partial_merge_join) if (!join || typeid_cast<Join *>(join.get()))
ret = std::make_shared<InflatingExpressionTransform>(header, expressions.before_join, on_totals, default_totals);
else
ret = std::make_shared<ExpressionTransform>(header, expressions.before_join, on_totals, default_totals); ret = std::make_shared<ExpressionTransform>(header, expressions.before_join, on_totals, default_totals);
else
ret = std::make_shared<InflatingExpressionTransform>(header, expressions.before_join, on_totals, default_totals);
return ret; return ret;
}); });
} }
@ -894,7 +897,7 @@ void InterpreterSelectQuery::executeImpl(TPipeline & pipeline, const BlockInputS
stream = std::make_shared<InflatingExpressionBlockInputStream>(stream, expressions.before_join); stream = std::make_shared<InflatingExpressionBlockInputStream>(stream, expressions.before_join);
} }
if (JoinPtr join = expressions.before_join->getTableJoinAlgo()) if (join)
{ {
Block join_result_sample = ExpressionBlockInputStream( Block join_result_sample = ExpressionBlockInputStream(
std::make_shared<OneBlockInputStream>(header_before_join), expressions.before_join).getHeader(); std::make_shared<OneBlockInputStream>(header_before_join), expressions.before_join).getHeader();