提交 7d011561 编写于 作者: A Alexey Milovidov

dbms: addition to prev. revision [#CONV-8665].

上级 06946679
......@@ -23,7 +23,7 @@ public:
BlockIO execute()
{
return executeQuery(getRewrittenQuery(), context);
return executeQuery(getRewrittenQuery(), context, true);
}
BlockInputStreamPtr executeAndFormat(WriteBuffer & buf)
......@@ -31,7 +31,7 @@ public:
String query = getRewrittenQuery();
ReadBufferFromString in(query);
BlockInputStreamPtr query_plan;
executeQuery(in, buf, context, query_plan);
executeQuery(in, buf, context, query_plan, true);
return query_plan;
}
......
......@@ -16,6 +16,7 @@ void executeQuery(
WriteBuffer & ostr, /// Куда писать результат
Context & context, /// БД, таблицы, типы данных, движки таблиц, функции, агрегатные функции...
BlockInputStreamPtr & query_plan, /// Сюда может быть записано описание, как выполнялся запрос
bool internal = false, /// Если true - значит запрос порождён из другого запроса, и не нужно его регистировать в ProcessList-е.
QueryProcessingStage::Enum stage = QueryProcessingStage::Complete); /// До какой стадии выполнять SELECT запрос.
......@@ -36,6 +37,7 @@ void executeQuery(
BlockIO executeQuery(
const String & query, /// Текст запроса, без данных INSERT-а (если есть). Данные INSERT-а следует писать в BlockIO::out.
Context & context,
bool internal = false,
QueryProcessingStage::Enum stage = QueryProcessingStage::Complete);
}
......@@ -48,7 +48,7 @@ String InterpreterShowTablesQuery::getRewrittenQuery()
BlockIO InterpreterShowTablesQuery::execute()
{
return executeQuery(getRewrittenQuery(), context);
return executeQuery(getRewrittenQuery(), context, true);
}
......@@ -57,7 +57,7 @@ BlockInputStreamPtr InterpreterShowTablesQuery::executeAndFormat(WriteBuffer & b
String query = getRewrittenQuery();
ReadBufferFromString in(query);
BlockInputStreamPtr query_plan;
executeQuery(in, buf, context, query_plan);
executeQuery(in, buf, context, query_plan, true);
return query_plan;
}
......
......@@ -22,6 +22,7 @@ void executeQuery(
WriteBuffer & ostr,
Context & context,
BlockInputStreamPtr & query_plan,
bool internal,
QueryProcessingStage::Enum stage)
{
ParserQuery parser;
......@@ -72,7 +73,7 @@ void executeQuery(
/// Положим запрос в список процессов. Но запрос SHOW PROCESSLIST класть не будем.
ProcessList::EntryPtr process_list_entry;
if (NULL == dynamic_cast<const ASTShowProcesslistQuery *>(&*ast))
if (!internal && NULL == dynamic_cast<const ASTShowProcesslistQuery *>(&*ast))
process_list_entry = context.getProcessList().insert(query);
/// Проверка ограничений.
......@@ -101,6 +102,7 @@ void executeQuery(
BlockIO executeQuery(
const String & query,
Context & context,
bool internal,
QueryProcessingStage::Enum stage)
{
ParserQuery parser;
......@@ -121,12 +123,6 @@ BlockIO executeQuery(
+ ", expected " + (parse_res ? "end of query" : expected) + ".",
ErrorCodes::SYNTAX_ERROR);
BlockIO res;
/// Положим запрос в список процессов. Но запрос SHOW PROCESSLIST класть не будем.
if (NULL == dynamic_cast<const ASTShowProcesslistQuery *>(&*ast))
res.process_list_entry = context.getProcessList().insert(query);
/// Проверка ограничений.
checkLimits(*ast, context.getSettingsRef().limits);
......@@ -135,6 +131,8 @@ BlockIO executeQuery(
quota.checkExceeded(current_time);
BlockIO res;
try
{
InterpreterQuery interpreter(ast, context, stage);
......@@ -146,6 +144,10 @@ BlockIO executeQuery(
throw;
}
/// Положим запрос в список процессов. Но запрос SHOW PROCESSLIST класть не будем.
if (!internal && NULL == dynamic_cast<const ASTShowProcesslistQuery *>(&*ast))
res.process_list_entry = context.getProcessList().insert(query);
quota.addQuery(current_time);
return res;
}
......
......@@ -407,7 +407,7 @@ void TCPHandler::receiveQuery()
LOG_DEBUG(log, "Query: " << state.query);
LOG_DEBUG(log, "Requested stage: " << QueryProcessingStage::toString(stage));
state.io = executeQuery(state.query, query_context, state.stage);
state.io = executeQuery(state.query, query_context, false, state.stage);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册