dbms: addition to SETTINGS [#METR-16354].

This commit is contained in:
Alexey Milovidov 2015-06-06 23:00:08 +03:00
parent 557b60a19d
commit 51be2693ee
2 changed files with 1 additions and 13 deletions

View File

@ -130,15 +130,12 @@ private:
void ignoreWithTotals(); void ignoreWithTotals();
/** Если в запросе SELECT есть секция SETTINGS, то применить настройки из неё и удалить секцию SETTINGS. /** Если в запросе SELECT есть секция SETTINGS, то применить настройки из неё.
* Затем достать настройки из context и поместить их в settings. * Затем достать настройки из context и поместить их в settings.
* *
* Секция SETTINGS - настройки для конкретного запроса. * Секция SETTINGS - настройки для конкретного запроса.
* Обычно настройки могут быть переданы другими способами, не внутри запроса. * Обычно настройки могут быть переданы другими способами, не внутри запроса.
* Но использование такой секции оправдано, если нужно задать настройки для одного подзапроса. * Но использование такой секции оправдано, если нужно задать настройки для одного подзапроса.
*
* При распределённой обработке запроса, секция SETTINGS не будет передана внутри запроса,
* а настройки будут переданы отдельно, при отправке запроса.
*/ */
void initSettings(); void initSettings();

View File

@ -1034,17 +1034,8 @@ void InterpreterSelectQuery::ignoreWithTotals()
void InterpreterSelectQuery::initSettings() void InterpreterSelectQuery::initSettings()
{ {
if (query.settings) if (query.settings)
{
InterpreterSetQuery(query.settings, context).executeForCurrentContext(); InterpreterSetQuery(query.settings, context).executeForCurrentContext();
auto it = std::find(query.children.begin(), query.children.end(), query.settings);
if (query.children.end() == it)
throw Exception("Logical error: cannot find query.settings element in query.children", ErrorCodes::LOGICAL_ERROR);
query.children.erase(it);
query.settings = nullptr;
}
settings = context.getSettings(); settings = context.getSettings();
} }