Commit 6a714528 authored by Cholerae Hu's avatar Cholerae Hu

rocksdb: add get_compression_per_level method to Options

Signed-off-by: 's avatarCholerae Hu <huyingqian@pingcap.com>
parent 65d4179c
......@@ -1782,6 +1782,17 @@ void crocksdb_options_set_compression_per_level(crocksdb_options_t* opt,
}
}
size_t crocksdb_options_get_compression_level_number(crocksdb_options_t* opt) {
return opt->rep.compression_per_level.size();
}
void crocksdb_options_get_compression_per_level(crocksdb_options_t* opt,
int* level_values) {
for (size_t i = 0; i < opt->rep.compression_per_level.size(); i++) {
level_values[i] = static_cast<int>(opt->rep.compression_per_level[i]);
}
}
void crocksdb_options_set_compression_options(crocksdb_options_t* opt, int w_bits,
int level, int strategy,
int max_dict_bytes) {
......
......@@ -624,6 +624,10 @@ extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_merge_operator(
crocksdb_options_t*, crocksdb_mergeoperator_t*);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_compression_per_level(
crocksdb_options_t* opt, int* level_values, size_t num_levels);
extern C_ROCKSDB_LIBRARY_API size_t crocksdb_options_get_compression_level_number(
crocksdb_options_t* opt);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_get_compression_per_level(
crocksdb_options_t* opt, int *level_values);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_create_if_missing(
crocksdb_options_t*, unsigned char);
extern C_ROCKSDB_LIBRARY_API void
......
......@@ -315,6 +315,9 @@ extern "C" {
pub fn crocksdb_options_set_compression_per_level(options: *mut DBOptions,
level_values: *const DBCompressionType,
num_levels: size_t);
pub fn crocksdb_options_get_compression_level_number(options: *mut DBOptions) -> size_t;
pub fn crocksdb_options_get_compression_per_level(options: *mut DBOptions,
level_values: *mut DBCompressionType);
pub fn crocksdb_options_set_base_background_compactions(optinos: *mut DBOptions,
base_bg_compactions: c_int);
pub fn crocksdb_options_set_max_background_compactions(options: *mut DBOptions,
......
......@@ -413,6 +413,21 @@ impl Options {
}
}
pub fn get_compression_level_number(&self) -> usize {
unsafe { crocksdb_ffi::crocksdb_options_get_compression_level_number(self.inner) as usize }
}
pub fn get_compression_per_level(&self) -> Vec<DBCompressionType> {
let size = self.get_compression_level_number();
unsafe {
let mut ret = Vec::with_capacity(size);
let pret = ret.as_mut_ptr();
crocksdb_ffi::crocksdb_options_get_compression_per_level(self.inner, pret);
ret.set_len(size);
ret
}
}
pub fn add_merge_operator(&mut self, name: &str, merge_fn: MergeFn) {
let cb = Box::new(MergeOperatorCallback {
name: CString::new(name.as_bytes()).unwrap(),
......
......@@ -360,3 +360,15 @@ fn test_get_compression() {
opts.compression(DBCompressionType::DBSnappy);
assert_eq!(opts.get_compression(), DBCompressionType::DBSnappy);
}
#[test]
fn test_get_compression_per_level() {
let mut opts = Options::new();
let compressions = &[DBCompressionType::DBNo, DBCompressionType::DBSnappy];
opts.compression_per_level(compressions);
assert_eq!(opts.get_compression_level_number(), 2);
let v = opts.get_compression_per_level();
assert_eq!(v.len(), 2);
assert_eq!(v[0], DBCompressionType::DBNo);
assert_eq!(v[1], DBCompressionType::DBSnappy);
}
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