From 9c38ce1d0286e135f01056c15f0917c25dcc52ab Mon Sep 17 00:00:00 2001 From: Reed Allman Date: Fri, 22 May 2015 22:34:08 -0700 Subject: [PATCH 1/2] C: extra bbto / noop slice transform --- db/c.cc | 47 +++++++++++++++++++++++++++++++++++++++++++++ include/rocksdb/c.h | 14 ++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/db/c.cc b/db/c.cc index 985c9fb1f..41c63d2eb 100644 --- a/db/c.cc +++ b/db/c.cc @@ -30,6 +30,7 @@ #include "rocksdb/slice_transform.h" #include "rocksdb/table.h" #include "rocksdb/utilities/backupable_db.h" +#include "utilities/merge_operators.h" using rocksdb::Cache; using rocksdb::ColumnFamilyDescriptor; @@ -53,6 +54,7 @@ using rocksdb::FlushOptions; using rocksdb::Iterator; using rocksdb::Logger; using rocksdb::MergeOperator; +using rocksdb::MergeOperators; using rocksdb::NewBloomFilterPolicy; using rocksdb::NewLRUCache; using rocksdb::Options; @@ -602,6 +604,10 @@ void rocksdb_close(rocksdb_t* db) { delete db; } +void rocksdb_options_set_uint64add_merge_operator(rocksdb_options_t* opt) { + opt->rep.merge_operator = rocksdb::MergeOperators::CreateUInt64AddOperator(); +} + rocksdb_t* rocksdb_open_column_families( const rocksdb_options_t* db_options, const char* name, @@ -1186,6 +1192,26 @@ void rocksdb_block_based_options_set_whole_key_filtering( options->rep.whole_key_filtering = v; } +void rocksdb_block_based_options_set_format_version( + rocksdb_block_based_table_options_t* options, int v) { + options->rep.format_version = v; +} + +void rocksdb_block_based_options_set_index_type( + rocksdb_block_based_table_options_t* options, int v) { + options->rep.index_type = static_cast(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; +} + +void rocksdb_block_based_options_set_cache_index_and_filter_blocks( + rocksdb_block_based_table_options_t* options, unsigned char v) { + options->rep.cache_index_and_filter_blocks = v; +} + void rocksdb_options_set_block_based_table_factory( rocksdb_options_t *opt, rocksdb_block_based_table_options_t* table_options) { @@ -2100,6 +2126,27 @@ rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t pref return wrapper; } +rocksdb_slicetransform_t* rocksdb_slicetransform_create_noop() { + struct Wrapper : public rocksdb_slicetransform_t { + const SliceTransform* rep_; + ~Wrapper() { delete rep_; } + const char* Name() const override { return rep_->Name(); } + Slice Transform(const Slice& src) const override { + return rep_->Transform(src); + } + bool InDomain(const Slice& src) const override { + return rep_->InDomain(src); + } + bool InRange(const Slice& src) const override { return rep_->InRange(src); } + static void DoNothing(void*) { } + }; + Wrapper* wrapper = new Wrapper; + wrapper->rep_ = rocksdb::NewNoopTransform(); + wrapper->state_ = nullptr; + wrapper->destructor_ = &Wrapper::DoNothing; + return wrapper; +} + rocksdb_universal_compaction_options_t* rocksdb_universal_compaction_options_create() { rocksdb_universal_compaction_options_t* result = new rocksdb_universal_compaction_options_t; result->rep = new rocksdb::CompactionOptionsUniversal; diff --git a/include/rocksdb/c.h b/include/rocksdb/c.h index 9b9206824..1960f73f4 100644 --- a/include/rocksdb/c.h +++ b/include/rocksdb/c.h @@ -428,6 +428,18 @@ extern void rocksdb_block_based_options_set_block_cache_compressed( rocksdb_cache_t* block_cache_compressed); extern void rocksdb_block_based_options_set_whole_key_filtering( rocksdb_block_based_table_options_t*, unsigned char); +extern void rocksdb_block_based_options_set_format_version( + rocksdb_block_based_table_options_t*, int); +enum { + rocksdb_block_based_table_index_type_binary_search = 0, + rocksdb_block_based_table_index_type_hash_search = 1, +}; +extern void rocksdb_block_based_options_set_index_type( + rocksdb_block_based_table_options_t*, int); // uses one of the above enums +extern void rocksdb_block_based_options_set_hash_index_allow_collision( + rocksdb_block_based_table_options_t*, unsigned char); +extern void rocksdb_block_based_options_set_cache_index_and_filter_blocks( + rocksdb_block_based_table_options_t*, unsigned char); extern void rocksdb_options_set_block_based_table_factory( rocksdb_options_t *opt, rocksdb_block_based_table_options_t* table_options); @@ -476,6 +488,7 @@ extern void rocksdb_options_set_comparator( extern void rocksdb_options_set_merge_operator( rocksdb_options_t*, rocksdb_mergeoperator_t*); +extern void rocksdb_options_set_uint64add_merge_operator(rocksdb_options_t*); extern void rocksdb_options_set_compression_per_level( rocksdb_options_t* opt, int* level_values, @@ -821,6 +834,7 @@ extern rocksdb_slicetransform_t* rocksdb_slicetransform_create( const char* key, size_t length), const char* (*name)(void*)); extern rocksdb_slicetransform_t* rocksdb_slicetransform_create_fixed_prefix(size_t); +extern rocksdb_slicetransform_t* rocksdb_slicetransform_create_noop(); extern void rocksdb_slicetransform_destroy(rocksdb_slicetransform_t*); /* Universal Compaction options */ From 328ad902abf2e1a16122c1566397d12e42bae7eb Mon Sep 17 00:00:00 2001 From: Reed Allman Date: Fri, 22 May 2015 22:53:18 -0700 Subject: [PATCH 2/2] update an import path to fit in with the rest of the kids --- util/thread_operation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/thread_operation.h b/util/thread_operation.h index 709e755a3..d8057bfb3 100644 --- a/util/thread_operation.h +++ b/util/thread_operation.h @@ -13,7 +13,7 @@ #pragma once -#include "include/rocksdb/thread_status.h" +#include "rocksdb/thread_status.h" #include