From 0e2316e0ac422e999b5f3777d457de8c4b0e283b Mon Sep 17 00:00:00 2001 From: Ivan Lezhankin Date: Thu, 21 Feb 2019 19:42:59 +0300 Subject: [PATCH] Move experimental join transformations to syntax analyzer --- dbms/src/Interpreters/SyntaxAnalyzer.cpp | 31 ++++++++++++++++++------ dbms/src/Interpreters/executeQuery.cpp | 18 -------------- 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/dbms/src/Interpreters/SyntaxAnalyzer.cpp b/dbms/src/Interpreters/SyntaxAnalyzer.cpp index eec259ed86f..e97203f7803 100644 --- a/dbms/src/Interpreters/SyntaxAnalyzer.cpp +++ b/dbms/src/Interpreters/SyntaxAnalyzer.cpp @@ -1,17 +1,20 @@ #include -#include -#include -#include -#include -#include + #include -#include #include -#include +#include #include -#include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include #include @@ -624,6 +627,18 @@ SyntaxAnalyzerResultPtr SyntaxAnalyzer::analyze( if (source_columns_set.size() != source_columns_list.size()) throw Exception("Unexpected duplicates in source columns list.", ErrorCodes::LOGICAL_ERROR); + if (settings.allow_experimental_multiple_joins_emulation) + { + JoinToSubqueryTransformVisitor::Data join_to_subs_data; + JoinToSubqueryTransformVisitor(join_to_subs_data).visit(query); + } + + if (settings.allow_experimental_cross_to_join_conversion) + { + CrossToInnerJoinVisitor::Data cross_to_inner; + CrossToInnerJoinVisitor(cross_to_inner).visit(query); + } + if (select_query) { if (const ASTTablesInSelectQueryElement * node = select_query->join()) diff --git a/dbms/src/Interpreters/executeQuery.cpp b/dbms/src/Interpreters/executeQuery.cpp index a5856fb6173..d8b4ff4ebe0 100644 --- a/dbms/src/Interpreters/executeQuery.cpp +++ b/dbms/src/Interpreters/executeQuery.cpp @@ -21,8 +21,6 @@ #include #include -#include -#include #include #include #include @@ -196,22 +194,6 @@ static std::tuple executeQueryImpl( if (!internal) logQuery(query.substr(0, settings.log_queries_cut_to_length), context); - if (!internal && settings.allow_experimental_multiple_joins_emulation) - { - JoinToSubqueryTransformVisitor::Data join_to_subs_data; - JoinToSubqueryTransformVisitor(join_to_subs_data).visit(ast); - if (join_to_subs_data.done) - logQuery(queryToString(*ast), context); - } - - if (!internal && settings.allow_experimental_cross_to_join_conversion) - { - CrossToInnerJoinVisitor::Data cross_to_inner; - CrossToInnerJoinVisitor(cross_to_inner).visit(ast); - if (cross_to_inner.done) - logQuery(queryToString(*ast), context); - } - /// Check the limits. checkASTSizeLimits(*ast, settings);