Commit 65d4179c authored by Cholerae Hu's avatar Cholerae Hu Committed by zhangjinpeng1987

rocksdb: add get_compression method (#83)

parent 2321bc2c
...@@ -1768,6 +1768,10 @@ void crocksdb_options_set_compression(crocksdb_options_t* opt, int t) { ...@@ -1768,6 +1768,10 @@ void crocksdb_options_set_compression(crocksdb_options_t* opt, int t) {
opt->rep.compression = static_cast<CompressionType>(t); opt->rep.compression = static_cast<CompressionType>(t);
} }
int crocksdb_options_get_compression(crocksdb_options_t* opt) {
return static_cast<int>(opt->rep.compression);
}
void crocksdb_options_set_compression_per_level(crocksdb_options_t* opt, void crocksdb_options_set_compression_per_level(crocksdb_options_t* opt,
int* level_values, int* level_values,
size_t num_levels) { size_t num_levels) {
......
...@@ -854,6 +854,8 @@ enum { ...@@ -854,6 +854,8 @@ enum {
}; };
extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_compression( extern C_ROCKSDB_LIBRARY_API void crocksdb_options_set_compression(
crocksdb_options_t*, int); crocksdb_options_t*, int);
extern C_ROCKSDB_LIBRARY_API int crocksdb_options_get_compression(
crocksdb_options_t*);
enum { enum {
crocksdb_level_compaction = 0, crocksdb_level_compaction = 0,
......
...@@ -71,7 +71,7 @@ pub enum DBEntryType { ...@@ -71,7 +71,7 @@ pub enum DBEntryType {
Other = 4, Other = 4,
} }
#[derive(Copy, Clone)] #[derive(Copy, Clone, Debug, PartialEq)]
#[repr(C)] #[repr(C)]
pub enum DBCompressionType { pub enum DBCompressionType {
DBNo = 0, DBNo = 0,
...@@ -311,6 +311,7 @@ extern "C" { ...@@ -311,6 +311,7 @@ extern "C" {
pub fn crocksdb_options_set_compaction_style(options: *mut DBOptions, cs: DBCompactionStyle); pub fn crocksdb_options_set_compaction_style(options: *mut DBOptions, cs: DBCompactionStyle);
pub fn crocksdb_options_set_compression(options: *mut DBOptions, pub fn crocksdb_options_set_compression(options: *mut DBOptions,
compression_style_no: DBCompressionType); compression_style_no: DBCompressionType);
pub fn crocksdb_options_get_compression(options: *mut DBOptions) -> DBCompressionType;
pub fn crocksdb_options_set_compression_per_level(options: *mut DBOptions, pub fn crocksdb_options_set_compression_per_level(options: *mut DBOptions,
level_values: *const DBCompressionType, level_values: *const DBCompressionType,
num_levels: size_t); num_levels: size_t);
......
...@@ -401,6 +401,10 @@ impl Options { ...@@ -401,6 +401,10 @@ impl Options {
} }
} }
pub fn get_compression(&self) -> DBCompressionType {
unsafe { crocksdb_ffi::crocksdb_options_get_compression(self.inner) }
}
pub fn compression_per_level(&mut self, level_types: &[DBCompressionType]) { pub fn compression_per_level(&mut self, level_types: &[DBCompressionType]) {
unsafe { unsafe {
crocksdb_ffi::crocksdb_options_set_compression_per_level(self.inner, crocksdb_ffi::crocksdb_options_set_compression_per_level(self.inner,
......
...@@ -15,7 +15,7 @@ use rocksdb::{DB, Options, BlockBasedOptions, WriteOptions, SliceTransform, Writ ...@@ -15,7 +15,7 @@ use rocksdb::{DB, Options, BlockBasedOptions, WriteOptions, SliceTransform, Writ
CompactOptions}; CompactOptions};
use rocksdb::crocksdb_ffi::{DBStatisticsHistogramType as HistogramType, use rocksdb::crocksdb_ffi::{DBStatisticsHistogramType as HistogramType,
DBStatisticsTickerType as TickerType, DBInfoLogLevel as InfoLogLevel, DBStatisticsTickerType as TickerType, DBInfoLogLevel as InfoLogLevel,
CompactionPriority}; CompactionPriority, DBCompressionType};
use std::path::Path; use std::path::Path;
use std::thread; use std::thread;
use std::time::Duration; use std::time::Duration;
...@@ -352,3 +352,11 @@ fn test_allow_concurrent_memtable_write() { ...@@ -352,3 +352,11 @@ fn test_allow_concurrent_memtable_write() {
db.put(format!("k_{}", i).as_bytes(), b"v").unwrap(); db.put(format!("k_{}", i).as_bytes(), b"v").unwrap();
} }
} }
#[test]
fn test_get_compression() {
let mut opts = Options::new();
opts.create_if_missing(true);
opts.compression(DBCompressionType::DBSnappy);
assert_eq!(opts.get_compression(), 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