Skip to content

Commit 078365b

Browse files
committed
Merge pull request XRPLF#108 from tecbot/c-api-enhancements
C-API enhancements
2 parents 48bc0c6 + 98422cb commit 078365b

File tree

3 files changed

+94
-7
lines changed

3 files changed

+94
-7
lines changed

db/c.cc

+75-7
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
#include "rocksdb/universal_compaction.h"
2626
#include "rocksdb/statistics.h"
2727
#include "rocksdb/slice_transform.h"
28+
#include "rocksdb/table.h"
2829

2930
using rocksdb::Cache;
3031
using rocksdb::Comparator;
3132
using rocksdb::CompressionType;
3233
using rocksdb::DB;
3334
using rocksdb::Env;
35+
using rocksdb::InfoLogLevel;
3436
using rocksdb::FileLock;
3537
using rocksdb::FilterPolicy;
3638
using rocksdb::FlushOptions;
@@ -656,6 +658,11 @@ void rocksdb_options_set_info_log(rocksdb_options_t* opt, rocksdb_logger_t* l) {
656658
}
657659
}
658660

661+
void rocksdb_options_set_info_log_level(
662+
rocksdb_options_t* opt, int v) {
663+
opt->rep.info_log_level = static_cast<InfoLogLevel>(v);
664+
}
665+
659666
void rocksdb_options_set_write_buffer_size(rocksdb_options_t* opt, size_t s) {
660667
opt->rep.write_buffer_size = s;
661668
}
@@ -714,6 +721,14 @@ void rocksdb_options_set_max_grandparent_overlap_factor(
714721
opt->rep.max_grandparent_overlap_factor = n;
715722
}
716723

724+
void rocksdb_options_set_max_bytes_for_level_multiplier_additional(
725+
rocksdb_options_t* opt, int* level_values, size_t num_levels) {
726+
opt->rep.max_bytes_for_level_multiplier_additional.resize(num_levels);
727+
for (size_t i = 0; i < num_levels; ++i) {
728+
opt->rep.max_bytes_for_level_multiplier_additional[i] = level_values[i];
729+
}
730+
}
731+
717732
void rocksdb_options_enable_statistics(rocksdb_options_t* opt) {
718733
opt->rep.statistics = rocksdb::CreateDBStatistics();
719734
}
@@ -857,6 +872,24 @@ void rocksdb_options_set_advise_random_on_open(
857872
opt->rep.advise_random_on_open = v;
858873
}
859874

