ClickHouse/src/Parsers/formatSettingName.cpp
Alexey Milovidov 0ad44b821e Fix build
2020-09-18 01:45:12 +03:00

38 lines
851 B
C++

#include <Parsers/formatSettingName.h>
#include <Common/StringUtils/StringUtils.h>
#include <Common/quoteString.h>
#include <common/find_symbols.h>
#include <ostream>
namespace DB
{
void formatSettingName(const String & setting_name, std::ostream & out)
{
if (isValidIdentifier(setting_name))
{
out << setting_name;
return;
}
std::vector<std::string_view> parts;
splitInto<'.'>(parts, setting_name);
bool all_parts_are_identifiers = std::all_of(parts.begin(), parts.end(), isValidIdentifier);
if (all_parts_are_identifiers && !parts.empty())
{
bool need_dot = false;
for (const auto & part : parts)
{
if (std::exchange(need_dot, true))
out << ".";
out << part;
}
return;
}
out << backQuote(setting_name);
}
}