Followup fix ASTRenameQuery::clone #61013

This commit is contained in:
vdimir 2024-03-12 15:41:43 +00:00
parent 0569f44186
commit c7e8ca789f
No known key found for this signature in database
GPG Key ID: 6EE4CE2BEDC51862

View File

@ -94,7 +94,24 @@ public:
ASTPtr clone() const override ASTPtr clone() const override
{ {
auto res = std::make_shared<ASTRenameQuery>(*this); auto res = std::make_shared<ASTRenameQuery>(*this);
res->cloneChildren(); res->children.clear();
auto clone_child = [&res](ASTPtr & node)
{
if (node)
{
node = node->clone();
res->children.push_back(node);
}
};
for (auto & elem : res->elements)
{
clone_child(elem.from.database);
clone_child(elem.from.table);
clone_child(elem.to.database);
clone_child(elem.to.table);
}
cloneOutputOptions(*res); cloneOutputOptions(*res);
return res; return res;
} }
@ -108,9 +125,15 @@ public:
for (Element & elem : query.elements) for (Element & elem : query.elements)
{ {
if (!elem.from.database) if (!elem.from.database)
{
elem.from.database = std::make_shared<ASTIdentifier>(params.default_database); elem.from.database = std::make_shared<ASTIdentifier>(params.default_database);
query.children.push_back(elem.from.database);
}
if (!elem.to.database) if (!elem.to.database)
{
elem.to.database = std::make_shared<ASTIdentifier>(params.default_database); elem.to.database = std::make_shared<ASTIdentifier>(params.default_database);
query.children.push_back(elem.to.database);
}
} }
return query_ptr; return query_ptr;