Commit f375f9ce authored by zhangjinpeng1987's avatar zhangjinpeng1987 Committed by Huachao Huang

set_env for DBOptions (#246)

* set_env for DBOptions
Signed-off-by: 's avatarzhangjinpeng1987 <zhangjinpeng@pingcap.com>
parent 05aaf93f
......@@ -547,6 +547,7 @@ impl Drop for CompactionOptions {
pub struct DBOptions {
pub inner: *mut Options,
env: Option<Arc<Env>>,
}
impl Drop for DBOptions {
......@@ -562,7 +563,10 @@ impl Default for DBOptions {
unsafe {
let opts = crocksdb_ffi::crocksdb_options_create();
assert!(!opts.is_null(), "Could not create rocksdb db options");
DBOptions { inner: opts }
DBOptions {
inner: opts,
env: None,
}
}
}
}
......@@ -572,7 +576,10 @@ impl Clone for DBOptions {
unsafe {
let opts = crocksdb_ffi::crocksdb_options_copy(self.inner);
assert!(!opts.is_null());
DBOptions { inner: opts }
DBOptions {
inner: opts,
env: self.env.clone(),
}
}
}
}
......@@ -583,7 +590,10 @@ impl DBOptions {
}
pub unsafe fn from_raw(inner: *mut Options) -> DBOptions {
DBOptions { inner: inner }
DBOptions {
inner: inner,
env: None,
}
}
pub fn increase_parallelism(&mut self, parallelism: i32) {
......@@ -603,6 +613,13 @@ impl DBOptions {
}
}
pub fn set_env(&mut self, env: Arc<Env>) {
unsafe {
crocksdb_ffi::crocksdb_options_set_env(self.inner, env.inner);
self.env = Some(env);
}
}
pub fn set_max_open_files(&mut self, nfiles: c_int) {
unsafe {
crocksdb_ffi::crocksdb_options_set_max_open_files(self.inner, nfiles);
......
......@@ -16,10 +16,11 @@ use rocksdb::crocksdb_ffi::{
DBStatisticsHistogramType as HistogramType, DBStatisticsTickerType as TickerType,
};
use rocksdb::{
BlockBasedOptions, ColumnFamilyOptions, CompactOptions, DBOptions, FifoCompactionOptions,
BlockBasedOptions, ColumnFamilyOptions, CompactOptions, DBOptions, Env, FifoCompactionOptions,
ReadOptions, SeekKey, SliceTransform, Writable, WriteOptions, DB,
};
use std::path::Path;
use std::sync::Arc;
use std::thread;
use std::time::Duration;
use tempdir::TempDir;
......@@ -730,3 +731,14 @@ fn test_vector_memtable_factory_options() {
assert!(!iter.next());
assert!(!iter.valid());
}
#[test]
fn test_dboptions_set_env() {
let path = TempDir::new("_rust_rocksdb_dboptions_set_env").unwrap();
let path_str = path.path().to_str().unwrap();
let mut opts = DBOptions::new();
opts.create_if_missing(true);
opts.set_env(Arc::new(Env::default()));
let _db = DB::open(opts, path_str).unwrap();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment