{
auto cf = db->get_cf_handle(prefix);
if (cf) {
- if (db->enable_rmrange) {
- string endprefix("\xff\xff\xff\xff"); // FIXME: this is cheating...
- if (db->max_items_rmrange) {
- uint64_t cnt = db->max_items_rmrange;
- bat.SetSavePoint();
- auto it = db->get_iterator(prefix);
- for (it->seek_to_first();
- it->valid();
- it->next()) {
- if (!cnt) {
- bat.RollbackToSavePoint();
- bat.DeleteRange(cf, string(), endprefix);
- return;
- }
- bat.Delete(cf, rocksdb::Slice(it->key()));
- --cnt;
- }
- bat.PopSavePoint();
- } else {
- bat.DeleteRange(cf, string(), endprefix);
- }
- } else {
- auto it = db->get_iterator(prefix);
- for (it->seek_to_first();
- it->valid();
- it->next()) {
- bat.Delete(cf, rocksdb::Slice(it->key()));
- }
- }
+ string endprefix("\xff\xff\xff\xff"); // FIXME: this is cheating...
+ bat.DeleteRange(cf, string(), endprefix);
} else {
- if (db->enable_rmrange) {
- string endprefix = prefix;
- endprefix.push_back('\x01');
- if (db->max_items_rmrange) {
- uint64_t cnt = db->max_items_rmrange;
- bat.SetSavePoint();
- auto it = db->get_iterator(prefix);
- for (it->seek_to_first();
- it->valid();
- it->next()) {
- if (!cnt) {
- bat.RollbackToSavePoint();
- bat.DeleteRange(db->default_cf,
- combine_strings(prefix, string()),
- combine_strings(endprefix, string()));
- return;
- }
- bat.Delete(db->default_cf, combine_strings(prefix, it->key()));
- --cnt;
- }
- bat.PopSavePoint();
- } else {
- bat.DeleteRange(db->default_cf,
- combine_strings(prefix, string()),
- combine_strings(endprefix, string()));
- }
- } else {
- auto it = db->get_iterator(prefix);
- for (it->seek_to_first();
- it->valid();
- it->next()) {
- bat.Delete(db->default_cf, combine_strings(prefix, it->key()));
- }
- }
+ string endprefix = prefix;
+ endprefix.push_back('\x01');
+ bat.DeleteRange(db->default_cf,
+ combine_strings(prefix, string()),
+ combine_strings(endprefix, string()));
}
}
{
auto cf = db->get_cf_handle(prefix);
if (cf) {
- if (db->enable_rmrange) {
- if (db->max_items_rmrange) {
- uint64_t cnt = db->max_items_rmrange;
- auto it = db->get_iterator(prefix);
- bat.SetSavePoint();
- it->lower_bound(start);
- while (it->valid()) {
- if (it->key() >= end) {
- break;
- }
- if (!cnt) {
- bat.RollbackToSavePoint();
- bat.DeleteRange(cf, rocksdb::Slice(start), rocksdb::Slice(end));
- return;
- }
- bat.Delete(cf, rocksdb::Slice(it->key()));
- it->next();
- --cnt;
- }
- bat.PopSavePoint();
- } else {
- bat.DeleteRange(cf, rocksdb::Slice(start), rocksdb::Slice(end));
- }
- } else {
- auto it = db->get_iterator(prefix);
- it->lower_bound(start);
- while (it->valid()) {
- if (it->key() >= end) {
- break;
- }
- bat.Delete(cf, rocksdb::Slice(it->key()));
- it->next();
- }
- }
+ bat.DeleteRange(cf, rocksdb::Slice(start), rocksdb::Slice(end));
} else {
- if (db->enable_rmrange) {
- if (db->max_items_rmrange) {
- uint64_t cnt = db->max_items_rmrange;
- auto it = db->get_iterator(prefix);
- bat.SetSavePoint();
- it->lower_bound(start);
- while (it->valid()) {
- if (it->key() >= end) {
- break;
- }
- if (!cnt) {
- bat.RollbackToSavePoint();
- bat.DeleteRange(
- db->default_cf,
- rocksdb::Slice(combine_strings(prefix, start)),
- rocksdb::Slice(combine_strings(prefix, end)));
- return;
- }
- bat.Delete(db->default_cf,
- combine_strings(prefix, it->key()));
- it->next();
- --cnt;
- }
- bat.PopSavePoint();
- } else {
- bat.DeleteRange(
- db->default_cf,
- rocksdb::Slice(combine_strings(prefix, start)),
- rocksdb::Slice(combine_strings(prefix, end)));
- }
- } else {
- auto it = db->get_iterator(prefix);
- it->lower_bound(start);
- while (it->valid()) {
- if (it->key() >= end) {
- break;
- }
- bat.Delete(db->default_cf,
- combine_strings(prefix, it->key()));
- it->next();
- }
- }
+ bat.DeleteRange(
+ db->default_cf,
+ rocksdb::Slice(combine_strings(prefix, start)),
+ rocksdb::Slice(combine_strings(prefix, end)));
}
}