rocksdb icon indicating copy to clipboard operation
rocksdb copied to clipboard

CreateColumnFamilies with column family descriptors is not available via the C API

Open sadderchris opened this issue 1 year ago • 4 comments

Note: Please use Issues only for bug reports. For questions, discussions, feature requests, etc. post to dev group: https://groups.google.com/forum/#!forum/rocksdb or https://www.facebook.com/groups/rocksdb.dev

Expected behavior

Using the C API, I can batch create column families from column family descriptors

Actual behavior

It's possible to create a single column family (1), or a batch of column families that all use the same options (2), but not from column family descriptors

Steps to reproduce the behavior

N/A

sadderchris avatar Jul 25 '24 19:07 sadderchris

Hello @sadderchris ,

I'm looking into C API and it looks like column family descriptors are not exposed at all. Usually where API expect column family descriptor, we pass two parameters, column_family_names and column_family_options. This obviously missing for rocksdb_create_column_families. Can you please check API proposal bellow if it describe your requirements ?

rocksdb_column_family_handle_t** rocksdb_create_column_families(
    rocksdb_t* db, 
    int num_column_families,
    const char* const* column_family_names,
    const rocksdb_options_t* const* column_family_options,
    size_t* lencfs, char** errptr);

Radek

cc: @adamretter @pdillinger

rhubner avatar Jul 26 '24 10:07 rhubner

Wouldn't this break any existing callers of rocksdb_create_column_families? Or is backwards compatibility in the C API not a concern?

sadderchris avatar Jul 26 '24 17:07 sadderchris

Hello @sadderchris ,

of course you are correct. Too much time in Java/C++ that I almost forgot C doesn't support overloading.

rocksdb_column_family_handle_t** rocksdb_create_column_families_with_options(
                               rocksdb_t* db,
                               int num_column_families,
                               const char* const* column_family_names,
                               const rocksdb_options_t* const* column_family_options,
                               size_t* lencfs, char** errptr);

Radek

rhubner avatar Jul 29 '24 12:07 rhubner

Thanks for the quick turnaround, this looks like it would work for our purposes.

sadderchris avatar Jul 29 '24 17:07 sadderchris