#include "StorageSystemRemoteFilesystemCache.h" #include #include #include #include #include #include #include #include namespace DB { NamesAndTypesList StorageSystemRemoteFilesystemCache::getNamesAndTypes() { return { {"cache_base_path", std::make_shared()}, {"cache_path", std::make_shared()}, {"file_segment_range", std::make_shared(DataTypes{std::make_shared(), std::make_shared()})}, {"size", std::make_shared()}, {"state", std::make_shared()}, {"cache_hits", std::make_shared()}, }; } StorageSystemRemoteFilesystemCache::StorageSystemRemoteFilesystemCache(const StorageID & table_id_) : IStorageSystemOneBlock(table_id_) { } void StorageSystemRemoteFilesystemCache::fillData(MutableColumns & res_columns, ContextPtr, const SelectQueryInfo &) const { auto caches = FileCacheFactory::instance().getAll(); for (const auto & [cache_base_path, cache_data] : caches) { auto & cache = cache_data.cache; auto holder = cache->getAll(); for (const auto & file_segment : holder.file_segments) { res_columns[0]->insert(cache_base_path); res_columns[1]->insert(cache->getPathInLocalCache(file_segment->key(), file_segment->offset())); const auto & range = file_segment->range(); res_columns[2]->insert(Tuple({range.left, range.right})); res_columns[3]->insert(range.size()); res_columns[4]->insert(FileSegment::stateToString(file_segment->state())); res_columns[5]->insert(file_segment->hits()); } } } }