summaryrefslogtreecommitdiff
path: root/src/transactions/optimistic_transaction_db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/transactions/optimistic_transaction_db.rs')
-rw-r--r--src/transactions/optimistic_transaction_db.rs48
1 files changed, 43 insertions, 5 deletions
diff --git a/src/transactions/optimistic_transaction_db.rs b/src/transactions/optimistic_transaction_db.rs
index 5642594..5ce3bff 100644
--- a/src/transactions/optimistic_transaction_db.rs
+++ b/src/transactions/optimistic_transaction_db.rs
@@ -15,12 +15,15 @@
use std::{collections::BTreeMap, ffi::CString, fs, iter, marker::PhantomData, path::Path, ptr};
-use libc::{c_char, c_int};
+use libc::{c_char, c_int, size_t};
use crate::{
- db::DBCommon, db::DBInner, ffi, ffi_util::to_cpath, write_batch::WriteBatchWithTransaction,
- ColumnFamilyDescriptor, Error, OptimisticTransactionOptions, Options, ThreadMode, Transaction,
- WriteOptions, DEFAULT_COLUMN_FAMILY_NAME,
+ db::{DBCommon, DBInner},
+ ffi,
+ ffi_util::to_cpath,
+ write_batch::WriteBatchWithTransaction,
+ AsColumnFamilyRef, ColumnFamilyDescriptor, Error, OptimisticTransactionOptions, Options,
+ ThreadMode, Transaction, WriteOptions, DEFAULT_COLUMN_FAMILY_NAME,
};
/// A type alias to RocksDB Optimistic Transaction DB.
@@ -42,7 +45,7 @@ use crate::{
/// {
/// let db: OptimisticTransactionDB = OptimisticTransactionDB::open_default(path).unwrap();
/// db.put(b"my key", b"my value").unwrap();
-///
+///
/// // create transaction
/// let txn = db.transaction();
/// txn.put(b"key2", b"value2");
@@ -290,4 +293,39 @@ impl<T: ThreadMode> OptimisticTransactionDB<T> {
wo.disable_wal(true);
self.write_opt(batch, &wo)
}
+
+ /// Removes the database entries in the range `["from", "to")` using given write options.
+ pub fn delete_range_cf_opt<K: AsRef<[u8]>>(
+ &self,
+ cf: &impl AsColumnFamilyRef,
+ from: K,
+ to: K,
+ writeopts: &WriteOptions,
+ ) -> Result<(), Error> {
+ let from = from.as_ref();
+ let to = to.as_ref();
+
+ unsafe {
+ ffi_try!(ffi::rocksdb_delete_range_cf(
+ self.inner.inner(),
+ writeopts.inner,
+ cf.inner(),
+ from.as_ptr() as *const c_char,
+ from.len() as size_t,
+ to.as_ptr() as *const c_char,
+ to.len() as size_t,
+ ));
+ Ok(())
+ }
+ }
+
+ /// Removes the database entries in the range `["from", "to")` using default write options.
+ pub fn delete_range_cf<K: AsRef<[u8]>>(
+ &self,
+ cf: &impl AsColumnFamilyRef,
+ from: K,
+ to: K,
+ ) -> Result<(), Error> {
+ self.delete_range_cf_opt(cf, from, to, &WriteOptions::default())
+ }
}