#pragma once #include "config_core.h" #if USE_ROCKSDB #include #include #include #include #include namespace DB { class MergeTreeMetadataCache { public: using Status = rocksdb::Status; explicit MergeTreeMetadataCache(rocksdb::DB * rocksdb_) : rocksdb{rocksdb_} { assert(rocksdb); } static std::unique_ptr create(const String & dir, size_t size); MergeTreeMetadataCache(const MergeTreeMetadataCache &) = delete; MergeTreeMetadataCache & operator=(const MergeTreeMetadataCache &) = delete; Status put(const String & key, const String & value); Status del(const String & key); Status get(const String & key, String & value); void getByPrefix(const String & prefix, Strings & keys, Strings & values); uint64_t getEstimateNumKeys() const; void shutdown(); private: std::unique_ptr rocksdb; Poco::Logger * log = &Poco::Logger::get("MergeTreeMetadataCache"); }; using MergeTreeMetadataCachePtr = std::shared_ptr; } #endif