static void get_qnames(Iterator *it, std::vector<std::string> *list){ while(it->next()){ Bytes ks = it->key(); //dump(ks.data(), ks.size()); if(ks.data()[0] != DataType::QSIZE){ break; } std::string n; if(decode_qsize_key(ks, &n) == -1){ continue; } list->push_back(n); } }
int SSDB::qlist(const Bytes &name_s, const Bytes &name_e, uint64_t limit, std::vector<std::string> *list){ std::string start; std::string end; start = encode_qsize_key(name_s); if(!name_e.empty()){ end = encode_qsize_key(name_e); } Iterator *it = this->iterator(start, end, limit); while(it->next()){ Bytes ks = it->key(); //dump(ks.data(), ks.size()); if(ks.data()[0] != DataType::QSIZE){ break; } std::string n; if(decode_qsize_key(ks, &n) == -1){ continue; } list->push_back(n); } delete it; return 0; }
int SSDBImpl::key_range(std::vector<std::string> *keys){ int ret = 0; std::string kstart, kend; std::string hstart, hend; std::string zstart, zend; std::string qstart, qend; Iterator *it; it = this->iterator(encode_kv_key(""), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::KV){ std::string n; if(decode_kv_key(ks, &n) == -1){ ret = -1; }else{ kstart = n; } } } delete it; it = this->rev_iterator(encode_kv_key("\xff"), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::KV){ std::string n; if(decode_kv_key(ks, &n) == -1){ ret = -1; }else{ kend = n; } } } delete it; it = this->iterator(encode_hsize_key(""), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::HSIZE){ std::string n; if(decode_hsize_key(ks, &n) == -1){ ret = -1; }else{ hstart = n; } } } delete it; it = this->rev_iterator(encode_hsize_key("\xff"), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::HSIZE){ std::string n; if(decode_hsize_key(ks, &n) == -1){ ret = -1; }else{ hend = n; } } } delete it; it = this->iterator(encode_zsize_key(""), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::ZSIZE){ std::string n; if(decode_hsize_key(ks, &n) == -1){ ret = -1; }else{ zstart = n; } } } delete it; it = this->rev_iterator(encode_zsize_key("\xff"), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::ZSIZE){ std::string n; if(decode_hsize_key(ks, &n) == -1){ ret = -1; }else{ zend = n; } } } delete it; it = this->iterator(encode_qsize_key(""), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::QSIZE){ std::string n; if(decode_qsize_key(ks, &n) == -1){ ret = -1; }else{ qstart = n; } } } delete it; it = this->rev_iterator(encode_qsize_key("\xff"), "", 1); if(it->next()){ Bytes ks = it->key(); if(ks.data()[0] == DataType::QSIZE){ std::string n; if(decode_qsize_key(ks, &n) == -1){ ret = -1; }else{ qend = n; } } } delete it; keys->push_back(kstart); keys->push_back(kend); keys->push_back(hstart); keys->push_back(hend); keys->push_back(zstart); keys->push_back(zend); keys->push_back(qstart); keys->push_back(qend); return ret; }