未验证 提交 cb486da9 编写于 作者: A alexey-milovidov 提交者: GitHub

Merge pull request #4852 from zhang2014/improvement/const_interpreter

Const context for insert interpreter
...@@ -18,7 +18,7 @@ namespace ErrorCodes ...@@ -18,7 +18,7 @@ namespace ErrorCodes
InputStreamFromASTInsertQuery::InputStreamFromASTInsertQuery( InputStreamFromASTInsertQuery::InputStreamFromASTInsertQuery(
const ASTPtr & ast, ReadBuffer * input_buffer_tail_part, const Block & header, Context & context) const ASTPtr & ast, ReadBuffer * input_buffer_tail_part, const Block & header, const Context & context)
{ {
const auto * ast_insert_query = ast->as<ASTInsertQuery>(); const auto * ast_insert_query = ast->as<ASTInsertQuery>();
...@@ -28,8 +28,6 @@ InputStreamFromASTInsertQuery::InputStreamFromASTInsertQuery( ...@@ -28,8 +28,6 @@ InputStreamFromASTInsertQuery::InputStreamFromASTInsertQuery(
String format = ast_insert_query->format; String format = ast_insert_query->format;
if (format.empty()) if (format.empty())
format = "Values"; format = "Values";
if (ast_insert_query->settings_ast)
InterpreterSetQuery(ast_insert_query->settings_ast, context).executeForCurrentContext();
/// Data could be in parsed (ast_insert_query.data) and in not parsed yet (input_buffer_tail_part) part of query. /// Data could be in parsed (ast_insert_query.data) and in not parsed yet (input_buffer_tail_part) part of query.
......
...@@ -19,7 +19,7 @@ class Context; ...@@ -19,7 +19,7 @@ class Context;
class InputStreamFromASTInsertQuery : public IBlockInputStream class InputStreamFromASTInsertQuery : public IBlockInputStream
{ {
public: public:
InputStreamFromASTInsertQuery(const ASTPtr & ast, ReadBuffer * input_buffer_tail_part, const Block & header, Context & context); InputStreamFromASTInsertQuery(const ASTPtr & ast, ReadBuffer * input_buffer_tail_part, const Block & header, const Context & context);
Block readImpl() override { return res_stream->read(); } Block readImpl() override { return res_stream->read(); }
void readPrefixImpl() override { return res_stream->readPrefix(); } void readPrefixImpl() override { return res_stream->readPrefix(); }
......
...@@ -36,7 +36,7 @@ namespace ErrorCodes ...@@ -36,7 +36,7 @@ namespace ErrorCodes
InterpreterInsertQuery::InterpreterInsertQuery( InterpreterInsertQuery::InterpreterInsertQuery(
const ASTPtr & query_ptr_, Context & context_, bool allow_materialized_) const ASTPtr & query_ptr_, const Context & context_, bool allow_materialized_)
: query_ptr(query_ptr_), context(context_), allow_materialized(allow_materialized_) : query_ptr(query_ptr_), context(context_), allow_materialized(allow_materialized_)
{ {
} }
......
...@@ -15,7 +15,7 @@ namespace DB ...@@ -15,7 +15,7 @@ namespace DB
class InterpreterInsertQuery : public IInterpreter class InterpreterInsertQuery : public IInterpreter
{ {
public: public:
InterpreterInsertQuery(const ASTPtr & query_ptr_, Context & context_, bool allow_materialized_ = false); InterpreterInsertQuery(const ASTPtr & query_ptr_, const Context & context_, bool allow_materialized_ = false);
/** Prepare a request for execution. Return block streams /** Prepare a request for execution. Return block streams
* - the stream into which you can write data to execute the query, if INSERT; * - the stream into which you can write data to execute the query, if INSERT;
...@@ -32,7 +32,7 @@ private: ...@@ -32,7 +32,7 @@ private:
void checkAccess(const ASTInsertQuery & query); void checkAccess(const ASTInsertQuery & query);
ASTPtr query_ptr; ASTPtr query_ptr;
Context & context; const Context & context;
bool allow_materialized; bool allow_materialized;
}; };
......
...@@ -170,6 +170,10 @@ static std::tuple<ASTPtr, BlockIO> executeQueryImpl( ...@@ -170,6 +170,10 @@ static std::tuple<ASTPtr, BlockIO> executeQueryImpl(
ast = parseQuery(parser, begin, end, "", max_query_size); ast = parseQuery(parser, begin, end, "", max_query_size);
auto * insert_query = ast->as<ASTInsertQuery>(); auto * insert_query = ast->as<ASTInsertQuery>();
if (insert_query && insert_query->settings_ast)
InterpreterSetQuery(insert_query->settings_ast, context).executeForCurrentContext();
if (insert_query && insert_query->data) if (insert_query && insert_query->data)
{ {
query_end = insert_query->data; query_end = insert_query->data;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册