Populate table sizes

This commit is contained in:
eelke 2023-01-22 16:46:14 +01:00
parent 39dbab4d36
commit abc0dd892f
10 changed files with 47 additions and 62 deletions

View file

@ -12,7 +12,7 @@ TableTreeBuilder::TableTreeBuilder(
{
}
std::shared_ptr<TableNode> TableTreeBuilder::Build()
std::tuple<std::shared_ptr<TableNode>, std::map<Oid, std::shared_ptr<TableNode>>> TableTreeBuilder::Build()
{
rootNode = std::make_shared<TableNode>();
@ -29,16 +29,9 @@ std::shared_ptr<TableNode> TableTreeBuilder::Build()
addNode(e.second);
}
AssignNodeIndexesAndParents(rootNode);
auto ret = rootNode;
resetState();
return ret;
return { rootNode, std::move(processedNodes) };
}
void TableTreeBuilder::resetState()
{
rootNode.reset();
processedNodes.clear();
}
std::shared_ptr<TableNode> TableTreeBuilder::addNode(const PgClass &cls)
{
@ -46,13 +39,13 @@ std::shared_ptr<TableNode> TableTreeBuilder::addNode(const PgClass &cls)
processedNodes.emplace(cls.oid(), node);
std::vector<Oid> parents = inheritance.getParentsOf(cls.oid());
if (parents.empty())
addToplevelNode(node);
addToToplevel(node);
else
addToParents(node, parents);
return node;
}
void TableTreeBuilder::addToplevelNode(std::shared_ptr<TableNode> node)
void TableTreeBuilder::addToToplevel(std::shared_ptr<TableNode> node)
{
rootNode->children.push_back(node);
}