Commit 48bf4dc6 authored by Wallace's avatar Wallace Committed by Yi Wu

add interface set_target_path_id for CompatOptions (#426)

* add interface set_target_path_id for CompatOptions
Signed-off-by: 's avatarLittle-Wallace <bupt2013211450@gmail.com>
parent 331db3be
......@@ -2090,6 +2090,21 @@ extern "C" {
arg5: libc::c_int,
);
}
extern "C" {
pub fn crocksdb_options_get_db_paths_num(arg1: *mut crocksdb_options_t) -> usize;
}
extern "C" {
pub fn crocksdb_options_get_db_path(
arg1: *mut crocksdb_options_t,
index: usize,
) -> *const libc::c_char;
}
extern "C" {
pub fn crocksdb_options_get_path_target_size(
arg1: *mut crocksdb_options_t,
index: usize,
) -> u64;
}
extern "C" {
pub fn crocksdb_options_set_db_log_dir(
arg1: *mut crocksdb_options_t,
......@@ -2754,6 +2769,12 @@ extern "C" {
arg2: libc::c_int,
);
}
extern "C" {
pub fn crocksdb_compactoptions_set_target_path_id(
arg1: *mut crocksdb_compactoptions_t,
arg2: libc::c_int,
);
}
extern "C" {
pub fn crocksdb_compactoptions_set_max_subcompactions(
arg1: *mut crocksdb_compactoptions_t,
......
......@@ -2502,6 +2502,18 @@ void crocksdb_options_set_db_paths(crocksdb_options_t *opt,
opt->rep.db_paths = db_paths;
}
size_t crocksdb_options_get_db_paths_num(crocksdb_options_t *opt) {
return opt->rep.db_paths.size();
}
const char* crocksdb_options_get_db_path(crocksdb_options_t* opt, size_t index) {
return opt->rep.db_paths[index].path.data();
}
uint64_t crocksdb_options_get_path_target_size(crocksdb_options_t* opt, size_t index) {
return opt->rep.db_paths[index].target_size;
}
void crocksdb_options_set_db_log_dir(
crocksdb_options_t* opt, const char* db_log_dir) {
opt->rep.db_log_dir = db_log_dir;
......@@ -3377,6 +3389,11 @@ void crocksdb_compactoptions_set_target_level(crocksdb_compactoptions_t* opt,
opt->rep.target_level = n;
}
void crocksdb_compactoptions_set_target_path_id(crocksdb_compactoptions_t* opt,
int n) {
opt->rep.target_path_id = n;
}
void crocksdb_compactoptions_set_max_subcompactions(
crocksdb_compactoptions_t* opt,
int v) {
......
......@@ -1012,6 +1012,13 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_use_fsync(
extern C_ROCKSDB_LIBRARY_API void
crocksdb_options_set_db_paths(crocksdb_options_t *, const char *const *,
const size_t *, const uint64_t *, int);
extern C_ROCKSDB_LIBRARY_API size_t
crocksdb_options_get_db_paths_num(crocksdb_options_t *);
extern C_ROCKSDB_LIBRARY_API const char*
crocksdb_options_get_db_path(crocksdb_options_t *, size_t index);
extern C_ROCKSDB_LIBRARY_API uint64_t
crocksdb_options_get_path_target_size(crocksdb_options_t*, size_t index);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_db_log_dir(
crocksdb_options_t*, const char*);
......@@ -1343,6 +1350,8 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_compactoptions_set_change_level(
crocksdb_compactoptions_t*, unsigned char);
extern C_ROCKSDB_LIBRARY_API void crocksdb_compactoptions_set_target_level(
crocksdb_compactoptions_t*, int);
extern C_ROCKSDB_LIBRARY_API void crocksdb_compactoptions_set_target_path_id(
crocksdb_compactoptions_t*, int);
extern C_ROCKSDB_LIBRARY_API void
crocksdb_compactoptions_set_max_subcompactions(crocksdb_compactoptions_t*, int);
extern C_ROCKSDB_LIBRARY_API void
......
......@@ -751,6 +751,9 @@ extern "C" {
target_size: *const u64,
num_paths: c_int,
);
pub fn crocksdb_options_get_db_paths_num(options: *mut Options) -> usize;
pub fn crocksdb_options_get_db_path(options: *mut Options, idx: size_t) -> *const c_char;
pub fn crocksdb_options_get_path_target_size(options: *mut Options, idx: size_t) -> u64;
pub fn crocksdb_options_set_vector_memtable_factory(options: *mut Options, reserved_bytes: u64);
pub fn crocksdb_filterpolicy_create_bloom_full(bits_per_key: c_int) -> *mut DBFilterPolicy;
pub fn crocksdb_filterpolicy_create_bloom(bits_per_key: c_int) -> *mut DBFilterPolicy;
......@@ -1212,6 +1215,7 @@ extern "C" {
);
pub fn crocksdb_compactoptions_set_change_level(opt: *mut DBCompactOptions, v: bool);
pub fn crocksdb_compactoptions_set_target_level(opt: *mut DBCompactOptions, v: i32);
pub fn crocksdb_compactoptions_set_target_path_id(opt: *mut DBCompactOptions, v: i32);
pub fn crocksdb_compactoptions_set_max_subcompactions(opt: *mut DBCompactOptions, v: i32);
pub fn crocksdb_compactoptions_set_bottommost_level_compaction(
opt: *mut DBCompactOptions,
......
......@@ -3262,4 +3262,17 @@ mod test {
let mp = db.get_map_property_cf(cf_handle, "rocksdb.cfstats");
assert!(mp.is_some());
}
#[test]
fn test_get_db_path_from_option() {
let mut opts = DBOptions::new();
opts.create_if_missing(true);
let dir = tempdir_with_prefix("_rust_rocksdb_get_db_path_from_option");
let path = dir.path().to_str().unwrap();
let db = DB::open(opts, path).unwrap();
let path_num = db.get_db_options().get_db_paths_num();
assert_eq!(1, path_num);
let first_path = db.get_db_options().get_db_path(0).unwrap();
assert_eq!(path, first_path.as_str());
}
}
......@@ -558,6 +558,12 @@ impl CompactOptions {
}
}
pub fn set_target_path_id(&mut self, v: i32) {
unsafe {
crocksdb_ffi::crocksdb_compactoptions_set_target_path_id(self.inner, v);
}
}
pub fn set_max_subcompactions(&mut self, v: i32) {
unsafe {
crocksdb_ffi::crocksdb_compactoptions_set_max_subcompactions(self.inner, v);
......@@ -1064,6 +1070,25 @@ impl DBOptions {
}
}
pub fn get_db_paths_num(&self) -> usize {
unsafe { crocksdb_ffi::crocksdb_options_get_db_paths_num(self.inner) }
}
pub fn get_db_path(&self, idx: usize) -> Option<String> {
unsafe {
let ptr = crocksdb_ffi::crocksdb_options_get_db_path(self.inner, idx as size_t);
if ptr.is_null() {
return None;
}
let s = CStr::from_ptr(ptr).to_str().unwrap().to_owned();
Some(s)
}
}
pub fn get_path_target_size(&self, idx: usize) -> u64 {
unsafe { crocksdb_ffi::crocksdb_options_get_path_target_size(self.inner, idx as size_t) }
}
/// Set paranoid checks. The default value is `true`. We can set it to `false`
/// to skip manifest checks.
pub fn set_paranoid_checks(&self, enable: bool) {
......
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