Commit 44b2521a authored by Cholerae Hu's avatar Cholerae Hu Committed by GitHub

Merge pull request #91 from pingcap/hyq/bottom

rocksdb: add bottommost_compression method
parents 0a5e010a 1735748e
......@@ -3299,4 +3299,8 @@ void crocksdb_get_properties_of_tables_in_range(
}
}
void crocksdb_set_bottommost_compression(crocksdb_options_t* opt, int c) {
opt->rep.bottommost_compression = static_cast<CompressionType>(c);
}
} // end extern "C"
......@@ -629,6 +629,8 @@ extern C_ROCKSDB_LIBRARY_API size_t crocksdb_options_get_compression_level_numbe
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_set_bottommost_compression(
crocksdb_options_t* opt, int c);
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_create_if_missing(
crocksdb_options_t*, unsigned char);
extern C_ROCKSDB_LIBRARY_API void
......
......@@ -83,6 +83,7 @@ pub enum DBCompressionType {
// DBXpress = 6, not support currently.
DBZstd = 7,
DBZstdNotFinal = 0x40,
DBDisableCompression = 0xff,
}
#[repr(C)]
......@@ -320,6 +321,7 @@ extern "C" {
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_set_bottommost_compression(options: *mut DBOptions, c: 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,
......
......@@ -439,6 +439,10 @@ impl Options {
}
}
pub fn bottommost_compression(&self, c: DBCompressionType) {
unsafe { crocksdb_ffi::crocksdb_set_bottommost_compression(self.inner, c) }
}
pub fn add_merge_operator(&mut self, name: &str, merge_fn: MergeFn) {
let cb = Box::new(MergeOperatorCallback {
name: CString::new(name.as_bytes()).unwrap(),
......
......@@ -377,6 +377,15 @@ fn test_get_compression_per_level() {
assert_eq!(v2.len(), 0);
}
#[test]
fn test_bottommost_compression() {
let path = TempDir::new("_rust_rocksdb_bottommost_compression").expect("");
let mut opts = Options::new();
opts.create_if_missing(true);
opts.bottommost_compression(DBCompressionType::DBNo);
DB::open(opts, path.path().to_str().unwrap()).unwrap();
}
#[test]
fn test_clone_options() {
let mut opts = Options::new();
......
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