875+
void rocksdb_options_set_access_hint_on_compaction_start(
876+
rocksdb_options_t* opt, int v) {
877+
switch(v) {
878+
case 0:
879+
opt->rep.access_hint_on_compaction_start = rocksdb::Options::NONE;
880+
break;
881+
case 1:
882+
opt->rep.access_hint_on_compaction_start = rocksdb::Options::NORMAL;
883+
break;
884+
case 2:
885+
opt->rep.access_hint_on_compaction_start = rocksdb::Options::SEQUENTIAL;
886+
break;
887+
case 3:
888+
opt->rep.access_hint_on_compaction_start = rocksdb::Options::WILLNEED;
889+
break;
890+
}
891+
}
892+
860893
void rocksdb_options_set_use_adaptive_mutex(
861894
rocksdb_options_t* opt, unsigned char v) {
862895
opt->rep.use_adaptive_mutex = v;
@@ -867,6 +900,11 @@ void rocksdb_options_set_bytes_per_sync(
867900
opt->rep.bytes_per_sync = v;
868901
}
869902

903+
void rocksdb_options_set_verify_checksums_in_compaction(
904+
rocksdb_options_t* opt, unsigned char v) {
905+
opt->rep.verify_checksums_in_compaction = v;
906+
}
907+
870908
void rocksdb_options_set_filter_deletes(
871909
rocksdb_options_t* opt, unsigned char v) {
872910
opt->rep.filter_deletes = v;
@@ -1003,11 +1041,48 @@ void rocksdb_options_set_hash_link_list_rep(
10031041
opt->rep.memtable_factory.reset(factory);
10041042
}
10051043

1044+
void rocksdb_options_set_plain_table_factory(
1045+
rocksdb_options_t *opt, uint32_t user_key_len, int bloom_bits_per_key,
1046+
double hash_table_ratio, size_t index_sparseness) {
1047+
static rocksdb::TableFactory* factory = 0;
1048+
if (!factory) {
1049+
factory = rocksdb::NewPlainTableFactory(
1050+
user_key_len, bloom_bits_per_key,
1051+
hash_table_ratio, index_sparseness);
1052+
}
1053+
opt->rep.table_factory.reset(factory);
1054+
}
1055+
10061056
void rocksdb_options_set_max_successive_merges(
10071057
rocksdb_options_t* opt, size_t v) {
10081058
opt->rep.max_successive_merges = v;
10091059
}
10101060

1061+
void rocksdb_options_set_min_partial_merge_operands(
1062+
rocksdb_options_t* opt, uint32_t v) {
1063+
opt->rep.min_partial_merge_operands = v;
1064+
}
1065+
1066+
void rocksdb_options_set_bloom_locality(
1067+
rocksdb_options_t* opt, uint32_t v) {
1068+
opt->rep.bloom_locality = v;
1069+
}
1070+
1071+
void rocksdb_options_set_allow_thread_local(
1072+
rocksdb_options_t* opt, unsigned char v) {
1073+
opt->rep.allow_thread_local = v;
1074+
}
1075+
1076+
void rocksdb_options_set_inplace_update_support(
1077+
rocksdb_options_t* opt, unsigned char v) {
1078+
opt->rep.inplace_update_support = v;
1079+
}
1080+
1081+
void rocksdb_options_set_inplace_update_num_locks(
1082+
rocksdb_options_t* opt, size_t v) {
1083+
opt->rep.inplace_update_num_locks = v;
1084+
}
1085+
10111086
void rocksdb_options_set_compaction_style(rocksdb_options_t *opt, int style) {
10121087
opt->rep.compaction_style = static_cast<rocksdb::CompactionStyle>(style);
10131088
}
@@ -1022,21 +1097,14 @@ DB::OpenForReadOnly
10221097
DB::MultiGet
10231098
DB::KeyMayExist
10241099
DB::GetOptions
1025-
DB::GetLiveFiles
10261100
DB::GetSortedWalFiles
10271101
DB::GetLatestSequenceNumber
10281102
DB::GetUpdatesSince
1029-
DB::DeleteFile
10301103
DB::GetDbIdentity
10311104
DB::RunManualCompaction
10321105
custom cache
10331106
compaction_filter
1034-
max_bytes_for_level_multiplier_additional
1035-
access_hint_on_compaction_start
1036-
table_factory
10371107
table_properties_collectors
1038-
inplace_update_support
1039-
inplace_update_num_locks
10401108
*/
10411109

10421110
rocksdb_comparator_t* rocksdb_comparator_create(

db/c_test.c

+1
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ int main(int argc, char** argv) {
443443
rocksdb_options_set_filter_policy(options, policy);
444444
rocksdb_options_set_prefix_extractor(options, rocksdb_slicetransform_create_fixed_prefix(3));
445445
rocksdb_options_set_hash_skip_list_rep(options, 50000, 4, 4);
446+
rocksdb_options_set_plain_table_factory(options, 4, 10, 0.75, 16);
446447

447448
db = rocksdb_open(options, dbname, &err);
448449
CheckNoError(err);

include/rocksdb/c.h

+18
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ extern void rocksdb_options_set_paranoid_checks(
243243
rocksdb_options_t*, unsigned char);
244244
extern void rocksdb_options_set_env(rocksdb_options_t*, rocksdb_env_t*);
245245
extern void rocksdb_options_set_info_log(rocksdb_options_t*, rocksdb_logger_t*);
246+
extern void rocksdb_options_set_info_log_level(rocksdb_options_t*, int);
246247
extern void rocksdb_options_set_write_buffer_size(rocksdb_options_t*, size_t);
247248
extern void rocksdb_options_set_max_open_files(rocksdb_options_t*, int);
248249
extern void rocksdb_options_set_cache(rocksdb_options_t*, rocksdb_cache_t*);
@@ -275,6 +276,8 @@ extern void rocksdb_options_set_expanded_compaction_factor(
275276
rocksdb_options_t*, int);
276277
extern void rocksdb_options_set_max_grandparent_overlap_factor(
277278
rocksdb_options_t*, int);
279+
extern void rocksdb_options_set_max_bytes_for_level_multiplier_additional(
280+
rocksdb_options_t*, int* level_values, size_t num_levels);
278281
extern void rocksdb_options_enable_statistics(rocksdb_options_t*);
279282

280283
extern void rocksdb_options_set_max_write_buffer_number(rocksdb_options_t*, int);
@@ -330,10 +333,14 @@ extern void rocksdb_options_set_block_size_deviation(
330333
rocksdb_options_t*, int);
331334
extern void rocksdb_options_set_advise_random_on_open(
332335
rocksdb_options_t*, unsigned char);
336+
extern void rocksdb_options_set_access_hint_on_compaction_start(
337+
rocksdb_options_t*, int);
333338
extern void rocksdb_options_set_use_adaptive_mutex(
334339
rocksdb_options_t*, unsigned char);
335340
extern void rocksdb_options_set_bytes_per_sync(
336341
rocksdb_options_t*, uint64_t);
342+
extern void rocksdb_options_set_verify_checksums_in_compaction(
343+
rocksdb_options_t*, unsigned char);
337344
extern void rocksdb_options_set_filter_deletes(
338345
rocksdb_options_t*, unsigned char);
339346
extern void rocksdb_options_set_max_sequential_skip_in_iterations(
@@ -348,6 +355,7 @@ extern void rocksdb_options_prepare_for_bulk_load(rocksdb_options_t*);
348355
extern void rocksdb_options_set_memtable_vector_rep(rocksdb_options_t*);
349356
extern void rocksdb_options_set_hash_skip_list_rep(rocksdb_options_t*, size_t, int32_t, int32_t);
350357
extern void rocksdb_options_set_hash_link_list_rep(rocksdb_options_t*, size_t);
358+
extern void rocksdb_options_set_plain_table_factory(rocksdb_options_t*, uint32_t, int, double, size_t);
351359

352360
extern void rocksdb_options_set_max_bytes_for_level_base(rocksdb_options_t* opt, uint64_t n);
353361
extern void rocksdb_options_set_stats_dump_period_sec(rocksdb_options_t* opt, unsigned int sec);
@@ -360,6 +368,16 @@ extern void rocksdb_options_set_memtable_prefix_bloom_probes(
360368
rocksdb_options_t*, uint32_t);
361369
extern void rocksdb_options_set_max_successive_merges(
362370
rocksdb_options_t*, size_t);
371+
extern void rocksdb_options_set_min_partial_merge_operands(
372+
rocksdb_options_t*, uint32_t);
373+
extern void rocksdb_options_set_bloom_locality(
374+
rocksdb_options_t*, uint32_t);
375+
extern void rocksdb_options_set_allow_thread_local(
376+
rocksdb_options_t*, unsigned char);
377+
extern void rocksdb_options_set_inplace_update_support(
378+
rocksdb_options_t*, unsigned char);
379+
extern void rocksdb_options_set_inplace_update_num_locks(
380+
rocksdb_options_t*, size_t);
363381

364382
enum {
365383
rocksdb_no_compression = 0,

0 commit comments

Comments
 (0)