ClickHouse/dbms/include/DB/Parsers/ASTColumnDeclaration.h

46 lines
880 B
C
Raw Normal View History

#pragma once
#include <DB/Parsers/IAST.h>
namespace DB
{
/** Name, type, default-specifier, default-expression.
* The type is optional if default-expression is specified.
*/
class ASTColumnDeclaration : public IAST
{
public:
String name;
ASTPtr type;
String default_specifier;
ASTPtr default_expression;
ASTColumnDeclaration() = default;
2014-12-17 15:26:24 +00:00
ASTColumnDeclaration(const StringRange range) : IAST{range} {}
2014-12-17 15:26:24 +00:00
String getID() const override { return "ColumnDeclaration_" + name; }
2014-12-17 15:26:24 +00:00
ASTPtr clone() const override
{
const auto res = new ASTColumnDeclaration{*this};
2014-12-17 15:26:24 +00:00
ASTPtr ptr{res};
res->children.clear();
if (type) {
res->type = type->clone();
res->children.push_back(res->type);
}
if (default_expression) {
res->default_expression = default_expression->clone();
res->children.push_back(res->default_expression);
}
2014-12-17 15:26:24 +00:00
return ptr;
}
};
}