OP_PUT = 1,
OP_ERASE = 2,
OP_COMPACT = 3,
+ OP_ERASE_RANGE = 4,
};
void put(string prefix, string key, bufferlist& bl) {
erase(prefix, os.str());
}
+ void erase_range(string prefix, string begin, string end) {
+ ops.push_back(Op(OP_ERASE_RANGE, prefix, begin, end));
+ ++keys;
+ bytes += prefix.length() + begin.length() + end.length();
+ }
+
void compact_prefix(string prefix) {
ops.push_back(Op(OP_COMPACT, prefix, string()));
}
bl.append("value");
ls.back()->put("prefix", "key", bl);
ls.back()->erase("prefix2", "key2");
+ ls.back()->erase_range("prefix3", "key3", "key4");
ls.back()->compact_prefix("prefix3");
ls.back()->compact_range("prefix4", "from", "to");
}
f->dump_string("key", op.key);
}
break;
+ case OP_ERASE_RANGE:
+ {
+ f->dump_string("type", "ERASE_RANGE");
+ f->dump_string("prefix", op.prefix);
+ f->dump_string("start", op.key);
+ f->dump_string("end", op.endkey);
+ }
+ break;
case OP_COMPACT:
{
f->dump_string("type", "COMPACT");
case Transaction::OP_ERASE:
dbt->rmkey(op.prefix, op.key);
break;
+ case Transaction::OP_ERASE_RANGE:
+ dbt->rm_range_keys(op.prefix, op.key, op.endkey);
+ break;
case Transaction::OP_COMPACT:
compact.push_back(make_pair(op.prefix, make_pair(op.key, op.endkey)));
break;