Allow creating both db and column family iterators that are specific to
a key prefix, by setting the `prefix_same_as_start` read option when
creating the iterator.
Currently this only supports `Direction::Forward`, but it'd likely be
trivial to support `Backward` as well, by incrementing the given prefix
by one and seeking to the key before that key.
Adds a new `DB::open_cf_descriptors` method that allows passing in Options for
each column family. A new `ColumnFamilyDescriptor` type was added to contain
the congfiguration for each column family. This fixes an issue where a column
family was created with non-default options, and then fails to re-open due to a
config mismatch.
This as added to make while-loops easy:
while iter.next() {
...
}
But this involves adding a layer of custom logic on top of the RocksDB
API. This is probably a bad idea given that this API is meant to closely
match the underlying iterator API in RocksDB, so this commit changes
that.
The new way to iterate is as follows:
while iter.valid() {
...
iter.next();
}
This solves the following type mismatch error in 32-bit ARM systems.
error[E0308]: mismatched types
key.as_ptr() as *const i8,
^^^^^^^^^^^^^^^^^^^^^^^^^ expected u8, found i8
This makes it easier for people who are using the try!() macro to convert errors into their own Error type. It isn't possible to diffrentiate between errors raised from RocksDB and other string errors at the moment.
This adds a simple ``Error`` type that wraps ``String``. People using RocksDB can now implement ``impl From<rocksdb::Error> for MyError`` and add custom behaviour for handling RocksDB errors.