Unverified Commit f6f7c76c authored by Connor's avatar Connor Committed by GitHub

Fix titan cf options for create_cf (#387) (#390)

* fix titan cf options for create_cf
Signed-off-by: 's avatarConnor1996 <zbk602423539@gmail.com>
parent 7641b703
......@@ -5079,7 +5079,7 @@ crocksdb_t* ctitandb_open_column_families(
crocksdb_column_family_handle_t** column_family_handles, char** errptr) {
std::vector<TitanCFDescriptor> column_families;
for (int i = 0; i < num_column_families; i++) {
*(ColumnFamilyOptions*)&titan_column_family_options[i]->rep =
*((ColumnFamilyOptions*)(&titan_column_family_options[i]->rep)) =
column_family_options[i]->rep;
column_families.push_back(
TitanCFDescriptor(std::string(column_family_names[i]),
......@@ -5111,11 +5111,15 @@ crocksdb_t* ctitandb_open_column_families(
// use ctitandb_t for titan specific functions.
crocksdb_column_family_handle_t* ctitandb_create_column_family(
crocksdb_t* db,
const crocksdb_options_t* column_family_options,
const ctitandb_options_t* titan_column_family_options,
const char* column_family_name,
char** errptr) {
// Blindly cast db into TitanDB.
TitanDB* titan_db = reinterpret_cast<TitanDB*>(db->rep);
// Copy the ColumnFamilyOptions part of `column_family_options` into `titan_column_family_options`
*((ColumnFamilyOptions*)(&titan_column_family_options->rep)) =
column_family_options->rep;
crocksdb_column_family_handle_t* handle = new crocksdb_column_family_handle_t;
SaveError(errptr,
titan_db->CreateColumnFamily(
......
......@@ -2029,6 +2029,7 @@ extern C_ROCKSDB_LIBRARY_API crocksdb_t* ctitandb_open_column_families(
extern C_ROCKSDB_LIBRARY_API
crocksdb_column_family_handle_t* ctitandb_create_column_family(
crocksdb_t* db,
const crocksdb_options_t* column_family_options,
const ctitandb_options_t* titan_column_family_options,
const char* column_family_name,
char** errptr);
......
......@@ -1891,6 +1891,7 @@ extern "C" {
pub fn ctitandb_create_column_family(
db: *mut DBInstance,
column_family_options: *const Options,
titan_column_family_options: *const DBTitanDBOptions,
column_family_name: *const c_char,
err: *mut *mut c_char,
......
......@@ -784,6 +784,7 @@ impl DB {
} else {
ffi_try!(ctitandb_create_column_family(
self.inner,
cfd.options.inner,
cfd.options.titan_inner,
cname_ptr
))
......
......@@ -120,7 +120,7 @@ fn test_titandb() {
cf_opts.add_table_properties_collector_factory("titan-collector", Box::new(f));
cf_opts.set_titandb_options(&tdb_opts);
let db = DB::open_cf(
let mut db = DB::open_cf(
opts,
path.path().to_str().unwrap(),
vec![("default", cf_opts)],
......@@ -137,6 +137,13 @@ fn test_titandb() {
db.flush(true).unwrap();
}
let mut cf_opts = ColumnFamilyOptions::new();
cf_opts.set_num_levels(4);
cf_opts.set_titandb_options(&tdb_opts);
db.create_cf(("cf1", cf_opts)).unwrap();
let cf1 = db.cf_handle("cf1").unwrap();
assert_eq!(db.get_options_cf(cf1).get_num_levels(), 4);
let mut iter = db.iter();
iter.seek(SeekKey::Start);
for i in 0..n {
......
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