mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-09 10:00:54 +00:00
40 lines
878 B
C++
40 lines
878 B
C++
|
#include <Storages/ConstraintsDescription.h>
|
||
|
|
||
|
#include <Parsers/formatAST.h>
|
||
|
#include <Parsers/ParserCreateQuery.h>
|
||
|
#include <Parsers/parseQuery.h>
|
||
|
#include <Parsers/ASTExpressionList.h>
|
||
|
|
||
|
|
||
|
namespace DB
|
||
|
{
|
||
|
|
||
|
String ConstraintsDescription::toString() const
|
||
|
{
|
||
|
if (constraints.empty())
|
||
|
return {};
|
||
|
|
||
|
ASTExpressionList list;
|
||
|
for (const auto & constraint : constraints)
|
||
|
list.children.push_back(constraint);
|
||
|
|
||
|
return serializeAST(list, true);
|
||
|
}
|
||
|
|
||
|
ConstraintsDescription ConstraintsDescription::parse(const String & str)
|
||
|
{
|
||
|
if (str.empty())
|
||
|
return {};
|
||
|
|
||
|
ConstraintsDescription res;
|
||
|
ParserConstraintDeclarationList parser;
|
||
|
ASTPtr list = parseQuery(parser, str, 0);
|
||
|
|
||
|
for (const auto & constraint : list->children)
|
||
|
res.constraints.push_back(std::dynamic_pointer_cast<ASTConstraintDeclaration>(constraint));
|
||
|
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
}
|