Merge pull request #141 from jeizsm/list-cf

list column families
master
Tyler Neely 7 years ago committed by GitHub
commit 44020fa0a5
  1. 26
      src/db.rs
  2. 11
      tests/test_column_family.rs

@ -659,6 +659,32 @@ impl DB {
}) })
} }
pub fn list_cf<P: AsRef<Path>>(opts: &Options, path: P) -> Result<Vec<String>, Error> {
let path = path.as_ref();
let cpath = match CString::new(path.to_string_lossy().as_bytes()) {
Ok(c) => c,
Err(_) => {
return Err(Error::new("Failed to convert path to CString \
when opening DB."
.to_owned()))
}
};
let mut length = 0;
unsafe {
let ptr = ffi_try!(ffi::rocksdb_list_column_families(opts.inner,
cpath.as_ptr() as *const _,
&mut length));
let vec = Vec::from_raw_parts(ptr, length, length).iter().map(|&ptr| {
CString::from_raw(ptr).into_string().unwrap()
}).collect();
Ok(vec)
}
}
pub fn destroy<P: AsRef<Path>>(opts: &Options, path: P) -> Result<(), Error> { pub fn destroy<P: AsRef<Path>>(opts: &Options, path: P) -> Result<(), Error> {
let cpath = CString::new(path.as_ref().to_string_lossy().as_bytes()).unwrap(); let cpath = CString::new(path.as_ref().to_string_lossy().as_bytes()).unwrap();
unsafe { unsafe {

@ -62,6 +62,17 @@ pub fn test_column_family() {
Err(e) => panic!("failed to open db with column family: {}", e), Err(e) => panic!("failed to open db with column family: {}", e),
} }
} }
// should be able to list a cf
{
let opts = Options::default();
let vec = DB::list_cf(&opts, path);
match vec {
Ok(vec) => assert_eq!(vec, vec!["default", "cf1"]),
Err(e) => panic!("failed to drop column family: {}", e),
}
}
// TODO should be able to use writebatch ops with a cf // TODO should be able to use writebatch ops with a cf
{ {
} }

Loading…
Cancel
Save