save and recognize metadata table identifier
Former-commit-id: f06ef757c24ecc50df0e7abf5201a5499ff28c53
This commit is contained in:
parent
b24e18601c
commit
0d87e54d10
@ -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
|
||||
|
@ -90,6 +90,13 @@ RocksDBStorageFactory::RocksDBStorageFactory(const char *dbfile, int dbnum, cons
|
||||
m_spdb = std::shared_ptr<rocksdb::DB>(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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user