mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-22 09:40:49 +00:00
dbms: added pretty-formatting for GLOBAL IN; pedantic modifications in comments [#METR-10071].
This commit is contained in:
parent
2c14e9be41
commit
26848b6803
@ -97,7 +97,7 @@ public:
|
|||||||
/// Если ast - запрос SELECT, получает имена (алиасы) и типы столбцов из секции SELECT.
|
/// Если ast - запрос SELECT, получает имена (алиасы) и типы столбцов из секции SELECT.
|
||||||
Block getSelectSampleBlock();
|
Block getSelectSampleBlock();
|
||||||
|
|
||||||
/// Все новые временные таблицы, полученные при выполнении подзапросов Global In
|
/// Все новые временные таблицы, полученные при выполнении подзапросов GLOBAL IN.
|
||||||
std::vector<StoragePtr> external_tables;
|
std::vector<StoragePtr> external_tables;
|
||||||
private:
|
private:
|
||||||
typedef std::set<String> NamesSet;
|
typedef std::set<String> NamesSet;
|
||||||
@ -261,12 +261,12 @@ private:
|
|||||||
void normalizeTree();
|
void normalizeTree();
|
||||||
void normalizeTreeImpl(ASTPtr & ast, MapOfASTs & finished_asts, SetOfASTs & current_asts, std::string current_alias, bool in_sign_rewritten);
|
void normalizeTreeImpl(ASTPtr & ast, MapOfASTs & finished_asts, SetOfASTs & current_asts, std::string current_alias, bool in_sign_rewritten);
|
||||||
|
|
||||||
/// Обходит запрос и сохраняет найденные глобальные функции (например Global in)
|
/// Обходит запрос и сохраняет найденные глобальные функции (например GLOBAL IN)
|
||||||
void findGlobalFunctions(ASTPtr & ast, std::vector<ASTPtr> & global_nodes);
|
void findGlobalFunctions(ASTPtr & ast, std::vector<ASTPtr> & global_nodes);
|
||||||
|
|
||||||
/// Превратить перечисление значений или подзапрос в ASTSet. node - функция in или notIn.
|
/// Превратить перечисление значений или подзапрос в ASTSet. node - функция in или notIn.
|
||||||
void makeSet(ASTFunction * node, const Block & sample_block);
|
void makeSet(ASTFunction * node, const Block & sample_block);
|
||||||
/// Выполнить подзапрос в секции global in и запомнить результат во временную таблицу типа memory
|
/// Выполнить подзапрос в секции GLOBAL IN и запомнить результат во временную таблицу типа memory
|
||||||
/// Все новые временные таблицы хранятся в переменной external_tables
|
/// Все новые временные таблицы хранятся в переменной external_tables
|
||||||
void addExternalStorage(ASTFunction * node, size_t & name_id);
|
void addExternalStorage(ASTFunction * node, size_t & name_id);
|
||||||
|
|
||||||
|
@ -569,7 +569,7 @@ void ExpressionAnalyzer::addExternalStorage(ASTFunction * node, size_t & name_id
|
|||||||
|
|
||||||
bool parse_res = parser.parse(pos, end, subquery, expected);
|
bool parse_res = parser.parse(pos, end, subquery, expected);
|
||||||
if (!parse_res)
|
if (!parse_res)
|
||||||
throw Exception("Error in parsing select query while creating set for table " + table->name + ".",
|
throw Exception("Error in parsing SELECT query while creating set for table " + table->name + ".",
|
||||||
ErrorCodes::LOGICAL_ERROR);
|
ErrorCodes::LOGICAL_ERROR);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -592,7 +592,7 @@ void ExpressionAnalyzer::addExternalStorage(ASTFunction * node, size_t & name_id
|
|||||||
external_tables.push_back(external_storage);
|
external_tables.push_back(external_storage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw Exception("Global in (notIn) supports only select data.", ErrorCodes::BAD_ARGUMENTS);
|
throw Exception("GLOBAL [NOT] IN supports only SELECT data.", ErrorCodes::BAD_ARGUMENTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ void InterpreterSelectQuery::init(BlockInputStreamPtr input_, const NamesAndType
|
|||||||
|
|
||||||
query_analyzer = new ExpressionAnalyzer(query_ptr, context, storage, subquery_depth);
|
query_analyzer = new ExpressionAnalyzer(query_ptr, context, storage, subquery_depth);
|
||||||
|
|
||||||
/// Выполняем все Global in подзапросы, результаты будут сохранены в query_analyzer->external_tables
|
/// Выполняем все GLOBAL IN подзапросы, результаты будут сохранены в query_analyzer->external_tables
|
||||||
query_analyzer->processGlobalOperations();
|
query_analyzer->processGlobalOperations();
|
||||||
|
|
||||||
/// Сохраняем в query context новые временные таблицы
|
/// Сохраняем в query context новые временные таблицы
|
||||||
|
@ -498,6 +498,8 @@ void formatAST(const ASTFunction & ast, std::ostream & s, size_t indent, bool
|
|||||||
"notLike", " NOT LIKE ",
|
"notLike", " NOT LIKE ",
|
||||||
"in", " IN ",
|
"in", " IN ",
|
||||||
"notIn", " NOT IN ",
|
"notIn", " NOT IN ",
|
||||||
|
"globalIn", " GLOBAL IN ",
|
||||||
|
"globalNotIn", " GLOBAL NOT IN ",
|
||||||
nullptr
|
nullptr
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user