Commit e951a51d authored by zhangjinpeng1987's avatar zhangjinpeng1987

rocksdb use shared_ptr hold filter_policy, so we don't need call rocksdb_filterpolicy_destroy

parent c712a98e
...@@ -200,7 +200,6 @@ extern "C" { ...@@ -200,7 +200,6 @@ extern "C" {
pub fn rocksdb_options_set_disable_auto_compactions(options: DBOptions, pub fn rocksdb_options_set_disable_auto_compactions(options: DBOptions,
v: c_int); v: c_int);
pub fn rocksdb_options_set_report_bg_io_stats(options: DBOptions, v: c_int); pub fn rocksdb_options_set_report_bg_io_stats(options: DBOptions, v: c_int);
pub fn rocksdb_filterpolicy_destroy(filter_policy: DBFilterPolicy);
pub fn rocksdb_filterpolicy_create_bloom_full(bits_per_key: c_int) pub fn rocksdb_filterpolicy_create_bloom_full(bits_per_key: c_int)
-> DBFilterPolicy; -> DBFilterPolicy;
pub fn rocksdb_filterpolicy_create_bloom(bits_per_key: c_int) pub fn rocksdb_filterpolicy_create_bloom(bits_per_key: c_int)
......
...@@ -28,10 +28,6 @@ pub struct FilterPolicy { ...@@ -28,10 +28,6 @@ pub struct FilterPolicy {
pub struct BlockBasedOptions { pub struct BlockBasedOptions {
inner: rocksdb_ffi::DBBlockBasedTableOptions, inner: rocksdb_ffi::DBBlockBasedTableOptions,
// FilterPolicy must live as long as BlockBasedTableOptions,
// so we introduce this field
filter_policy: Option<FilterPolicy>,
} }
pub struct Options { pub struct Options {
...@@ -50,14 +46,6 @@ impl Drop for Options { ...@@ -50,14 +46,6 @@ impl Drop for Options {
} }
} }
impl Drop for FilterPolicy {
fn drop(& mut self) {
unsafe {
rocksdb_ffi::rocksdb_filterpolicy_destroy(self.inner);
}
}
}
impl Drop for BlockBasedOptions { impl Drop for BlockBasedOptions {
fn drop(&mut self) { fn drop(&mut self) {
unsafe { unsafe {
...@@ -82,7 +70,7 @@ impl Default for BlockBasedOptions { ...@@ -82,7 +70,7 @@ impl Default for BlockBasedOptions {
if opt_ptr.is_null() { if opt_ptr.is_null() {
panic!("Could not create rocksdb block based options".to_string()); panic!("Could not create rocksdb block based options".to_string());
} }
BlockBasedOptions { inner: block_opts, filter_policy: None } BlockBasedOptions { inner: block_opts }
} }
} }
...@@ -120,10 +108,9 @@ impl BlockBasedOptions { ...@@ -120,10 +108,9 @@ impl BlockBasedOptions {
} }
pub fn set_filter_policy(&mut self, filter: FilterPolicy) { pub fn set_filter_policy(&mut self, filter: FilterPolicy) {
self.filter_policy = Some(filter);
unsafe { unsafe {
rocksdb_ffi::rocksdb_block_based_options_set_filter_policy(self.inner, rocksdb_ffi::rocksdb_block_based_options_set_filter_policy(self.inner,
self.filter_policy.as_ref().unwrap().inner); filter.inner);
} }
} }
......
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