| 106 | } |
| 107 | |
| 108 | std::vector<table_id_t> analyzePlannerStats(StorageManager& storageManager, const Catalog& catalog, |
| 109 | const Transaction* transaction, const std::optional<std::string>& tableName) { |
| 110 | std::vector<table_id_t> analyzedTables; |
| 111 | auto analyzeTable = [&](const TableCatalogEntry& tableEntry) { |
| 112 | if (tableEntry.getType() == CatalogEntryType::FOREIGN_TABLE_ENTRY) { |
| 113 | return; |
| 114 | } |
| 115 | if (tableEntry.getTableType() == TableType::REL) { |
| 116 | auto& relGroupEntry = tableEntry.constCast<RelGroupCatalogEntry>(); |
| 117 | for (const auto& relInfo : relGroupEntry.getRelEntryInfos()) { |
| 118 | storageManager.setCachedPlannerTableStats(buildPlannerTableStats(storageManager, |
| 119 | catalog, transaction, tableEntry, relInfo.oid)); |
| 120 | analyzedTables.push_back(relInfo.oid); |
| 121 | } |
| 122 | return; |
| 123 | } |
| 124 | storageManager.setCachedPlannerTableStats( |
| 125 | buildPlannerTableStats(storageManager, catalog, transaction, tableEntry)); |
| 126 | analyzedTables.push_back(tableEntry.getTableID()); |
| 127 | }; |
| 128 | if (tableName.has_value()) { |
| 129 | analyzeTable(*catalog.getTableCatalogEntry(transaction, tableName.value(), false)); |
| 130 | return analyzedTables; |
| 131 | } |
| 132 | for (const auto tableEntry : catalog.getTableEntries(transaction, false /* useInternal */)) { |
| 133 | analyzeTable(*tableEntry); |
| 134 | } |
| 135 | return analyzedTables; |
| 136 | } |
| 137 | |
| 138 | } // namespace storage |
| 139 | } // namespace lbug |
no test coverage detected