提交 c6b9580e 编写于 作者: N Nikolai Kochetov 提交者: Alexey Milovidov

Create local context for query analyzing in PushingToViewsBlockOutputStream.

上级 df17eda9
......@@ -66,9 +66,13 @@ PushingToViewsBlockOutputStream::PushingToViewsBlockOutputStream(
std::unique_ptr<ASTInsertQuery> insert = std::make_unique<ASTInsertQuery>();
insert->table_id = inner_table_id;
Context local_context = *views_context;
local_context.addViewSource(
StorageValues::create(
storage->getStorageID(), storage->getColumns(), Block(), storage->getVirtuals()));
/// Get list of columns we get from select query.
auto header = InterpreterSelectQuery(query, *views_context, SelectQueryOptions().analyze())
.getSampleBlock();
auto header = InterpreterSelectQuery(query, local_context, SelectQueryOptions().analyze()).getSampleBlock();
/// Insert only columns returned by select.
auto list = std::make_shared<ASTExpressionList>();
......@@ -81,7 +85,7 @@ PushingToViewsBlockOutputStream::PushingToViewsBlockOutputStream(
insert->columns = std::move(list);
ASTPtr insert_query_ptr(insert.release());
InterpreterInsertQuery interpreter(insert_query_ptr, *views_context);
InterpreterInsertQuery interpreter(insert_query_ptr, local_context);
BlockIO io = interpreter.execute();
out = io.out;
}
......
......@@ -801,8 +801,7 @@ SyntaxAnalyzerResultPtr SyntaxAnalyzer::analyzeSelect(
removeUnneededColumnsFromSelectClause(select_query, required_result_columns, remove_duplicates);
/// Executing scalar subqueries - replacing them with constant values.
if (!select_options.only_analyze)
executeScalarSubqueries(query, context, subquery_depth, result.scalars);
executeScalarSubqueries(query, context, subquery_depth, result.scalars);
{
optimizeIf(query, result.aliases, settings.optimize_if_chain_to_miltiif);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册