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