From 89b94bc1353ec44010f1465f0940768b834930af Mon Sep 17 00:00:00 2001 From: mratsim Date: Sat, 27 Jan 2018 17:01:14 +0100 Subject: [PATCH] Add nim-rocksdb usage example --- README.md | 84 ++++++++++++++++++ examples/simple_example.nim | 66 ++++++++++++++ headers/c.h | 1 + src/rocksdb_c.nim | 171 ++++++++++++++++++------------------ 4 files changed, 235 insertions(+), 87 deletions(-) create mode 100644 examples/simple_example.nim diff --git a/README.md b/README.md index 53286e3..df63dc7 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,90 @@ A Nim wrapper for [Facebook's RocksDB](https://github.com/facebook/rocksdb), a persistent key-value store for Flash and RAM Storage. +## Current status + +Nim-RocksDB currently provides a wrapper for the low-level functions of RocksDB + +## Usage + +See [simple_example](examples/simple_example.nim) + +```nim +import rocksdb, cpuinfo + +const + dbPath: cstring = "/tmp/rocksdb_simple_example" + dbBackupPath: cstring = "/tmp/rocksdb_simple_example_backup" + +proc main() = + var + db: ptr rocksdb_t + be: ptr rocksdb_backup_engine_t + options = rocksdb_options_create() + # Optimize RocksDB. This is the easiest way to + # get RocksDB to perform well + let cpus = countProcessors() + rocksdb_options_increase_parallelism(options, cpus.int32) + rocksdb_options_optimize_level_style_compaction(options, 0); + # create the DB if it's not already present + rocksdb_options_set_create_if_missing(options, 1); + + # open DB + var err: cstringArray + db = rocksdb_open(options, dbPath, err) + doAssert err.isNil + + # open Backup Engine that we will use for backing up our database + be = rocksdb_backup_engine_open(options, dbBackupPath, err) + doAssert err.isNil + + # Put key-value + var writeOptions = rocksdb_writeoptions_create() + let key: cstring = "key" + let value: cstring = "value" + rocksdb_put(db, writeOptions, key, key.len, value, value.len, err) + doAssert err.isNil + + # Get value + var readOptions = rocksdb_readoptions_create() + var len: csize + let returned_value = rocksdb_get(db, readOptions, key, key.len, addr len, err) + doAssert err.isNil + doAssert returned_value == value + + # create new backup in a directory specified by DBBackupPath + rocksdb_backup_engine_create_new_backup(be, db, err) + doAssert err.isNil + + rocksdb_close(db) + + # If something is wrong, you might want to restore data from last backup + var restoreOptions = rocksdb_restore_options_create() + rocksdb_backup_engine_restore_db_from_latest_backup(be, dbPath, dbPath, + restoreOptions, err) + doAssert err.isNil + rocksdb_restore_options_destroy(restore_options) + + db = rocksdb_open(options, dbPath, err) + doAssert err.isNil + + # cleanup + rocksdb_writeoptions_destroy(writeOptions) + rocksdb_readoptions_destroy(readOptions) + rocksdb_options_destroy(options) + rocksdb_backup_engine_close(be) + rocksdb_close(db) + +main() +``` + +## Future directions + +In the future, Nim-RocksDB might provide a high-level API that: + +- is more in line with Nim conventions (types in CamelCase), +- automatically checks for errors, +- leverage Nim features like destructors for automatic resource cleanup. ## License diff --git a/examples/simple_example.nim b/examples/simple_example.nim new file mode 100644 index 0000000..52d8056 --- /dev/null +++ b/examples/simple_example.nim @@ -0,0 +1,66 @@ +import rocksdb, cpuinfo + +const + dbPath: cstring = "/tmp/rocksdb_simple_example" + dbBackupPath: cstring = "/tmp/rocksdb_simple_example_backup" + +proc main() = + var + db: ptr rocksdb_t + be: ptr rocksdb_backup_engine_t + options = rocksdb_options_create() + # Optimize RocksDB. This is the easiest way to + # get RocksDB to perform well + let cpus = countProcessors() + rocksdb_options_increase_parallelism(options, cpus.int32) + rocksdb_options_optimize_level_style_compaction(options, 0); + # create the DB if it's not already present + rocksdb_options_set_create_if_missing(options, 1); + + # open DB + var err: cstringArray + db = rocksdb_open(options, dbPath, err) + doAssert err.isNil + + # open Backup Engine that we will use for backing up our database + be = rocksdb_backup_engine_open(options, dbBackupPath, err) + doAssert err.isNil + + # Put key-value + var writeOptions = rocksdb_writeoptions_create() + let key: cstring = "key" + let value: cstring = "value" + rocksdb_put(db, writeOptions, key, key.len, value, value.len, err) + doAssert err.isNil + + # Get value + var readOptions = rocksdb_readoptions_create() + var len: csize + let returned_value = rocksdb_get(db, readOptions, key, key.len, addr len, err) + doAssert err.isNil + doAssert returned_value == value + + # create new backup in a directory specified by DBBackupPath + rocksdb_backup_engine_create_new_backup(be, db, err) + doAssert err.isNil + + rocksdb_close(db) + + # If something is wrong, you might want to restore data from last backup + var restoreOptions = rocksdb_restore_options_create() + rocksdb_backup_engine_restore_db_from_latest_backup(be, dbPath, dbPath, + restoreOptions, err) + doAssert err.isNil + rocksdb_restore_options_destroy(restore_options) + + db = rocksdb_open(options, dbPath, err) + doAssert err.isNil + + # cleanup + rocksdb_writeoptions_destroy(writeOptions) + rocksdb_readoptions_destroy(readOptions) + rocksdb_options_destroy(options) + rocksdb_backup_engine_close(be) + rocksdb_close(db) + +main() \ No newline at end of file diff --git a/headers/c.h b/headers/c.h index dfa4a02..680dc3e 100644 --- a/headers/c.h +++ b/headers/c.h @@ -66,6 +66,7 @@ # mangle int16_t int16 # mangle int8_t int8 # mangle int64_t int64 +# mangle cuchar uint8 #else # ifdef _WIN32 # ifdef ROCKSDB_DLL diff --git a/src/rocksdb_c.nim b/src/rocksdb_c.nim index e6031a8..49dab96 100644 --- a/src/rocksdb_c.nim +++ b/src/rocksdb_c.nim @@ -87,7 +87,7 @@ type proc rocksdb_open*(options: ptr rocksdb_options_t; name: cstring; errptr: cstringArray): ptr rocksdb_t {. cdecl, importc: "rocksdb_open", dynlib: librocksdb.} proc rocksdb_open_for_read_only*(options: ptr rocksdb_options_t; name: cstring; - error_if_log_file_exist: cuchar; + error_if_log_file_exist: uint8; errptr: cstringArray): ptr rocksdb_t {.cdecl, importc: "rocksdb_open_for_read_only", dynlib: librocksdb.} proc rocksdb_backup_engine_open*(options: ptr rocksdb_options_t; path: cstring; @@ -149,7 +149,7 @@ proc rocksdb_open_for_read_only_column_families*(options: ptr rocksdb_options_t; name: cstring; num_column_families: cint; column_family_names: cstringArray; column_family_options: ptr ptr rocksdb_options_t; column_family_handles: ptr ptr rocksdb_column_family_handle_t; - error_if_log_file_exist: cuchar; errptr: cstringArray): ptr rocksdb_t {.cdecl, + error_if_log_file_exist: uint8; errptr: cstringArray): ptr rocksdb_t {.cdecl, importc: "rocksdb_open_for_read_only_column_families", dynlib: librocksdb.} proc rocksdb_list_column_families*(options: ptr rocksdb_options_t; name: cstring; lencf: ptr csize; errptr: cstringArray): cstringArray {. @@ -295,7 +295,7 @@ proc rocksdb_flush*(db: ptr rocksdb_t; options: ptr rocksdb_flushoptions_t; dynlib: librocksdb.} proc rocksdb_disable_file_deletions*(db: ptr rocksdb_t; errptr: cstringArray) {.cdecl, importc: "rocksdb_disable_file_deletions", dynlib: librocksdb.} -proc rocksdb_enable_file_deletions*(db: ptr rocksdb_t; force: cuchar; +proc rocksdb_enable_file_deletions*(db: ptr rocksdb_t; force: uint8; errptr: cstringArray) {.cdecl, importc: "rocksdb_enable_file_deletions", dynlib: librocksdb.} ## Management operations @@ -310,7 +310,7 @@ proc rocksdb_repair_db*(options: ptr rocksdb_options_t; name: cstring; proc rocksdb_iter_destroy*(a2: ptr rocksdb_iterator_t) {.cdecl, importc: "rocksdb_iter_destroy", dynlib: librocksdb.} -proc rocksdb_iter_valid*(a2: ptr rocksdb_iterator_t): cuchar {.cdecl, +proc rocksdb_iter_valid*(a2: ptr rocksdb_iterator_t): uint8 {.cdecl, importc: "rocksdb_iter_valid", dynlib: librocksdb.} proc rocksdb_iter_seek_to_first*(a2: ptr rocksdb_iterator_t) {.cdecl, importc: "rocksdb_iter_seek_to_first", dynlib: librocksdb.} @@ -430,7 +430,7 @@ proc rocksdb_writebatch_pop_save_point*(a2: ptr rocksdb_writebatch_t; importc: "rocksdb_writebatch_pop_save_point", dynlib: librocksdb.} ## Write batch with index -proc rocksdb_writebatch_wi_create*(reserved_bytes: csize; overwrite_keys: cuchar): ptr rocksdb_writebatch_wi_t {. +proc rocksdb_writebatch_wi_create*(reserved_bytes: csize; overwrite_keys: uint8): ptr rocksdb_writebatch_wi_t {. cdecl, importc: "rocksdb_writebatch_wi_create", dynlib: librocksdb.} proc rocksdb_writebatch_wi_create_from*(rep: cstring; size: csize): ptr rocksdb_writebatch_wi_t {. cdecl, importc: "rocksdb_writebatch_wi_create_from", dynlib: librocksdb.} @@ -583,11 +583,11 @@ proc rocksdb_block_based_options_set_metadata_block_size*( cdecl, importc: "rocksdb_block_based_options_set_metadata_block_size", dynlib: librocksdb.} proc rocksdb_block_based_options_set_partition_filters*( - options: ptr rocksdb_block_based_table_options_t; partition_filters: cuchar) {. + options: ptr rocksdb_block_based_table_options_t; partition_filters: uint8) {. cdecl, importc: "rocksdb_block_based_options_set_partition_filters", dynlib: librocksdb.} proc rocksdb_block_based_options_set_use_delta_encoding*( - options: ptr rocksdb_block_based_table_options_t; use_delta_encoding: cuchar) {. + options: ptr rocksdb_block_based_table_options_t; use_delta_encoding: uint8) {. cdecl, importc: "rocksdb_block_based_options_set_use_delta_encoding", dynlib: librocksdb.} proc rocksdb_block_based_options_set_filter_policy*( @@ -595,9 +595,8 @@ proc rocksdb_block_based_options_set_filter_policy*( filter_policy: ptr rocksdb_filterpolicy_t) {.cdecl, importc: "rocksdb_block_based_options_set_filter_policy", dynlib: librocksdb.} proc rocksdb_block_based_options_set_no_block_cache*( - options: ptr rocksdb_block_based_table_options_t; no_block_cache: cuchar) {. - cdecl, importc: "rocksdb_block_based_options_set_no_block_cache", - dynlib: librocksdb.} + options: ptr rocksdb_block_based_table_options_t; no_block_cache: uint8) {.cdecl, + importc: "rocksdb_block_based_options_set_no_block_cache", dynlib: librocksdb.} proc rocksdb_block_based_options_set_block_cache*( options: ptr rocksdb_block_based_table_options_t; block_cache: ptr rocksdb_cache_t) {.cdecl, importc: "rocksdb_block_based_options_set_block_cache", @@ -608,7 +607,7 @@ proc rocksdb_block_based_options_set_block_cache_compressed*( importc: "rocksdb_block_based_options_set_block_cache_compressed", dynlib: librocksdb.} proc rocksdb_block_based_options_set_whole_key_filtering*( - a2: ptr rocksdb_block_based_table_options_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_block_based_table_options_t; a3: uint8) {.cdecl, importc: "rocksdb_block_based_options_set_whole_key_filtering", dynlib: librocksdb.} proc rocksdb_block_based_options_set_format_version*( @@ -625,18 +624,18 @@ proc rocksdb_block_based_options_set_index_type*( ## uses one of the above enums proc rocksdb_block_based_options_set_hash_index_allow_collision*( - a2: ptr rocksdb_block_based_table_options_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_block_based_table_options_t; a3: uint8) {.cdecl, importc: "rocksdb_block_based_options_set_hash_index_allow_collision", dynlib: librocksdb.} proc rocksdb_block_based_options_set_cache_index_and_filter_blocks*( - a2: ptr rocksdb_block_based_table_options_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_block_based_table_options_t; a3: uint8) {.cdecl, importc: "rocksdb_block_based_options_set_cache_index_and_filter_blocks", dynlib: librocksdb.} proc rocksdb_block_based_options_set_cache_index_and_filter_blocks_with_high_priority*( - a2: ptr rocksdb_block_based_table_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_block_based_options_set_cache_index_and_filter_blocks_with_high_priority", + a2: ptr rocksdb_block_based_table_options_t; a3: uint8) {.cdecl, importc: "rocksdb_block_based_options_set_cache_index_and_filter_blocks_with_high_priority", dynlib: librocksdb.} proc rocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache*( - a2: ptr rocksdb_block_based_table_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache", + a2: ptr rocksdb_block_based_table_options_t; a3: uint8) {.cdecl, importc: "rocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache", dynlib: librocksdb.} proc rocksdb_options_set_block_based_table_factory*(opt: ptr rocksdb_options_t; table_options: ptr rocksdb_block_based_table_options_t) {.cdecl, @@ -657,11 +656,11 @@ proc rocksdb_cuckoo_options_set_cuckoo_block_size*( options: ptr rocksdb_cuckoo_table_options_t; v: uint32) {.cdecl, importc: "rocksdb_cuckoo_options_set_cuckoo_block_size", dynlib: librocksdb.} proc rocksdb_cuckoo_options_set_identity_as_first_hash*( - options: ptr rocksdb_cuckoo_table_options_t; v: cuchar) {.cdecl, + options: ptr rocksdb_cuckoo_table_options_t; v: uint8) {.cdecl, importc: "rocksdb_cuckoo_options_set_identity_as_first_hash", dynlib: librocksdb.} proc rocksdb_cuckoo_options_set_use_module_hash*( - options: ptr rocksdb_cuckoo_table_options_t; v: cuchar) {.cdecl, + options: ptr rocksdb_cuckoo_table_options_t; v: uint8) {.cdecl, importc: "rocksdb_cuckoo_options_set_use_module_hash", dynlib: librocksdb.} proc rocksdb_options_set_cuckoo_table_factory*(opt: ptr rocksdb_options_t; table_options: ptr rocksdb_cuckoo_table_options_t) {.cdecl, @@ -688,7 +687,7 @@ proc rocksdb_options_optimize_universal_style_compaction*( opt: ptr rocksdb_options_t; memtable_memory_budget: uint64) {.cdecl, importc: "rocksdb_options_optimize_universal_style_compaction", dynlib: librocksdb.} -proc rocksdb_options_set_allow_ingest_behind*(a2: ptr rocksdb_options_t; a3: cuchar) {. +proc rocksdb_options_set_allow_ingest_behind*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_allow_ingest_behind", dynlib: librocksdb.} proc rocksdb_options_set_compaction_filter*(a2: ptr rocksdb_options_t; a3: ptr rocksdb_compactionfilter_t) {.cdecl, importc: "rocksdb_options_set_compaction_filter", @@ -710,14 +709,14 @@ proc rocksdb_options_set_uint64add_merge_operator*(a2: ptr rocksdb_options_t) {. proc rocksdb_options_set_compression_per_level*(opt: ptr rocksdb_options_t; level_values: ptr cint; num_levels: csize) {.cdecl, importc: "rocksdb_options_set_compression_per_level", dynlib: librocksdb.} -proc rocksdb_options_set_create_if_missing*(a2: ptr rocksdb_options_t; a3: cuchar) {. +proc rocksdb_options_set_create_if_missing*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_create_if_missing", dynlib: librocksdb.} proc rocksdb_options_set_create_missing_column_families*( - a2: ptr rocksdb_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_options_set_create_missing_column_families", - dynlib: librocksdb.} -proc rocksdb_options_set_error_if_exists*(a2: ptr rocksdb_options_t; a3: cuchar) {. + a2: ptr rocksdb_options_t; a3: uint8) {.cdecl, importc: "rocksdb_options_set_create_missing_column_families", + dynlib: librocksdb.} +proc rocksdb_options_set_error_if_exists*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_error_if_exists", dynlib: librocksdb.} -proc rocksdb_options_set_paranoid_checks*(a2: ptr rocksdb_options_t; a3: cuchar) {. +proc rocksdb_options_set_paranoid_checks*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_paranoid_checks", dynlib: librocksdb.} proc rocksdb_options_set_db_paths*(a2: ptr rocksdb_options_t; path_values: ptr ptr rocksdb_dbpath_t; @@ -771,8 +770,8 @@ proc rocksdb_options_set_max_bytes_for_level_base*(a2: ptr rocksdb_options_t; a3: uint64) {.cdecl, importc: "rocksdb_options_set_max_bytes_for_level_base", dynlib: librocksdb.} proc rocksdb_options_set_level_compaction_dynamic_level_bytes*( - a2: ptr rocksdb_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_options_set_level_compaction_dynamic_level_bytes", - dynlib: librocksdb.} + a2: ptr rocksdb_options_t; a3: uint8) {.cdecl, importc: "rocksdb_options_set_level_compaction_dynamic_level_bytes", + dynlib: librocksdb.} proc rocksdb_options_set_max_bytes_for_level_multiplier*( a2: ptr rocksdb_options_t; a3: cdouble) {.cdecl, importc: "rocksdb_options_set_max_bytes_for_level_multiplier", @@ -784,7 +783,7 @@ proc rocksdb_options_set_max_bytes_for_level_multiplier_additional*( proc rocksdb_options_enable_statistics*(a2: ptr rocksdb_options_t) {.cdecl, importc: "rocksdb_options_enable_statistics", dynlib: librocksdb.} proc rocksdb_options_set_skip_stats_update_on_db_open*( - opt: ptr rocksdb_options_t; val: cuchar) {.cdecl, + opt: ptr rocksdb_options_t; val: uint8) {.cdecl, importc: "rocksdb_options_set_skip_stats_update_on_db_open", dynlib: librocksdb.} ## returns a pointer to a malloc()-ed, null terminated string @@ -855,31 +854,30 @@ proc rocksdb_options_set_manifest_preallocation_size*(a2: ptr rocksdb_options_t; a3: csize) {.cdecl, importc: "rocksdb_options_set_manifest_preallocation_size", dynlib: librocksdb.} proc rocksdb_options_set_purge_redundant_kvs_while_flush*( - a2: ptr rocksdb_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_options_set_purge_redundant_kvs_while_flush", - dynlib: librocksdb.} -proc rocksdb_options_set_allow_mmap_reads*(a2: ptr rocksdb_options_t; a3: cuchar) {. + a2: ptr rocksdb_options_t; a3: uint8) {.cdecl, importc: "rocksdb_options_set_purge_redundant_kvs_while_flush", + dynlib: librocksdb.} +proc rocksdb_options_set_allow_mmap_reads*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_allow_mmap_reads", dynlib: librocksdb.} -proc rocksdb_options_set_allow_mmap_writes*(a2: ptr rocksdb_options_t; a3: cuchar) {. +proc rocksdb_options_set_allow_mmap_writes*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_allow_mmap_writes", dynlib: librocksdb.} -proc rocksdb_options_set_use_direct_reads*(a2: ptr rocksdb_options_t; a3: cuchar) {. +proc rocksdb_options_set_use_direct_reads*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_use_direct_reads", dynlib: librocksdb.} proc rocksdb_options_set_use_direct_io_for_flush_and_compaction*( - a2: ptr rocksdb_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_options_set_use_direct_io_for_flush_and_compaction", - dynlib: librocksdb.} -proc rocksdb_options_set_is_fd_close_on_exec*(a2: ptr rocksdb_options_t; a3: cuchar) {. + a2: ptr rocksdb_options_t; a3: uint8) {.cdecl, importc: "rocksdb_options_set_use_direct_io_for_flush_and_compaction", + dynlib: librocksdb.} +proc rocksdb_options_set_is_fd_close_on_exec*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_is_fd_close_on_exec", dynlib: librocksdb.} proc rocksdb_options_set_skip_log_error_on_recovery*(a2: ptr rocksdb_options_t; - a3: cuchar) {.cdecl, importc: "rocksdb_options_set_skip_log_error_on_recovery", - dynlib: librocksdb.} + a3: uint8) {.cdecl, importc: "rocksdb_options_set_skip_log_error_on_recovery", + dynlib: librocksdb.} proc rocksdb_options_set_stats_dump_period_sec*(a2: ptr rocksdb_options_t; a3: cuint) {. cdecl, importc: "rocksdb_options_set_stats_dump_period_sec", dynlib: librocksdb.} -proc rocksdb_options_set_advise_random_on_open*(a2: ptr rocksdb_options_t; - a3: cuchar) {.cdecl, importc: "rocksdb_options_set_advise_random_on_open", - dynlib: librocksdb.} +proc rocksdb_options_set_advise_random_on_open*(a2: ptr rocksdb_options_t; a3: uint8) {. + cdecl, importc: "rocksdb_options_set_advise_random_on_open", dynlib: librocksdb.} proc rocksdb_options_set_access_hint_on_compaction_start*( a2: ptr rocksdb_options_t; a3: cint) {.cdecl, importc: "rocksdb_options_set_access_hint_on_compaction_start", dynlib: librocksdb.} -proc rocksdb_options_set_use_adaptive_mutex*(a2: ptr rocksdb_options_t; a3: cuchar) {. +proc rocksdb_options_set_use_adaptive_mutex*(a2: ptr rocksdb_options_t; a3: uint8) {. cdecl, importc: "rocksdb_options_set_use_adaptive_mutex", dynlib: librocksdb.} proc rocksdb_options_set_bytes_per_sync*(a2: ptr rocksdb_options_t; a3: uint64) {. cdecl, importc: "rocksdb_options_set_bytes_per_sync", dynlib: librocksdb.} @@ -889,11 +887,11 @@ proc rocksdb_options_set_writable_file_max_buffer_size*( a2: ptr rocksdb_options_t; a3: uint64) {.cdecl, importc: "rocksdb_options_set_writable_file_max_buffer_size", dynlib: librocksdb.} proc rocksdb_options_set_allow_concurrent_memtable_write*( - a2: ptr rocksdb_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_options_set_allow_concurrent_memtable_write", - dynlib: librocksdb.} + a2: ptr rocksdb_options_t; a3: uint8) {.cdecl, importc: "rocksdb_options_set_allow_concurrent_memtable_write", + dynlib: librocksdb.} proc rocksdb_options_set_enable_write_thread_adaptive_yield*( - a2: ptr rocksdb_options_t; a3: cuchar) {.cdecl, importc: "rocksdb_options_set_enable_write_thread_adaptive_yield", - dynlib: librocksdb.} + a2: ptr rocksdb_options_t; a3: uint8) {.cdecl, importc: "rocksdb_options_set_enable_write_thread_adaptive_yield", + dynlib: librocksdb.} proc rocksdb_options_set_max_sequential_skip_in_iterations*( a2: ptr rocksdb_options_t; a3: uint64) {.cdecl, importc: "rocksdb_options_set_max_sequential_skip_in_iterations", dynlib: librocksdb.} @@ -935,8 +933,8 @@ proc rocksdb_options_set_max_successive_merges*(a2: ptr rocksdb_options_t; a3: c proc rocksdb_options_set_bloom_locality*(a2: ptr rocksdb_options_t; a3: uint32) {. cdecl, importc: "rocksdb_options_set_bloom_locality", dynlib: librocksdb.} proc rocksdb_options_set_inplace_update_support*(a2: ptr rocksdb_options_t; - a3: cuchar) {.cdecl, importc: "rocksdb_options_set_inplace_update_support", - dynlib: librocksdb.} + a3: uint8) {.cdecl, importc: "rocksdb_options_set_inplace_update_support", + dynlib: librocksdb.} proc rocksdb_options_set_inplace_update_num_locks*(a2: ptr rocksdb_options_t; a3: csize) {.cdecl, importc: "rocksdb_options_set_inplace_update_num_locks", dynlib: librocksdb.} @@ -992,22 +990,22 @@ proc rocksdb_compactionfilter_create*(state: pointer; destructor: proc (a2: pointer) {.cdecl.}; filter: proc ( a2: pointer; level: cint; key: cstring; key_length: csize; existing_value: cstring; value_length: csize; new_value: cstringArray; new_value_length: ptr csize; - value_changed: ptr cuchar): cuchar {.cdecl.}; + value_changed: ptr uint8): uint8 {.cdecl.}; name: proc (a2: pointer): cstring {.cdecl.}): ptr rocksdb_compactionfilter_t {. cdecl, importc: "rocksdb_compactionfilter_create", dynlib: librocksdb.} proc rocksdb_compactionfilter_set_ignore_snapshots*( - a2: ptr rocksdb_compactionfilter_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_compactionfilter_t; a3: uint8) {.cdecl, importc: "rocksdb_compactionfilter_set_ignore_snapshots", dynlib: librocksdb.} proc rocksdb_compactionfilter_destroy*(a2: ptr rocksdb_compactionfilter_t) {.cdecl, importc: "rocksdb_compactionfilter_destroy", dynlib: librocksdb.} ## Compaction Filter Context proc rocksdb_compactionfiltercontext_is_full_compaction*( - context: ptr rocksdb_compactionfiltercontext_t): cuchar {.cdecl, + context: ptr rocksdb_compactionfiltercontext_t): uint8 {.cdecl, importc: "rocksdb_compactionfiltercontext_is_full_compaction", dynlib: librocksdb.} proc rocksdb_compactionfiltercontext_is_manual_compaction*( - context: ptr rocksdb_compactionfiltercontext_t): cuchar {.cdecl, + context: ptr rocksdb_compactionfiltercontext_t): uint8 {.cdecl, importc: "rocksdb_compactionfiltercontext_is_manual_compaction", dynlib: librocksdb.} ## Compaction Filter Factory @@ -1036,7 +1034,7 @@ proc rocksdb_filterpolicy_create*(state: pointer; create_filter: proc (a2: pointer; key_array: cstringArray; key_length_array: ptr csize; num_keys: cint; filter_length: ptr csize): cstring {.cdecl.}; key_may_match: proc ( - a2: pointer; key: cstring; length: csize; filter: cstring; filter_length: csize): cuchar {. + a2: pointer; key: cstring; length: csize; filter: cstring; filter_length: csize): uint8 {. cdecl.}; delete_filter: proc (a2: pointer; filter: cstring; filter_length: csize) {. cdecl.}; name: proc (a2: pointer): cstring {.cdecl.}): ptr rocksdb_filterpolicy_t {. cdecl, importc: "rocksdb_filterpolicy_create", dynlib: librocksdb.} @@ -1053,10 +1051,10 @@ proc rocksdb_mergeoperator_create*(state: pointer; full_merge: proc (a2: pointer; key: cstring; key_length: csize; existing_value: cstring; existing_value_length: csize; operands_list: cstringArray; operands_list_length: ptr csize; - num_operands: cint; success: ptr cuchar; + num_operands: cint; success: ptr uint8; new_value_length: ptr csize): cstring {.cdecl.}; partial_merge: proc ( a2: pointer; key: cstring; key_length: csize; operands_list: cstringArray; - operands_list_length: ptr csize; num_operands: cint; success: ptr cuchar; + operands_list_length: ptr csize; num_operands: cint; success: ptr uint8; new_value_length: ptr csize): cstring {.cdecl.}; delete_value: proc (a2: pointer; value: cstring; value_length: csize) {.cdecl.}; name: proc (a2: pointer): cstring {.cdecl.}): ptr rocksdb_mergeoperator_t {. @@ -1070,9 +1068,9 @@ proc rocksdb_readoptions_create*(): ptr rocksdb_readoptions_t {.cdecl, proc rocksdb_readoptions_destroy*(a2: ptr rocksdb_readoptions_t) {.cdecl, importc: "rocksdb_readoptions_destroy", dynlib: librocksdb.} proc rocksdb_readoptions_set_verify_checksums*(a2: ptr rocksdb_readoptions_t; - a3: cuchar) {.cdecl, importc: "rocksdb_readoptions_set_verify_checksums", - dynlib: librocksdb.} -proc rocksdb_readoptions_set_fill_cache*(a2: ptr rocksdb_readoptions_t; a3: cuchar) {. + a3: uint8) {.cdecl, importc: "rocksdb_readoptions_set_verify_checksums", + dynlib: librocksdb.} +proc rocksdb_readoptions_set_fill_cache*(a2: ptr rocksdb_readoptions_t; a3: uint8) {. cdecl, importc: "rocksdb_readoptions_set_fill_cache", dynlib: librocksdb.} proc rocksdb_readoptions_set_snapshot*(a2: ptr rocksdb_readoptions_t; a3: ptr rocksdb_snapshot_t) {.cdecl, @@ -1085,31 +1083,31 @@ proc rocksdb_readoptions_set_iterate_lower_bound*(a2: ptr rocksdb_readoptions_t; dynlib: librocksdb.} proc rocksdb_readoptions_set_read_tier*(a2: ptr rocksdb_readoptions_t; a3: cint) {. cdecl, importc: "rocksdb_readoptions_set_read_tier", dynlib: librocksdb.} -proc rocksdb_readoptions_set_tailing*(a2: ptr rocksdb_readoptions_t; a3: cuchar) {. +proc rocksdb_readoptions_set_tailing*(a2: ptr rocksdb_readoptions_t; a3: uint8) {. cdecl, importc: "rocksdb_readoptions_set_tailing", dynlib: librocksdb.} -proc rocksdb_readoptions_set_managed*(a2: ptr rocksdb_readoptions_t; a3: cuchar) {. +proc rocksdb_readoptions_set_managed*(a2: ptr rocksdb_readoptions_t; a3: uint8) {. cdecl, importc: "rocksdb_readoptions_set_managed", dynlib: librocksdb.} proc rocksdb_readoptions_set_readahead_size*(a2: ptr rocksdb_readoptions_t; a3: csize) {.cdecl, importc: "rocksdb_readoptions_set_readahead_size", dynlib: librocksdb.} proc rocksdb_readoptions_set_prefix_same_as_start*(a2: ptr rocksdb_readoptions_t; - a3: cuchar) {.cdecl, importc: "rocksdb_readoptions_set_prefix_same_as_start", - dynlib: librocksdb.} -proc rocksdb_readoptions_set_pin_data*(a2: ptr rocksdb_readoptions_t; a3: cuchar) {. + a3: uint8) {.cdecl, importc: "rocksdb_readoptions_set_prefix_same_as_start", + dynlib: librocksdb.} +proc rocksdb_readoptions_set_pin_data*(a2: ptr rocksdb_readoptions_t; a3: uint8) {. cdecl, importc: "rocksdb_readoptions_set_pin_data", dynlib: librocksdb.} proc rocksdb_readoptions_set_total_order_seek*(a2: ptr rocksdb_readoptions_t; - a3: cuchar) {.cdecl, importc: "rocksdb_readoptions_set_total_order_seek", - dynlib: librocksdb.} + a3: uint8) {.cdecl, importc: "rocksdb_readoptions_set_total_order_seek", + dynlib: librocksdb.} proc rocksdb_readoptions_set_max_skippable_internal_keys*( a2: ptr rocksdb_readoptions_t; a3: uint64) {.cdecl, importc: "rocksdb_readoptions_set_max_skippable_internal_keys", dynlib: librocksdb.} proc rocksdb_readoptions_set_background_purge_on_iterator_cleanup*( - a2: ptr rocksdb_readoptions_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_readoptions_t; a3: uint8) {.cdecl, importc: "rocksdb_readoptions_set_background_purge_on_iterator_cleanup", dynlib: librocksdb.} proc rocksdb_readoptions_set_ignore_range_deletions*( - a2: ptr rocksdb_readoptions_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_readoptions_t; a3: uint8) {.cdecl, importc: "rocksdb_readoptions_set_ignore_range_deletions", dynlib: librocksdb.} ## Write options @@ -1117,19 +1115,18 @@ proc rocksdb_writeoptions_create*(): ptr rocksdb_writeoptions_t {.cdecl, importc: "rocksdb_writeoptions_create", dynlib: librocksdb.} proc rocksdb_writeoptions_destroy*(a2: ptr rocksdb_writeoptions_t) {.cdecl, importc: "rocksdb_writeoptions_destroy", dynlib: librocksdb.} -proc rocksdb_writeoptions_set_sync*(a2: ptr rocksdb_writeoptions_t; a3: cuchar) {. +proc rocksdb_writeoptions_set_sync*(a2: ptr rocksdb_writeoptions_t; a3: uint8) {. cdecl, importc: "rocksdb_writeoptions_set_sync", dynlib: librocksdb.} proc rocksdb_writeoptions_disable_WAL*(opt: ptr rocksdb_writeoptions_t; disable: cint) {.cdecl, importc: "rocksdb_writeoptions_disable_WAL", dynlib: librocksdb.} proc rocksdb_writeoptions_set_ignore_missing_column_families*( - a2: ptr rocksdb_writeoptions_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_writeoptions_t; a3: uint8) {.cdecl, importc: "rocksdb_writeoptions_set_ignore_missing_column_families", dynlib: librocksdb.} -proc rocksdb_writeoptions_set_no_slowdown*(a2: ptr rocksdb_writeoptions_t; - a3: cuchar) {.cdecl, importc: "rocksdb_writeoptions_set_no_slowdown", - dynlib: librocksdb.} -proc rocksdb_writeoptions_set_low_pri*(a2: ptr rocksdb_writeoptions_t; a3: cuchar) {. +proc rocksdb_writeoptions_set_no_slowdown*(a2: ptr rocksdb_writeoptions_t; a3: uint8) {. + cdecl, importc: "rocksdb_writeoptions_set_no_slowdown", dynlib: librocksdb.} +proc rocksdb_writeoptions_set_low_pri*(a2: ptr rocksdb_writeoptions_t; a3: uint8) {. cdecl, importc: "rocksdb_writeoptions_set_low_pri", dynlib: librocksdb.} ## Compact range options @@ -1138,12 +1135,12 @@ proc rocksdb_compactoptions_create*(): ptr rocksdb_compactoptions_t {.cdecl, proc rocksdb_compactoptions_destroy*(a2: ptr rocksdb_compactoptions_t) {.cdecl, importc: "rocksdb_compactoptions_destroy", dynlib: librocksdb.} proc rocksdb_compactoptions_set_exclusive_manual_compaction*( - a2: ptr rocksdb_compactoptions_t; a3: cuchar) {.cdecl, + a2: ptr rocksdb_compactoptions_t; a3: uint8) {.cdecl, importc: "rocksdb_compactoptions_set_exclusive_manual_compaction", dynlib: librocksdb.} proc rocksdb_compactoptions_set_change_level*(a2: ptr rocksdb_compactoptions_t; - a3: cuchar) {.cdecl, importc: "rocksdb_compactoptions_set_change_level", - dynlib: librocksdb.} + a3: uint8) {.cdecl, importc: "rocksdb_compactoptions_set_change_level", + dynlib: librocksdb.} proc rocksdb_compactoptions_set_target_level*(a2: ptr rocksdb_compactoptions_t; a3: cint) {.cdecl, importc: "rocksdb_compactoptions_set_target_level", dynlib: librocksdb.} @@ -1153,7 +1150,7 @@ proc rocksdb_flushoptions_create*(): ptr rocksdb_flushoptions_t {.cdecl, importc: "rocksdb_flushoptions_create", dynlib: librocksdb.} proc rocksdb_flushoptions_destroy*(a2: ptr rocksdb_flushoptions_t) {.cdecl, importc: "rocksdb_flushoptions_destroy", dynlib: librocksdb.} -proc rocksdb_flushoptions_set_wait*(a2: ptr rocksdb_flushoptions_t; a3: cuchar) {. +proc rocksdb_flushoptions_set_wait*(a2: ptr rocksdb_flushoptions_t; a3: uint8) {. cdecl, importc: "rocksdb_flushoptions_set_wait", dynlib: librocksdb.} ## Cache @@ -1227,23 +1224,23 @@ proc rocksdb_sstfilewriter_destroy*(writer: ptr rocksdb_sstfilewriter_t) {.cdecl proc rocksdb_ingestexternalfileoptions_create*(): ptr rocksdb_ingestexternalfileoptions_t {. cdecl, importc: "rocksdb_ingestexternalfileoptions_create", dynlib: librocksdb.} proc rocksdb_ingestexternalfileoptions_set_move_files*( - opt: ptr rocksdb_ingestexternalfileoptions_t; move_files: cuchar) {.cdecl, + opt: ptr rocksdb_ingestexternalfileoptions_t; move_files: uint8) {.cdecl, importc: "rocksdb_ingestexternalfileoptions_set_move_files", dynlib: librocksdb.} proc rocksdb_ingestexternalfileoptions_set_snapshot_consistency*( - opt: ptr rocksdb_ingestexternalfileoptions_t; snapshot_consistency: cuchar) {. + opt: ptr rocksdb_ingestexternalfileoptions_t; snapshot_consistency: uint8) {. cdecl, importc: "rocksdb_ingestexternalfileoptions_set_snapshot_consistency", dynlib: librocksdb.} proc rocksdb_ingestexternalfileoptions_set_allow_global_seqno*( - opt: ptr rocksdb_ingestexternalfileoptions_t; allow_global_seqno: cuchar) {. - cdecl, importc: "rocksdb_ingestexternalfileoptions_set_allow_global_seqno", + opt: ptr rocksdb_ingestexternalfileoptions_t; allow_global_seqno: uint8) {.cdecl, + importc: "rocksdb_ingestexternalfileoptions_set_allow_global_seqno", dynlib: librocksdb.} proc rocksdb_ingestexternalfileoptions_set_allow_blocking_flush*( - opt: ptr rocksdb_ingestexternalfileoptions_t; allow_blocking_flush: cuchar) {. + opt: ptr rocksdb_ingestexternalfileoptions_t; allow_blocking_flush: uint8) {. cdecl, importc: "rocksdb_ingestexternalfileoptions_set_allow_blocking_flush", dynlib: librocksdb.} proc rocksdb_ingestexternalfileoptions_set_ingest_behind*( - opt: ptr rocksdb_ingestexternalfileoptions_t; ingest_behind: cuchar) {.cdecl, + opt: ptr rocksdb_ingestexternalfileoptions_t; ingest_behind: uint8) {.cdecl, importc: "rocksdb_ingestexternalfileoptions_set_ingest_behind", dynlib: librocksdb.} proc rocksdb_ingestexternalfileoptions_destroy*( @@ -1263,8 +1260,8 @@ proc rocksdb_ingest_external_file_cf*(db: ptr rocksdb_t; handle: ptr rocksdb_col proc rocksdb_slicetransform_create*(state: pointer; destructor: proc (a2: pointer) {.cdecl.}; transform: proc (a2: pointer; key: cstring; length: csize; dst_length: ptr csize): cstring {. - cdecl.}; in_domain: proc (a2: pointer; key: cstring; length: csize): cuchar {.cdecl.}; - in_range: proc (a2: pointer; key: cstring; length: csize): cuchar {.cdecl.}; + cdecl.}; in_domain: proc (a2: pointer; key: cstring; length: csize): uint8 {.cdecl.}; + in_range: proc (a2: pointer; key: cstring; length: csize): uint8 {.cdecl.}; name: proc (a2: pointer): cstring {.cdecl.}): ptr rocksdb_slicetransform_t {. cdecl, importc: "rocksdb_slicetransform_create", dynlib: librocksdb.} proc rocksdb_slicetransform_create_fixed_prefix*(a2: csize): ptr rocksdb_slicetransform_t {. @@ -1399,7 +1396,7 @@ proc rocksdb_transaction_get_cf*(txn: ptr rocksdb_transaction_t; proc rocksdb_transaction_get_for_update*(txn: ptr rocksdb_transaction_t; options: ptr rocksdb_readoptions_t; key: cstring; klen: csize; vlen: ptr csize; - exclusive: cuchar; errptr: cstringArray): cstring {. + exclusive: uint8; errptr: cstringArray): cstring {. cdecl, importc: "rocksdb_transaction_get_for_update", dynlib: librocksdb.} proc rocksdb_transactiondb_get*(txn_db: ptr rocksdb_transactiondb_t; options: ptr rocksdb_readoptions_t; key: cstring; @@ -1524,10 +1521,10 @@ proc rocksdb_transaction_options_create*(): ptr rocksdb_transaction_options_t {. proc rocksdb_transaction_options_destroy*(opt: ptr rocksdb_transaction_options_t) {. cdecl, importc: "rocksdb_transaction_options_destroy", dynlib: librocksdb.} proc rocksdb_transaction_options_set_set_snapshot*( - opt: ptr rocksdb_transaction_options_t; v: cuchar) {.cdecl, + opt: ptr rocksdb_transaction_options_t; v: uint8) {.cdecl, importc: "rocksdb_transaction_options_set_set_snapshot", dynlib: librocksdb.} proc rocksdb_transaction_options_set_deadlock_detect*( - opt: ptr rocksdb_transaction_options_t; v: cuchar) {.cdecl, + opt: ptr rocksdb_transaction_options_t; v: uint8) {.cdecl, importc: "rocksdb_transaction_options_set_deadlock_detect", dynlib: librocksdb.} proc rocksdb_transaction_options_set_lock_timeout*( opt: ptr rocksdb_transaction_options_t; lock_timeout: int64) {.cdecl, @@ -1550,7 +1547,7 @@ proc rocksdb_optimistictransaction_options_destroy*( opt: ptr rocksdb_optimistictransaction_options_t) {.cdecl, importc: "rocksdb_optimistictransaction_options_destroy", dynlib: librocksdb.} proc rocksdb_optimistictransaction_options_set_set_snapshot*( - opt: ptr rocksdb_optimistictransaction_options_t; v: cuchar) {.cdecl, + opt: ptr rocksdb_optimistictransaction_options_t; v: uint8) {.cdecl, importc: "rocksdb_optimistictransaction_options_set_set_snapshot", dynlib: librocksdb.} ## referring to convention (3), this should be used by client