dbms: implement ASTSubquery::clone properly. [#METR-13399]

This commit is contained in:
Andrey Mironov 2014-12-15 23:43:24 +03:00
parent dcae14d25e
commit 29de25c608
2 changed files with 24 additions and 18 deletions

View File

@ -14,21 +14,22 @@ using Poco::SharedPtr;
class ASTExpressionList : public IAST
{
public:
ASTExpressionList() {}
ASTExpressionList() = default;
ASTExpressionList(StringRange range_) : IAST(range_) {}
/** Получить текст, который идентифицирует этот элемент. */
String getID() const { return "ExpressionList"; }
String getID() const override { return "ExpressionList"; }
ASTPtr clone() const
ASTPtr clone() const override
{
ASTExpressionList * res = new ASTExpressionList(*this);
const auto res = new ASTExpressionList(*this);
ASTPtr ptr{res};
res->children.clear();
for (ASTs::const_iterator it = children.begin(); it != children.end(); ++it)
res->children.push_back((*it)->clone());
for (const auto & child : children)
res->children.emplace_back(child->clone());
return res;
return ptr;
}
};

View File

@ -9,25 +9,30 @@ namespace DB
{
/** Подзарос SELECT в секции IN.
/** Подзарос SELECT
*/
class ASTSubquery : public IAST
{
public:
/// тип возвращаемого значения
DataTypePtr return_type;
/// номер столбца возвращаемого значения
size_t return_column_number;
ASTSubquery() {}
ASTSubquery(StringRange range_) : IAST(range_), return_column_number(0) {}
ASTSubquery() = default;
ASTSubquery(StringRange range_) : IAST(range_) {}
/** Получить текст, который идентифицирует этот элемент. */
String getID() const { return "Subquery"; };
String getID() const override { return "Subquery"; }
ASTPtr clone() const { return new ASTSubquery(*this); }
ASTPtr clone() const override
{
const auto res = new ASTSubquery{*this};
ASTPtr ptr{res};
res->children.clear();
String getColumnName() const { return getTreeID(); }
for (const auto & child : children)
res->children.emplace_back(child->clone());
return ptr;
}
String getColumnName() const override { return getTreeID(); }
};
}