24 namespace foreign_storage {
39 const std::vector<StorageDetails>& storage_details,
40 std::map<std::string, import_export::TypedImportBuffer*>& import_buffers) {
41 for (
const auto& storage_detail : storage_details) {
43 if (import_buffers.find(
"database_id") != import_buffers.end()) {
44 import_buffers[
"database_id"]->addInt(storage_detail.database_id);
46 if (import_buffers.find(
"database_name") != import_buffers.end()) {
47 import_buffers[
"database_name"]->addDictStringWithTruncation(
50 if (import_buffers.find(
"table_id") != import_buffers.end()) {
51 import_buffers[
"table_id"]->addInt(storage_detail.table_id);
53 if (import_buffers.find(
"table_name") != import_buffers.end()) {
54 import_buffers[
"table_name"]->addDictStringWithTruncation(
55 get_table_name(storage_detail.database_id, storage_detail.table_id));
57 if (import_buffers.find(
"epoch") != import_buffers.end()) {
58 import_buffers[
"epoch"]->addInt(storage_detail.storage_stats.epoch);
60 if (import_buffers.find(
"epoch_floor") != import_buffers.end()) {
61 import_buffers[
"epoch_floor"]->addInt(storage_detail.storage_stats.epoch_floor);
63 if (import_buffers.find(
"fragment_count") != import_buffers.end()) {
64 auto import_buffer = import_buffers[
"fragment_count"];
65 if (storage_detail.storage_stats.fragment_count.has_value()) {
66 import_buffer->addInt(storage_detail.storage_stats.fragment_count.value());
71 if (import_buffers.find(
"shard_id") != import_buffers.end()) {
72 import_buffers[
"shard_id"]->addInt(storage_detail.shard_id);
74 if (import_buffers.find(
"data_file_count") != import_buffers.end()) {
75 import_buffers[
"data_file_count"]->addInt(
76 storage_detail.storage_stats.data_file_count);
78 if (import_buffers.find(
"metadata_file_count") != import_buffers.end()) {
79 import_buffers[
"metadata_file_count"]->addInt(
80 storage_detail.storage_stats.metadata_file_count);
82 if (import_buffers.find(
"total_data_file_size") != import_buffers.end()) {
83 import_buffers[
"total_data_file_size"]->addBigint(
84 storage_detail.storage_stats.total_data_file_size);
86 if (import_buffers.find(
"total_data_page_count") != import_buffers.end()) {
87 import_buffers[
"total_data_page_count"]->addBigint(
88 storage_detail.storage_stats.total_data_page_count);
90 if (import_buffers.find(
"total_free_data_page_count") != import_buffers.end()) {
91 auto import_buffer = import_buffers[
"total_free_data_page_count"];
92 if (storage_detail.storage_stats.total_free_data_page_count.has_value()) {
93 import_buffer->addBigint(
94 storage_detail.storage_stats.total_free_data_page_count.value());
99 if (import_buffers.find(
"total_metadata_file_size") != import_buffers.end()) {
100 import_buffers[
"total_metadata_file_size"]->addBigint(
101 storage_detail.storage_stats.total_metadata_file_size);
103 if (import_buffers.find(
"total_metadata_page_count") != import_buffers.end()) {
104 import_buffers[
"total_metadata_page_count"]->addBigint(
105 storage_detail.storage_stats.total_metadata_page_count);
107 if (import_buffers.find(
"total_free_metadata_page_count") != import_buffers.end()) {
108 auto import_buffer = import_buffers[
"total_free_metadata_page_count"];
109 if (storage_detail.storage_stats.total_free_metadata_page_count.has_value()) {
110 import_buffer->addBigint(
111 storage_detail.storage_stats.total_free_metadata_page_count.value());
116 if (import_buffers.find(
"total_dictionary_data_file_size") != import_buffers.end()) {
117 import_buffers[
"total_dictionary_data_file_size"]->addBigint(
118 storage_detail.total_dictionary_data_file_size);
125 const std::string& table_name) {
128 const auto global_file_mgr =
130 CHECK(global_file_mgr);
132 for (
const auto& catalog : sys_catalog.getCatalogsForAllDbs()) {
134 std::set<std::string> found_dict_paths;
135 for (
const auto& [table_id, shard_id] :
136 catalog->getAllPersistedTableAndShardIds()) {
137 uint64_t total_dictionary_file_size{0};
138 auto logical_table_id = catalog->getLogicalTableId(table_id);
139 for (
const auto& dict_path :
140 catalog->getTableDictDirectoryPaths(logical_table_id)) {
141 if (found_dict_paths.find(dict_path) == found_dict_paths.end()) {
142 found_dict_paths.emplace(dict_path);
147 CHECK(std::filesystem::is_directory(dict_path));
148 for (
const auto& file_entry : std::filesystem::directory_iterator(dict_path)) {
149 CHECK(file_entry.is_regular_file());
150 total_dictionary_file_size +=
static_cast<uint64_t
>(file_entry.file_size());
153 auto db_id = catalog->getDatabaseId();
157 total_dictionary_file_size,
158 global_file_mgr->getStorageStats(db_id, table_id));
166 const std::string& table_name,
167 std::map<std::string, import_export::TypedImportBuffer*>& import_buffers) {
void populateChunkBuffersForTable(const std::string &table_name, std::map< std::string, import_export::TypedImportBuffer * > &import_buffers) override
void populate_import_buffers_for_storage_details(const std::vector< StorageDetails > &storage_details, std::map< std::string, import_export::TypedImportBuffer * > &import_buffers)
std::vector< StorageDetails > storage_details_
const std::string kInfoSchemaDbName
Data_Namespace::DataMgr & getDataMgr() const
static SysCatalog & instance()
This file contains the class specification and related data structures for SysCatalog.
void set_node_name(std::map< std::string, import_export::TypedImportBuffer * > &import_buffers)
CONSTEXPR DEVICE void set_null(T &value)
File_Namespace::GlobalFileMgr * getGlobalFileMgr() const
static constexpr const char * STORAGE_DETAILS_SYS_TABLE_NAME
InternalStorageStatsDataWrapper()
void initializeObjectsForTable(const std::string &table_name) override
std::string get_db_name(int32_t db_id)
const ColumnDescriptor * getColumnDesc() const
void add_value(const ColumnDescriptor *cd, const std::string_view val, const bool is_null, const CopyParams ©_params, const bool check_not_null=true)
std::string get_table_name(int32_t db_id, int32_t table_id)