From 048472f62041fa7ceff58d6f96496e8f16432881 Mon Sep 17 00:00:00 2001 From: David Palm Date: Mon, 2 Dec 2019 10:58:14 -0800 Subject: [PATCH] Add missing DataBlock-releated functions to the C-API (#6101) Summary: Adds two missing functions to the C-API: - `rocksdb_block_based_options_set_data_block_index_type` - `rocksdb_block_based_options_set_data_block_hash_ratio` This enables users in other languages to enjoy the new(-ish) feature. The changes here are partially overlapping with [another PR](https://github.com/facebook/rocksdb/pull/5630) but are more focused on the DataBlock indexing options. Pull Request resolved: https://github.com/facebook/rocksdb/pull/6101 Differential Revision: D18765639 fbshipit-source-id: 4a8947e71b179f26fa1eb83c267dd47ee64ac3b3 --- db/c.cc | 11 +++++++++++ db/c_test.c | 3 +++ include/rocksdb/c.h | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/db/c.cc b/db/c.cc index 76007e917..34523f596 100644 --- a/db/c.cc +++ b/db/c.cc @@ -2032,6 +2032,17 @@ void rocksdb_block_based_options_set_index_type( options->rep.index_type = static_cast(v); } +void rocksdb_block_based_options_set_data_block_index_type( + rocksdb_block_based_table_options_t* options, int v) { + options->rep.data_block_index_type = + static_cast(v); +} + +void rocksdb_block_based_options_set_data_block_hash_ratio( + rocksdb_block_based_table_options_t* options, double v) { + options->rep.data_block_hash_table_util_ratio = v; +} + void rocksdb_block_based_options_set_hash_index_allow_collision( rocksdb_block_based_table_options_t* options, unsigned char v) { options->rep.hash_index_allow_collision = v; diff --git a/db/c_test.c b/db/c_test.c index e851aad53..dc62b59ef 100644 --- a/db/c_test.c +++ b/db/c_test.c @@ -487,8 +487,11 @@ int main(int argc, char** argv) { rocksdb_options_set_paranoid_checks(options, 1); rocksdb_options_set_max_open_files(options, 10); rocksdb_options_set_base_background_compactions(options, 1); + table_options = rocksdb_block_based_options_create(); rocksdb_block_based_options_set_block_cache(table_options, cache); + rocksdb_block_based_options_set_data_block_index_type(table_options, 1); + rocksdb_block_based_options_set_data_block_hash_ratio(table_options, 0.75); rocksdb_options_set_block_based_table_factory(options, table_options); rocksdb_options_set_compression(options, rocksdb_no_compression); diff --git a/include/rocksdb/c.h b/include/rocksdb/c.h index ba5408508..909e9888e 100644 --- a/include/rocksdb/c.h +++ b/include/rocksdb/c.h @@ -706,6 +706,14 @@ enum { }; extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_index_type( rocksdb_block_based_table_options_t*, int); // uses one of the above enums +enum { + rocksdb_block_based_table_data_block_index_type_binary_search = 0, + rocksdb_block_based_table_data_block_index_type_binary_search_and_hash = 1, +}; +extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_data_block_index_type( + rocksdb_block_based_table_options_t*, int); // uses one of the above enums +extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_data_block_hash_ratio( + rocksdb_block_based_table_options_t* options, double v); extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_hash_index_allow_collision( rocksdb_block_based_table_options_t*, unsigned char);