Использование rockdb :: Iterator и семейства столбцов не работает

У меня есть следующий кусок кода:

rocksdb::DBWithTTL* db = ...
rocksdb::WriteOptions writeOptions;
rocksdb::ColumnFamilyHandle cfHandle = ...

std::string keyPrefix = "prefix";
std::string key = keyPrefix + "_key";
std::string value = "value";
rocksdb::Status s = db->Put(writeOptions, cfHandle, key, value);

rocksdb::ReadOptions readOptions;
readOptions.prefix_same_as_start;
readOptions.snapshot = db->GetSnapshot();
rocksdb::Iterator* iterator = db->NewIterator(readOptions);

rocksdb::Sliced start = rocksdb::Slice(keyPrefix);
for (iterator->Seek(start); iterator->Valid(); iterator->Next()) {
printf("hello");
}

printf никогда не ударил.

Однако, если я изменю Put линия к:

rocksdb::Status s = db->Put(writeOptions, key, value);

Смысл, удаляя column family handleЯ получаю строку напечатано в порядке.

Я предполагаю, что API итератора должен учитывать семейство столбцов, но я не смог найти никакой документации.

0

Решение

Действительно, отсутствующий вызов API был:

rocksdb::Iterator* iterator = db->NewIterator(readOptions, cfHandle);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector