From 0d87e54d10478ae9dc85ab8374e03f93827ac345 Mon Sep 17 00:00:00 2001 From: christianEQ Date: Wed, 3 Nov 2021 00:59:17 +0000 Subject: [PATCH] save and recognize metadata table identifier Former-commit-id: f06ef757c24ecc50df0e7abf5201a5499ff28c53 --- src/storage/rocksdb.h | 1 + src/storage/rocksdbfactory.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/storage/rocksdb.h b/src/storage/rocksdb.h index 2a980cf64..0936c585a 100644 --- a/src/storage/rocksdb.h +++ b/src/storage/rocksdb.h @@ -8,6 +8,7 @@ #define INTERNAL_KEY_PREFIX "\x00\x04\x03\x00\x05\x02\x04" static const char count_key[] = INTERNAL_KEY_PREFIX "__keydb__count\1"; static const char version_key[] = INTERNAL_KEY_PREFIX "__keydb__version\1"; +static const char meta_key[] = INTERNAL_KEY_PREFIX "__keydb__metadata\1"; class RocksDBStorageFactory; class RocksDBStorageProvider : public IStorage diff --git a/src/storage/rocksdbfactory.cpp b/src/storage/rocksdbfactory.cpp index 518944b38..b16033250 100644 --- a/src/storage/rocksdbfactory.cpp +++ b/src/storage/rocksdbfactory.cpp @@ -90,6 +90,13 @@ RocksDBStorageFactory::RocksDBStorageFactory(const char *dbfile, int dbnum, cons m_spdb = std::shared_ptr(db); for (auto handle : handles) { + std::string metaId; + + auto idStatus = m_spdb->Get(rocksdb::ReadOptions(), handle, rocksdb::Slice(meta_key, sizeof(meta_key)), &metaId); + if (status.ok() && !strcmp(metaId.c_str(), METADATA_DB_IDENTIFIER)) { + printf("Recognized metadata table\r\n"); + } + std::string strVersion; auto status = m_spdb->Get(rocksdb::ReadOptions(), handle, rocksdb::Slice(version_key, sizeof(version_key)), &strVersion); if (!status.ok()) @@ -138,7 +145,7 @@ std::string RocksDBStorageFactory::getTempFolder() IStorage *RocksDBStorageFactory::createMetadataDb() { IStorage *metadataDb = this->create(-1, nullptr, nullptr); - metadataDb->insert("KEYDB_METADATA_ID", strlen("KEYDB_METADATA_ID"), (void*)METADATA_DB_IDENTIFIER, strlen(METADATA_DB_IDENTIFIER), false); + metadataDb->insert(meta_key, sizeof(meta_key), (void*)METADATA_DB_IDENTIFIER, strlen(METADATA_DB_IDENTIFIER), false); return metadataDb; }