mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 10:02:01 +00:00
dbms: Server: cosmetic changes [#METR-14875]
This commit is contained in:
parent
64c8535382
commit
ef13e0203e
@ -239,10 +239,12 @@ void LogicalExpressionsOptimizer::addInExpression(const DisjunctiveEqualityChain
|
|||||||
|
|
||||||
void LogicalExpressionsOptimizer::cleanupOrExpressions()
|
void LogicalExpressionsOptimizer::cleanupOrExpressions()
|
||||||
{
|
{
|
||||||
|
/// Сохраняет для каждой оптимизированной OR-цепочки итератор на первый элемент
|
||||||
|
/// списка операндов, которые надо удалить.
|
||||||
std::unordered_map<ASTFunction *, ASTs::iterator> garbage_map;
|
std::unordered_map<ASTFunction *, ASTs::iterator> garbage_map;
|
||||||
garbage_map.reserve(processed_count);
|
|
||||||
|
|
||||||
/// Инициализация.
|
/// Инициализация.
|
||||||
|
garbage_map.reserve(processed_count);
|
||||||
for (const auto & chain : disjunctive_equality_chains_map)
|
for (const auto & chain : disjunctive_equality_chains_map)
|
||||||
{
|
{
|
||||||
const auto & equalities = chain.second;
|
const auto & equalities = chain.second;
|
||||||
@ -269,8 +271,8 @@ void LogicalExpressionsOptimizer::cleanupOrExpressions()
|
|||||||
if (it == garbage_map.end())
|
if (it == garbage_map.end())
|
||||||
throw Exception("Garbage map is corrupted", ErrorCodes::LOGICAL_ERROR);
|
throw Exception("Garbage map is corrupted", ErrorCodes::LOGICAL_ERROR);
|
||||||
|
|
||||||
auto & last = it->second;
|
auto & first_erased = it->second;
|
||||||
last = std::remove_if(operands.begin(), last, [&](const ASTPtr & operand)
|
first_erased = std::remove_if(operands.begin(), first_erased, [&](const ASTPtr & operand)
|
||||||
{
|
{
|
||||||
return std::binary_search(equality_functions.begin(), equality_functions.end(), &*operand);
|
return std::binary_search(equality_functions.begin(), equality_functions.end(), &*operand);
|
||||||
});
|
});
|
||||||
@ -280,10 +282,10 @@ void LogicalExpressionsOptimizer::cleanupOrExpressions()
|
|||||||
for (const auto & entry : garbage_map)
|
for (const auto & entry : garbage_map)
|
||||||
{
|
{
|
||||||
auto function = entry.first;
|
auto function = entry.first;
|
||||||
auto last = entry.second;
|
auto first_erased = entry.second;
|
||||||
|
|
||||||
auto & operands = getOrFunctionOperands(function);
|
auto & operands = getOrFunctionOperands(function);
|
||||||
operands.erase(last, operands.end());
|
operands.erase(first_erased, operands.end());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,8 +311,8 @@ void LogicalExpressionsOptimizer::fixBrokenOrExpressions()
|
|||||||
for (auto & parent : parents)
|
for (auto & parent : parents)
|
||||||
{
|
{
|
||||||
parent->children.push_back(operands[0]);
|
parent->children.push_back(operands[0]);
|
||||||
auto last = std::remove(parent->children.begin(), parent->children.end(), or_function);
|
auto first_erased = std::remove(parent->children.begin(), parent->children.end(), or_function);
|
||||||
parent->children.erase(last, parent->children.end());
|
parent->children.erase(first_erased, parent->children.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Если узел OR был корнем выражения WHERE, PREWHERE или HAVING, то следует обновить этот корень.
|
/// Если узел OR был корнем выражения WHERE, PREWHERE или HAVING, то следует обновить этот корень.
|
||||||
|
Loading…
Reference in New Issue
Block a user