1 // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. 2 // This source code is licensed under both the GPLv2 (found in the 3 // COPYING file in the root directory) and Apache 2.0 License 4 // (found in the LICENSE.Apache file in the root directory). 5 6 /* Copyright (c) 2011 The LevelDB Authors. All rights reserved. 7 Use of this source code is governed by a BSD-style license that can be 8 found in the LICENSE file. See the AUTHORS file for names of contributors. 9 10 C bindings for rocksdb. May be useful as a stable ABI that can be 11 used by programs that keep rocksdb in a shared library, or for 12 a JNI api. 13 14 Does not support: 15 . getters for the option types 16 . custom comparators that implement key shortening 17 . capturing post-write-snapshot 18 . custom iter, db, env, cache implementations using just the C bindings 19 20 Some conventions: 21 22 (1) We expose just opaque struct pointers and functions to clients. 23 This allows us to change internal representations without having to 24 recompile clients. 25 26 (2) For simplicity, there is no equivalent to the Slice type. Instead, 27 the caller has to pass the pointer and length as separate 28 arguments. 29 30 (3) Errors are represented by a null-terminated c string. NULL 31 means no error. All operations that can raise an error are passed 32 a "char** errptr" as the last argument. One of the following must 33 be true on entry: 34 *errptr == NULL 35 *errptr points to a malloc()ed null-terminated error message 36 On success, a leveldb routine leaves *errptr unchanged. 37 On failure, leveldb frees the old value of *errptr and 38 set *errptr to a malloc()ed error message. 39 40 (4) Bools have the type unsigned char (0 == false; rest == true) 41 42 (5) All of the pointer arguments must be non-NULL. 43 */ 44 45 #pragma once 46 47 #ifdef _WIN32 48 #ifdef ROCKSDB_DLL 49 #ifdef ROCKSDB_LIBRARY_EXPORTS 50 #define ROCKSDB_LIBRARY_API __declspec(dllexport) 51 #else 52 #define ROCKSDB_LIBRARY_API __declspec(dllimport) 53 #endif 54 #else 55 #define ROCKSDB_LIBRARY_API 56 #endif 57 #else 58 #define ROCKSDB_LIBRARY_API 59 #endif 60 61 #ifdef __cplusplus 62 extern "C" { 63 #endif 64 65 #include <stdarg.h> 66 #include <stddef.h> 67 #include <stdint.h> 68 69 /* Exported types */ 70 71 typedef struct rocksdb_t rocksdb_t; 72 typedef struct rocksdb_backup_engine_t rocksdb_backup_engine_t; 73 typedef struct rocksdb_backup_engine_info_t rocksdb_backup_engine_info_t; 74 typedef struct rocksdb_restore_options_t rocksdb_restore_options_t; 75 typedef struct rocksdb_cache_t rocksdb_cache_t; 76 typedef struct rocksdb_compactionfilter_t rocksdb_compactionfilter_t; 77 typedef struct rocksdb_compactionfiltercontext_t 78 rocksdb_compactionfiltercontext_t; 79 typedef struct rocksdb_compactionfilterfactory_t 80 rocksdb_compactionfilterfactory_t; 81 typedef struct rocksdb_comparator_t rocksdb_comparator_t; 82 typedef struct rocksdb_dbpath_t rocksdb_dbpath_t; 83 typedef struct rocksdb_env_t rocksdb_env_t; 84 typedef struct rocksdb_fifo_compaction_options_t rocksdb_fifo_compaction_options_t; 85 typedef struct rocksdb_filelock_t rocksdb_filelock_t; 86 typedef struct rocksdb_filterpolicy_t rocksdb_filterpolicy_t; 87 typedef struct rocksdb_flushoptions_t rocksdb_flushoptions_t; 88 typedef struct rocksdb_iterator_t rocksdb_iterator_t; 89 typedef struct rocksdb_logger_t rocksdb_logger_t; 90 typedef struct rocksdb_mergeoperator_t rocksdb_mergeoperator_t; 91 typedef struct rocksdb_options_t rocksdb_options_t; 92 typedef struct rocksdb_compactoptions_t rocksdb_compactoptions_t; 93 typedef struct rocksdb_block_based_table_options_t 94 rocksdb_block_based_table_options_t; 95 typedef struct rocksdb_cuckoo_table_options_t 96 rocksdb_cuckoo_table_options_t; 97 typedef struct rocksdb_randomfile_t rocksdb_randomfile_t; 98 typedef struct rocksdb_readoptions_t rocksdb_readoptions_t; 99 typedef struct rocksdb_seqfile_t rocksdb_seqfile_t; 100 typedef struct rocksdb_slicetransform_t rocksdb_slicetransform_t; 101 typedef struct rocksdb_snapshot_t rocksdb_snapshot_t; 102 typedef struct rocksdb_writablefile_t rocksdb_writablefile_t; 103 typedef struct rocksdb_writebatch_t rocksdb_writebatch_t; 104 typedef struct rocksdb_writebatch_wi_t rocksdb_writebatch_wi_t; 105 typedef struct rocksdb_writeoptions_t rocksdb_writeoptions_t; 106 typedef struct rocksdb_universal_compaction_options_t rocksdb_universal_compaction_options_t; 107 typedef struct rocksdb_livefiles_t rocksdb_livefiles_t; 108 typedef struct rocksdb_column_family_handle_t rocksdb_column_family_handle_t; 109 typedef struct rocksdb_envoptions_t rocksdb_envoptions_t; 110 typedef struct rocksdb_ingestexternalfileoptions_t rocksdb_ingestexternalfileoptions_t; 111 typedef struct rocksdb_sstfilewriter_t rocksdb_sstfilewriter_t; 112 typedef struct rocksdb_ratelimiter_t rocksdb_ratelimiter_t; 113 typedef struct rocksdb_perfcontext_t rocksdb_perfcontext_t; 114 typedef struct rocksdb_pinnableslice_t rocksdb_pinnableslice_t; 115 typedef struct rocksdb_transactiondb_options_t rocksdb_transactiondb_options_t; 116 typedef struct rocksdb_transactiondb_t rocksdb_transactiondb_t; 117 typedef struct rocksdb_transaction_options_t rocksdb_transaction_options_t; 118 typedef struct rocksdb_optimistictransactiondb_t 119 rocksdb_optimistictransactiondb_t; 120 typedef struct rocksdb_optimistictransaction_options_t 121 rocksdb_optimistictransaction_options_t; 122 typedef struct rocksdb_transaction_t rocksdb_transaction_t; 123 typedef struct rocksdb_checkpoint_t rocksdb_checkpoint_t; 124 typedef struct rocksdb_wal_iterator_t rocksdb_wal_iterator_t; 125 typedef struct rocksdb_wal_readoptions_t rocksdb_wal_readoptions_t; 126 typedef struct rocksdb_memory_consumers_t rocksdb_memory_consumers_t; 127 typedef struct rocksdb_memory_usage_t rocksdb_memory_usage_t; 128 129 /* DB operations */ 130 131 extern ROCKSDB_LIBRARY_API rocksdb_t* rocksdb_open( 132 const rocksdb_options_t* options, const char* name, char** errptr); 133 134 extern ROCKSDB_LIBRARY_API rocksdb_t* rocksdb_open_with_ttl( 135 const rocksdb_options_t* options, const char* name, int ttl, char** errptr); 136 137 extern ROCKSDB_LIBRARY_API rocksdb_t* rocksdb_open_for_read_only( 138 const rocksdb_options_t* options, const char* name, 139 unsigned char error_if_log_file_exist, char** errptr); 140 141 extern ROCKSDB_LIBRARY_API rocksdb_t* rocksdb_open_as_secondary( 142 const rocksdb_options_t* options, const char* name, 143 const char* secondary_path, char** errptr); 144 145 extern ROCKSDB_LIBRARY_API rocksdb_backup_engine_t* rocksdb_backup_engine_open( 146 const rocksdb_options_t* options, const char* path, char** errptr); 147 148 extern ROCKSDB_LIBRARY_API void rocksdb_backup_engine_create_new_backup( 149 rocksdb_backup_engine_t* be, rocksdb_t* db, char** errptr); 150 151 extern ROCKSDB_LIBRARY_API void rocksdb_backup_engine_create_new_backup_flush( 152 rocksdb_backup_engine_t* be, rocksdb_t* db, unsigned char flush_before_backup, 153 char** errptr); 154 155 extern ROCKSDB_LIBRARY_API void rocksdb_backup_engine_purge_old_backups( 156 rocksdb_backup_engine_t* be, uint32_t num_backups_to_keep, char** errptr); 157 158 extern ROCKSDB_LIBRARY_API rocksdb_restore_options_t* 159 rocksdb_restore_options_create(); 160 extern ROCKSDB_LIBRARY_API void rocksdb_restore_options_destroy( 161 rocksdb_restore_options_t* opt); 162 extern ROCKSDB_LIBRARY_API void rocksdb_restore_options_set_keep_log_files( 163 rocksdb_restore_options_t* opt, int v); 164 165 extern ROCKSDB_LIBRARY_API void 166 rocksdb_backup_engine_verify_backup(rocksdb_backup_engine_t* be, 167 uint32_t backup_id, char** errptr); 168 169 extern ROCKSDB_LIBRARY_API void 170 rocksdb_backup_engine_restore_db_from_latest_backup( 171 rocksdb_backup_engine_t* be, const char* db_dir, const char* wal_dir, 172 const rocksdb_restore_options_t* restore_options, char** errptr); 173 174 extern ROCKSDB_LIBRARY_API const rocksdb_backup_engine_info_t* 175 rocksdb_backup_engine_get_backup_info(rocksdb_backup_engine_t* be); 176 177 extern ROCKSDB_LIBRARY_API int rocksdb_backup_engine_info_count( 178 const rocksdb_backup_engine_info_t* info); 179 180 extern ROCKSDB_LIBRARY_API int64_t 181 rocksdb_backup_engine_info_timestamp(const rocksdb_backup_engine_info_t* info, 182 int index); 183 184 extern ROCKSDB_LIBRARY_API uint32_t 185 rocksdb_backup_engine_info_backup_id(const rocksdb_backup_engine_info_t* info, 186 int index); 187 188 extern ROCKSDB_LIBRARY_API uint64_t 189 rocksdb_backup_engine_info_size(const rocksdb_backup_engine_info_t* info, 190 int index); 191 192 extern ROCKSDB_LIBRARY_API uint32_t rocksdb_backup_engine_info_number_files( 193 const rocksdb_backup_engine_info_t* info, int index); 194 195 extern ROCKSDB_LIBRARY_API void rocksdb_backup_engine_info_destroy( 196 const rocksdb_backup_engine_info_t* info); 197 198 extern ROCKSDB_LIBRARY_API void rocksdb_backup_engine_close( 199 rocksdb_backup_engine_t* be); 200 201 extern ROCKSDB_LIBRARY_API rocksdb_checkpoint_t* 202 rocksdb_checkpoint_object_create(rocksdb_t* db, char** errptr); 203 204 extern ROCKSDB_LIBRARY_API void rocksdb_checkpoint_create( 205 rocksdb_checkpoint_t* checkpoint, const char* checkpoint_dir, 206 uint64_t log_size_for_flush, char** errptr); 207 208 extern ROCKSDB_LIBRARY_API void rocksdb_checkpoint_object_destroy( 209 rocksdb_checkpoint_t* checkpoint); 210 211 extern ROCKSDB_LIBRARY_API rocksdb_t* rocksdb_open_column_families( 212 const rocksdb_options_t* options, const char* name, int num_column_families, 213 const char* const* column_family_names, 214 const rocksdb_options_t* const* column_family_options, 215 rocksdb_column_family_handle_t** column_family_handles, char** errptr); 216 217 extern ROCKSDB_LIBRARY_API rocksdb_t* 218 rocksdb_open_for_read_only_column_families( 219 const rocksdb_options_t* options, const char* name, int num_column_families, 220 const char* const* column_family_names, 221 const rocksdb_options_t* const* column_family_options, 222 rocksdb_column_family_handle_t** column_family_handles, 223 unsigned char error_if_log_file_exist, char** errptr); 224 225 extern ROCKSDB_LIBRARY_API rocksdb_t* rocksdb_open_as_secondary_column_families( 226 const rocksdb_options_t* options, const char* name, 227 const char* secondary_path, int num_column_families, 228 const char* const* column_family_names, 229 const rocksdb_options_t* const* column_family_options, 230 rocksdb_column_family_handle_t** colummn_family_handles, char** errptr); 231 232 extern ROCKSDB_LIBRARY_API char** rocksdb_list_column_families( 233 const rocksdb_options_t* options, const char* name, size_t* lencf, 234 char** errptr); 235 236 extern ROCKSDB_LIBRARY_API void rocksdb_list_column_families_destroy( 237 char** list, size_t len); 238 239 extern ROCKSDB_LIBRARY_API rocksdb_column_family_handle_t* 240 rocksdb_create_column_family(rocksdb_t* db, 241 const rocksdb_options_t* column_family_options, 242 const char* column_family_name, char** errptr); 243 244 extern ROCKSDB_LIBRARY_API void rocksdb_drop_column_family( 245 rocksdb_t* db, rocksdb_column_family_handle_t* handle, char** errptr); 246 247 extern ROCKSDB_LIBRARY_API void rocksdb_column_family_handle_destroy( 248 rocksdb_column_family_handle_t*); 249 250 extern ROCKSDB_LIBRARY_API void rocksdb_close(rocksdb_t* db); 251 252 extern ROCKSDB_LIBRARY_API void rocksdb_put( 253 rocksdb_t* db, const rocksdb_writeoptions_t* options, const char* key, 254 size_t keylen, const char* val, size_t vallen, char** errptr); 255 256 extern ROCKSDB_LIBRARY_API void rocksdb_put_cf( 257 rocksdb_t* db, const rocksdb_writeoptions_t* options, 258 rocksdb_column_family_handle_t* column_family, const char* key, 259 size_t keylen, const char* val, size_t vallen, char** errptr); 260 261 extern ROCKSDB_LIBRARY_API void rocksdb_delete( 262 rocksdb_t* db, const rocksdb_writeoptions_t* options, const char* key, 263 size_t keylen, char** errptr); 264 265 extern ROCKSDB_LIBRARY_API void rocksdb_delete_cf( 266 rocksdb_t* db, const rocksdb_writeoptions_t* options, 267 rocksdb_column_family_handle_t* column_family, const char* key, 268 size_t keylen, char** errptr); 269 270 extern ROCKSDB_LIBRARY_API void rocksdb_delete_range_cf( 271 rocksdb_t* db, const rocksdb_writeoptions_t* options, 272 rocksdb_column_family_handle_t* column_family, const char* start_key, 273 size_t start_key_len, const char* end_key, size_t end_key_len, 274 char** errptr); 275 276 extern ROCKSDB_LIBRARY_API void rocksdb_merge( 277 rocksdb_t* db, const rocksdb_writeoptions_t* options, const char* key, 278 size_t keylen, const char* val, size_t vallen, char** errptr); 279 280 extern ROCKSDB_LIBRARY_API void rocksdb_merge_cf( 281 rocksdb_t* db, const rocksdb_writeoptions_t* options, 282 rocksdb_column_family_handle_t* column_family, const char* key, 283 size_t keylen, const char* val, size_t vallen, char** errptr); 284 285 extern ROCKSDB_LIBRARY_API void rocksdb_write( 286 rocksdb_t* db, const rocksdb_writeoptions_t* options, 287 rocksdb_writebatch_t* batch, char** errptr); 288 289 /* Returns NULL if not found. A malloc()ed array otherwise. 290 Stores the length of the array in *vallen. */ 291 extern ROCKSDB_LIBRARY_API char* rocksdb_get( 292 rocksdb_t* db, const rocksdb_readoptions_t* options, const char* key, 293 size_t keylen, size_t* vallen, char** errptr); 294 295 extern ROCKSDB_LIBRARY_API char* rocksdb_get_cf( 296 rocksdb_t* db, const rocksdb_readoptions_t* options, 297 rocksdb_column_family_handle_t* column_family, const char* key, 298 size_t keylen, size_t* vallen, char** errptr); 299 300 // if values_list[i] == NULL and errs[i] == NULL, 301 // then we got status.IsNotFound(), which we will not return. 302 // all errors except status status.ok() and status.IsNotFound() are returned. 303 // 304 // errs, values_list and values_list_sizes must be num_keys in length, 305 // allocated by the caller. 306 // errs is a list of strings as opposed to the conventional one error, 307 // where errs[i] is the status for retrieval of keys_list[i]. 308 // each non-NULL errs entry is a malloc()ed, null terminated string. 309 // each non-NULL values_list entry is a malloc()ed array, with 310 // the length for each stored in values_list_sizes[i]. 311 extern ROCKSDB_LIBRARY_API void rocksdb_multi_get( 312 rocksdb_t* db, const rocksdb_readoptions_t* options, size_t num_keys, 313 const char* const* keys_list, const size_t* keys_list_sizes, 314 char** values_list, size_t* values_list_sizes, char** errs); 315 316 extern ROCKSDB_LIBRARY_API void rocksdb_multi_get_cf( 317 rocksdb_t* db, const rocksdb_readoptions_t* options, 318 const rocksdb_column_family_handle_t* const* column_families, 319 size_t num_keys, const char* const* keys_list, 320 const size_t* keys_list_sizes, char** values_list, 321 size_t* values_list_sizes, char** errs); 322 323 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* rocksdb_create_iterator( 324 rocksdb_t* db, const rocksdb_readoptions_t* options); 325 326 extern ROCKSDB_LIBRARY_API rocksdb_wal_iterator_t* rocksdb_get_updates_since( 327 rocksdb_t* db, uint64_t seq_number, 328 const rocksdb_wal_readoptions_t* options, 329 char** errptr 330 ); 331 332 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* rocksdb_create_iterator_cf( 333 rocksdb_t* db, const rocksdb_readoptions_t* options, 334 rocksdb_column_family_handle_t* column_family); 335 336 extern ROCKSDB_LIBRARY_API void rocksdb_create_iterators( 337 rocksdb_t *db, rocksdb_readoptions_t* opts, 338 rocksdb_column_family_handle_t** column_families, 339 rocksdb_iterator_t** iterators, size_t size, char** errptr); 340 341 extern ROCKSDB_LIBRARY_API const rocksdb_snapshot_t* rocksdb_create_snapshot( 342 rocksdb_t* db); 343 344 extern ROCKSDB_LIBRARY_API void rocksdb_release_snapshot( 345 rocksdb_t* db, const rocksdb_snapshot_t* snapshot); 346 347 /* Returns NULL if property name is unknown. 348 Else returns a pointer to a malloc()-ed null-terminated value. */ 349 extern ROCKSDB_LIBRARY_API char* rocksdb_property_value(rocksdb_t* db, 350 const char* propname); 351 /* returns 0 on success, -1 otherwise */ 352 int rocksdb_property_int( 353 rocksdb_t* db, 354 const char* propname, uint64_t *out_val); 355 356 /* returns 0 on success, -1 otherwise */ 357 int rocksdb_property_int_cf( 358 rocksdb_t* db, rocksdb_column_family_handle_t* column_family, 359 const char* propname, uint64_t *out_val); 360 361 extern ROCKSDB_LIBRARY_API char* rocksdb_property_value_cf( 362 rocksdb_t* db, rocksdb_column_family_handle_t* column_family, 363 const char* propname); 364 365 extern ROCKSDB_LIBRARY_API void rocksdb_approximate_sizes( 366 rocksdb_t* db, int num_ranges, const char* const* range_start_key, 367 const size_t* range_start_key_len, const char* const* range_limit_key, 368 const size_t* range_limit_key_len, uint64_t* sizes); 369 370 extern ROCKSDB_LIBRARY_API void rocksdb_approximate_sizes_cf( 371 rocksdb_t* db, rocksdb_column_family_handle_t* column_family, 372 int num_ranges, const char* const* range_start_key, 373 const size_t* range_start_key_len, const char* const* range_limit_key, 374 const size_t* range_limit_key_len, uint64_t* sizes); 375 376 extern ROCKSDB_LIBRARY_API void rocksdb_compact_range(rocksdb_t* db, 377 const char* start_key, 378 size_t start_key_len, 379 const char* limit_key, 380 size_t limit_key_len); 381 382 extern ROCKSDB_LIBRARY_API void rocksdb_compact_range_cf( 383 rocksdb_t* db, rocksdb_column_family_handle_t* column_family, 384 const char* start_key, size_t start_key_len, const char* limit_key, 385 size_t limit_key_len); 386 387 extern ROCKSDB_LIBRARY_API void rocksdb_compact_range_opt( 388 rocksdb_t* db, rocksdb_compactoptions_t* opt, const char* start_key, 389 size_t start_key_len, const char* limit_key, size_t limit_key_len); 390 391 extern ROCKSDB_LIBRARY_API void rocksdb_compact_range_cf_opt( 392 rocksdb_t* db, rocksdb_column_family_handle_t* column_family, 393 rocksdb_compactoptions_t* opt, const char* start_key, size_t start_key_len, 394 const char* limit_key, size_t limit_key_len); 395 396 extern ROCKSDB_LIBRARY_API void rocksdb_delete_file(rocksdb_t* db, 397 const char* name); 398 399 extern ROCKSDB_LIBRARY_API const rocksdb_livefiles_t* rocksdb_livefiles( 400 rocksdb_t* db); 401 402 extern ROCKSDB_LIBRARY_API void rocksdb_flush( 403 rocksdb_t* db, const rocksdb_flushoptions_t* options, char** errptr); 404 405 extern ROCKSDB_LIBRARY_API void rocksdb_flush_cf( 406 rocksdb_t* db, const rocksdb_flushoptions_t* options, 407 rocksdb_column_family_handle_t* column_family, char** errptr); 408 409 extern ROCKSDB_LIBRARY_API void rocksdb_disable_file_deletions(rocksdb_t* db, 410 char** errptr); 411 412 extern ROCKSDB_LIBRARY_API void rocksdb_enable_file_deletions( 413 rocksdb_t* db, unsigned char force, char** errptr); 414 415 /* Management operations */ 416 417 extern ROCKSDB_LIBRARY_API void rocksdb_destroy_db( 418 const rocksdb_options_t* options, const char* name, char** errptr); 419 420 extern ROCKSDB_LIBRARY_API void rocksdb_repair_db( 421 const rocksdb_options_t* options, const char* name, char** errptr); 422 423 /* Iterator */ 424 425 extern ROCKSDB_LIBRARY_API void rocksdb_iter_destroy(rocksdb_iterator_t*); 426 extern ROCKSDB_LIBRARY_API unsigned char rocksdb_iter_valid( 427 const rocksdb_iterator_t*); 428 extern ROCKSDB_LIBRARY_API void rocksdb_iter_seek_to_first(rocksdb_iterator_t*); 429 extern ROCKSDB_LIBRARY_API void rocksdb_iter_seek_to_last(rocksdb_iterator_t*); 430 extern ROCKSDB_LIBRARY_API void rocksdb_iter_seek(rocksdb_iterator_t*, 431 const char* k, size_t klen); 432 extern ROCKSDB_LIBRARY_API void rocksdb_iter_seek_for_prev(rocksdb_iterator_t*, 433 const char* k, 434 size_t klen); 435 extern ROCKSDB_LIBRARY_API void rocksdb_iter_next(rocksdb_iterator_t*); 436 extern ROCKSDB_LIBRARY_API void rocksdb_iter_prev(rocksdb_iterator_t*); 437 extern ROCKSDB_LIBRARY_API const char* rocksdb_iter_key( 438 const rocksdb_iterator_t*, size_t* klen); 439 extern ROCKSDB_LIBRARY_API const char* rocksdb_iter_value( 440 const rocksdb_iterator_t*, size_t* vlen); 441 extern ROCKSDB_LIBRARY_API void rocksdb_iter_get_error( 442 const rocksdb_iterator_t*, char** errptr); 443 444 extern ROCKSDB_LIBRARY_API void rocksdb_wal_iter_next(rocksdb_wal_iterator_t* iter); 445 extern ROCKSDB_LIBRARY_API unsigned char rocksdb_wal_iter_valid( 446 const rocksdb_wal_iterator_t*); 447 extern ROCKSDB_LIBRARY_API void rocksdb_wal_iter_status (const rocksdb_wal_iterator_t* iter, char** errptr) ; 448 extern ROCKSDB_LIBRARY_API rocksdb_writebatch_t* rocksdb_wal_iter_get_batch (const rocksdb_wal_iterator_t* iter, uint64_t* seq) ; 449 extern ROCKSDB_LIBRARY_API uint64_t rocksdb_get_latest_sequence_number (rocksdb_t *db); 450 extern ROCKSDB_LIBRARY_API void rocksdb_wal_iter_destroy (const rocksdb_wal_iterator_t* iter) ; 451 452 /* Write batch */ 453 454 extern ROCKSDB_LIBRARY_API rocksdb_writebatch_t* rocksdb_writebatch_create(); 455 extern ROCKSDB_LIBRARY_API rocksdb_writebatch_t* rocksdb_writebatch_create_from( 456 const char* rep, size_t size); 457 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_destroy( 458 rocksdb_writebatch_t*); 459 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_clear(rocksdb_writebatch_t*); 460 extern ROCKSDB_LIBRARY_API int rocksdb_writebatch_count(rocksdb_writebatch_t*); 461 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_put(rocksdb_writebatch_t*, 462 const char* key, 463 size_t klen, 464 const char* val, 465 size_t vlen); 466 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_put_cf( 467 rocksdb_writebatch_t*, rocksdb_column_family_handle_t* column_family, 468 const char* key, size_t klen, const char* val, size_t vlen); 469 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_putv( 470 rocksdb_writebatch_t* b, int num_keys, const char* const* keys_list, 471 const size_t* keys_list_sizes, int num_values, 472 const char* const* values_list, const size_t* values_list_sizes); 473 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_putv_cf( 474 rocksdb_writebatch_t* b, rocksdb_column_family_handle_t* column_family, 475 int num_keys, const char* const* keys_list, const size_t* keys_list_sizes, 476 int num_values, const char* const* values_list, 477 const size_t* values_list_sizes); 478 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_merge(rocksdb_writebatch_t*, 479 const char* key, 480 size_t klen, 481 const char* val, 482 size_t vlen); 483 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_merge_cf( 484 rocksdb_writebatch_t*, rocksdb_column_family_handle_t* column_family, 485 const char* key, size_t klen, const char* val, size_t vlen); 486 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_mergev( 487 rocksdb_writebatch_t* b, int num_keys, const char* const* keys_list, 488 const size_t* keys_list_sizes, int num_values, 489 const char* const* values_list, const size_t* values_list_sizes); 490 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_mergev_cf( 491 rocksdb_writebatch_t* b, rocksdb_column_family_handle_t* column_family, 492 int num_keys, const char* const* keys_list, const size_t* keys_list_sizes, 493 int num_values, const char* const* values_list, 494 const size_t* values_list_sizes); 495 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_delete(rocksdb_writebatch_t*, 496 const char* key, 497 size_t klen); 498 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_delete_cf( 499 rocksdb_writebatch_t*, rocksdb_column_family_handle_t* column_family, 500 const char* key, size_t klen); 501 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_deletev( 502 rocksdb_writebatch_t* b, int num_keys, const char* const* keys_list, 503 const size_t* keys_list_sizes); 504 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_deletev_cf( 505 rocksdb_writebatch_t* b, rocksdb_column_family_handle_t* column_family, 506 int num_keys, const char* const* keys_list, const size_t* keys_list_sizes); 507 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_delete_range( 508 rocksdb_writebatch_t* b, const char* start_key, size_t start_key_len, 509 const char* end_key, size_t end_key_len); 510 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_delete_range_cf( 511 rocksdb_writebatch_t* b, rocksdb_column_family_handle_t* column_family, 512 const char* start_key, size_t start_key_len, const char* end_key, 513 size_t end_key_len); 514 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_delete_rangev( 515 rocksdb_writebatch_t* b, int num_keys, const char* const* start_keys_list, 516 const size_t* start_keys_list_sizes, const char* const* end_keys_list, 517 const size_t* end_keys_list_sizes); 518 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_delete_rangev_cf( 519 rocksdb_writebatch_t* b, rocksdb_column_family_handle_t* column_family, 520 int num_keys, const char* const* start_keys_list, 521 const size_t* start_keys_list_sizes, const char* const* end_keys_list, 522 const size_t* end_keys_list_sizes); 523 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_put_log_data( 524 rocksdb_writebatch_t*, const char* blob, size_t len); 525 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_iterate( 526 rocksdb_writebatch_t*, void* state, 527 void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen), 528 void (*deleted)(void*, const char* k, size_t klen)); 529 extern ROCKSDB_LIBRARY_API const char* rocksdb_writebatch_data( 530 rocksdb_writebatch_t*, size_t* size); 531 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_set_save_point( 532 rocksdb_writebatch_t*); 533 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_rollback_to_save_point( 534 rocksdb_writebatch_t*, char** errptr); 535 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_pop_save_point( 536 rocksdb_writebatch_t*, char** errptr); 537 538 /* Write batch with index */ 539 540 extern ROCKSDB_LIBRARY_API rocksdb_writebatch_wi_t* rocksdb_writebatch_wi_create( 541 size_t reserved_bytes, 542 unsigned char overwrite_keys); 543 extern ROCKSDB_LIBRARY_API rocksdb_writebatch_wi_t* rocksdb_writebatch_wi_create_from( 544 const char* rep, size_t size); 545 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_destroy( 546 rocksdb_writebatch_wi_t*); 547 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_clear(rocksdb_writebatch_wi_t*); 548 extern ROCKSDB_LIBRARY_API int rocksdb_writebatch_wi_count(rocksdb_writebatch_wi_t* b); 549 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_put(rocksdb_writebatch_wi_t*, 550 const char* key, 551 size_t klen, 552 const char* val, 553 size_t vlen); 554 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_put_cf( 555 rocksdb_writebatch_wi_t*, rocksdb_column_family_handle_t* column_family, 556 const char* key, size_t klen, const char* val, size_t vlen); 557 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_putv( 558 rocksdb_writebatch_wi_t* b, int num_keys, const char* const* keys_list, 559 const size_t* keys_list_sizes, int num_values, 560 const char* const* values_list, const size_t* values_list_sizes); 561 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_putv_cf( 562 rocksdb_writebatch_wi_t* b, rocksdb_column_family_handle_t* column_family, 563 int num_keys, const char* const* keys_list, const size_t* keys_list_sizes, 564 int num_values, const char* const* values_list, 565 const size_t* values_list_sizes); 566 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_merge(rocksdb_writebatch_wi_t*, 567 const char* key, 568 size_t klen, 569 const char* val, 570 size_t vlen); 571 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_merge_cf( 572 rocksdb_writebatch_wi_t*, rocksdb_column_family_handle_t* column_family, 573 const char* key, size_t klen, const char* val, size_t vlen); 574 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_mergev( 575 rocksdb_writebatch_wi_t* b, int num_keys, const char* const* keys_list, 576 const size_t* keys_list_sizes, int num_values, 577 const char* const* values_list, const size_t* values_list_sizes); 578 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_mergev_cf( 579 rocksdb_writebatch_wi_t* b, rocksdb_column_family_handle_t* column_family, 580 int num_keys, const char* const* keys_list, const size_t* keys_list_sizes, 581 int num_values, const char* const* values_list, 582 const size_t* values_list_sizes); 583 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_delete(rocksdb_writebatch_wi_t*, 584 const char* key, 585 size_t klen); 586 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_delete_cf( 587 rocksdb_writebatch_wi_t*, rocksdb_column_family_handle_t* column_family, 588 const char* key, size_t klen); 589 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_deletev( 590 rocksdb_writebatch_wi_t* b, int num_keys, const char* const* keys_list, 591 const size_t* keys_list_sizes); 592 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_deletev_cf( 593 rocksdb_writebatch_wi_t* b, rocksdb_column_family_handle_t* column_family, 594 int num_keys, const char* const* keys_list, const size_t* keys_list_sizes); 595 // DO NOT USE - rocksdb_writebatch_wi_delete_range is not yet supported 596 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_delete_range( 597 rocksdb_writebatch_wi_t* b, const char* start_key, size_t start_key_len, 598 const char* end_key, size_t end_key_len); 599 // DO NOT USE - rocksdb_writebatch_wi_delete_range_cf is not yet supported 600 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_delete_range_cf( 601 rocksdb_writebatch_wi_t* b, rocksdb_column_family_handle_t* column_family, 602 const char* start_key, size_t start_key_len, const char* end_key, 603 size_t end_key_len); 604 // DO NOT USE - rocksdb_writebatch_wi_delete_rangev is not yet supported 605 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_delete_rangev( 606 rocksdb_writebatch_wi_t* b, int num_keys, const char* const* start_keys_list, 607 const size_t* start_keys_list_sizes, const char* const* end_keys_list, 608 const size_t* end_keys_list_sizes); 609 // DO NOT USE - rocksdb_writebatch_wi_delete_rangev_cf is not yet supported 610 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_delete_rangev_cf( 611 rocksdb_writebatch_wi_t* b, rocksdb_column_family_handle_t* column_family, 612 int num_keys, const char* const* start_keys_list, 613 const size_t* start_keys_list_sizes, const char* const* end_keys_list, 614 const size_t* end_keys_list_sizes); 615 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_put_log_data( 616 rocksdb_writebatch_wi_t*, const char* blob, size_t len); 617 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_iterate( 618 rocksdb_writebatch_wi_t* b, 619 void* state, 620 void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen), 621 void (*deleted)(void*, const char* k, size_t klen)); 622 extern ROCKSDB_LIBRARY_API const char* rocksdb_writebatch_wi_data( 623 rocksdb_writebatch_wi_t* b, 624 size_t* size); 625 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_set_save_point( 626 rocksdb_writebatch_wi_t*); 627 extern ROCKSDB_LIBRARY_API void rocksdb_writebatch_wi_rollback_to_save_point( 628 rocksdb_writebatch_wi_t*, char** errptr); 629 extern ROCKSDB_LIBRARY_API char* rocksdb_writebatch_wi_get_from_batch( 630 rocksdb_writebatch_wi_t* wbwi, 631 const rocksdb_options_t* options, 632 const char* key, size_t keylen, 633 size_t* vallen, 634 char** errptr); 635 extern ROCKSDB_LIBRARY_API char* rocksdb_writebatch_wi_get_from_batch_cf( 636 rocksdb_writebatch_wi_t* wbwi, 637 const rocksdb_options_t* options, 638 rocksdb_column_family_handle_t* column_family, 639 const char* key, size_t keylen, 640 size_t* vallen, 641 char** errptr); 642 extern ROCKSDB_LIBRARY_API char* rocksdb_writebatch_wi_get_from_batch_and_db( 643 rocksdb_writebatch_wi_t* wbwi, 644 rocksdb_t* db, 645 const rocksdb_readoptions_t* options, 646 const char* key, size_t keylen, 647 size_t* vallen, 648 char** errptr); 649 extern ROCKSDB_LIBRARY_API char* rocksdb_writebatch_wi_get_from_batch_and_db_cf( 650 rocksdb_writebatch_wi_t* wbwi, 651 rocksdb_t* db, 652 const rocksdb_readoptions_t* options, 653 rocksdb_column_family_handle_t* column_family, 654 const char* key, size_t keylen, 655 size_t* vallen, 656 char** errptr); 657 extern ROCKSDB_LIBRARY_API void rocksdb_write_writebatch_wi( 658 rocksdb_t* db, 659 const rocksdb_writeoptions_t* options, 660 rocksdb_writebatch_wi_t* wbwi, 661 char** errptr); 662 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* rocksdb_writebatch_wi_create_iterator_with_base( 663 rocksdb_writebatch_wi_t* wbwi, 664 rocksdb_iterator_t* base_iterator); 665 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* rocksdb_writebatch_wi_create_iterator_with_base_cf( 666 rocksdb_writebatch_wi_t* wbwi, 667 rocksdb_iterator_t* base_iterator, 668 rocksdb_column_family_handle_t* cf); 669 670 /* Block based table options */ 671 672 extern ROCKSDB_LIBRARY_API rocksdb_block_based_table_options_t* 673 rocksdb_block_based_options_create(); 674 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_destroy( 675 rocksdb_block_based_table_options_t* options); 676 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_block_size( 677 rocksdb_block_based_table_options_t* options, size_t block_size); 678 extern ROCKSDB_LIBRARY_API void 679 rocksdb_block_based_options_set_block_size_deviation( 680 rocksdb_block_based_table_options_t* options, int block_size_deviation); 681 extern ROCKSDB_LIBRARY_API void 682 rocksdb_block_based_options_set_block_restart_interval( 683 rocksdb_block_based_table_options_t* options, int block_restart_interval); 684 extern ROCKSDB_LIBRARY_API void 685 rocksdb_block_based_options_set_index_block_restart_interval( 686 rocksdb_block_based_table_options_t* options, int index_block_restart_interval); 687 extern ROCKSDB_LIBRARY_API void 688 rocksdb_block_based_options_set_metadata_block_size( 689 rocksdb_block_based_table_options_t* options, uint64_t metadata_block_size); 690 extern ROCKSDB_LIBRARY_API void 691 rocksdb_block_based_options_set_partition_filters( 692 rocksdb_block_based_table_options_t* options, unsigned char partition_filters); 693 extern ROCKSDB_LIBRARY_API void 694 rocksdb_block_based_options_set_use_delta_encoding( 695 rocksdb_block_based_table_options_t* options, unsigned char use_delta_encoding); 696 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_filter_policy( 697 rocksdb_block_based_table_options_t* options, 698 rocksdb_filterpolicy_t* filter_policy); 699 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_no_block_cache( 700 rocksdb_block_based_table_options_t* options, unsigned char no_block_cache); 701 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_block_cache( 702 rocksdb_block_based_table_options_t* options, rocksdb_cache_t* block_cache); 703 extern ROCKSDB_LIBRARY_API void 704 rocksdb_block_based_options_set_block_cache_compressed( 705 rocksdb_block_based_table_options_t* options, 706 rocksdb_cache_t* block_cache_compressed); 707 extern ROCKSDB_LIBRARY_API void 708 rocksdb_block_based_options_set_whole_key_filtering( 709 rocksdb_block_based_table_options_t*, unsigned char); 710 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_format_version( 711 rocksdb_block_based_table_options_t*, int); 712 enum { 713 rocksdb_block_based_table_index_type_binary_search = 0, 714 rocksdb_block_based_table_index_type_hash_search = 1, 715 rocksdb_block_based_table_index_type_two_level_index_search = 2, 716 }; 717 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_index_type( 718 rocksdb_block_based_table_options_t*, int); // uses one of the above enums 719 enum { 720 rocksdb_block_based_table_data_block_index_type_binary_search = 0, 721 rocksdb_block_based_table_data_block_index_type_binary_search_and_hash = 1, 722 }; 723 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_data_block_index_type( 724 rocksdb_block_based_table_options_t*, int); // uses one of the above enums 725 extern ROCKSDB_LIBRARY_API void rocksdb_block_based_options_set_data_block_hash_ratio( 726 rocksdb_block_based_table_options_t* options, double v); 727 extern ROCKSDB_LIBRARY_API void 728 rocksdb_block_based_options_set_hash_index_allow_collision( 729 rocksdb_block_based_table_options_t*, unsigned char); 730 extern ROCKSDB_LIBRARY_API void 731 rocksdb_block_based_options_set_cache_index_and_filter_blocks( 732 rocksdb_block_based_table_options_t*, unsigned char); 733 extern ROCKSDB_LIBRARY_API void 734 rocksdb_block_based_options_set_cache_index_and_filter_blocks_with_high_priority( 735 rocksdb_block_based_table_options_t*, unsigned char); 736 extern ROCKSDB_LIBRARY_API void 737 rocksdb_block_based_options_set_pin_l0_filter_and_index_blocks_in_cache( 738 rocksdb_block_based_table_options_t*, unsigned char); 739 extern ROCKSDB_LIBRARY_API void 740 rocksdb_block_based_options_set_pin_top_level_index_and_filter( 741 rocksdb_block_based_table_options_t*, unsigned char); 742 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_block_based_table_factory( 743 rocksdb_options_t* opt, rocksdb_block_based_table_options_t* table_options); 744 745 /* Cuckoo table options */ 746 747 extern ROCKSDB_LIBRARY_API rocksdb_cuckoo_table_options_t* 748 rocksdb_cuckoo_options_create(); 749 extern ROCKSDB_LIBRARY_API void rocksdb_cuckoo_options_destroy( 750 rocksdb_cuckoo_table_options_t* options); 751 extern ROCKSDB_LIBRARY_API void rocksdb_cuckoo_options_set_hash_ratio( 752 rocksdb_cuckoo_table_options_t* options, double v); 753 extern ROCKSDB_LIBRARY_API void rocksdb_cuckoo_options_set_max_search_depth( 754 rocksdb_cuckoo_table_options_t* options, uint32_t v); 755 extern ROCKSDB_LIBRARY_API void rocksdb_cuckoo_options_set_cuckoo_block_size( 756 rocksdb_cuckoo_table_options_t* options, uint32_t v); 757 extern ROCKSDB_LIBRARY_API void 758 rocksdb_cuckoo_options_set_identity_as_first_hash( 759 rocksdb_cuckoo_table_options_t* options, unsigned char v); 760 extern ROCKSDB_LIBRARY_API void rocksdb_cuckoo_options_set_use_module_hash( 761 rocksdb_cuckoo_table_options_t* options, unsigned char v); 762 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_cuckoo_table_factory( 763 rocksdb_options_t* opt, rocksdb_cuckoo_table_options_t* table_options); 764 765 /* Options */ 766 extern ROCKSDB_LIBRARY_API void rocksdb_set_options( 767 rocksdb_t* db, int count, const char* const keys[], const char* const values[], char** errptr); 768 769 extern ROCKSDB_LIBRARY_API void rocksdb_set_options_cf( 770 rocksdb_t* db, rocksdb_column_family_handle_t* handle, int count, const char* const keys[], const char* const values[], char** errptr); 771 772 extern ROCKSDB_LIBRARY_API rocksdb_options_t* rocksdb_options_create(); 773 extern ROCKSDB_LIBRARY_API void rocksdb_options_destroy(rocksdb_options_t*); 774 extern ROCKSDB_LIBRARY_API void rocksdb_options_increase_parallelism( 775 rocksdb_options_t* opt, int total_threads); 776 extern ROCKSDB_LIBRARY_API void rocksdb_options_optimize_for_point_lookup( 777 rocksdb_options_t* opt, uint64_t block_cache_size_mb); 778 extern ROCKSDB_LIBRARY_API void rocksdb_options_optimize_level_style_compaction( 779 rocksdb_options_t* opt, uint64_t memtable_memory_budget); 780 extern ROCKSDB_LIBRARY_API void 781 rocksdb_options_optimize_universal_style_compaction( 782 rocksdb_options_t* opt, uint64_t memtable_memory_budget); 783 extern ROCKSDB_LIBRARY_API void 784 rocksdb_options_set_allow_ingest_behind(rocksdb_options_t*, 785 unsigned char); 786 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_compaction_filter( 787 rocksdb_options_t*, rocksdb_compactionfilter_t*); 788 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_compaction_filter_factory( 789 rocksdb_options_t*, rocksdb_compactionfilterfactory_t*); 790 extern ROCKSDB_LIBRARY_API void rocksdb_options_compaction_readahead_size( 791 rocksdb_options_t*, size_t); 792 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_comparator( 793 rocksdb_options_t*, rocksdb_comparator_t*); 794 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_merge_operator( 795 rocksdb_options_t*, rocksdb_mergeoperator_t*); 796 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_uint64add_merge_operator( 797 rocksdb_options_t*); 798 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_compression_per_level( 799 rocksdb_options_t* opt, int* level_values, size_t num_levels); 800 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_create_if_missing( 801 rocksdb_options_t*, unsigned char); 802 extern ROCKSDB_LIBRARY_API void 803 rocksdb_options_set_create_missing_column_families(rocksdb_options_t*, 804 unsigned char); 805 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_error_if_exists( 806 rocksdb_options_t*, unsigned char); 807 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_paranoid_checks( 808 rocksdb_options_t*, unsigned char); 809 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_db_paths(rocksdb_options_t*, 810 const rocksdb_dbpath_t** path_values, 811 size_t num_paths); 812 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_env(rocksdb_options_t*, 813 rocksdb_env_t*); 814 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_info_log(rocksdb_options_t*, 815 rocksdb_logger_t*); 816 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_info_log_level( 817 rocksdb_options_t*, int); 818 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_write_buffer_size( 819 rocksdb_options_t*, size_t); 820 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_db_write_buffer_size( 821 rocksdb_options_t*, size_t); 822 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_open_files( 823 rocksdb_options_t*, int); 824 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_file_opening_threads( 825 rocksdb_options_t*, int); 826 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_total_wal_size( 827 rocksdb_options_t* opt, uint64_t n); 828 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_compression_options( 829 rocksdb_options_t*, int, int, int, int); 830 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_prefix_extractor( 831 rocksdb_options_t*, rocksdb_slicetransform_t*); 832 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_num_levels( 833 rocksdb_options_t*, int); 834 extern ROCKSDB_LIBRARY_API void 835 rocksdb_options_set_level0_file_num_compaction_trigger(rocksdb_options_t*, int); 836 extern ROCKSDB_LIBRARY_API void 837 rocksdb_options_set_level0_slowdown_writes_trigger(rocksdb_options_t*, int); 838 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_level0_stop_writes_trigger( 839 rocksdb_options_t*, int); 840 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_mem_compaction_level( 841 rocksdb_options_t*, int); 842 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_target_file_size_base( 843 rocksdb_options_t*, uint64_t); 844 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_target_file_size_multiplier( 845 rocksdb_options_t*, int); 846 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_bytes_for_level_base( 847 rocksdb_options_t*, uint64_t); 848 extern ROCKSDB_LIBRARY_API void 849 rocksdb_options_set_level_compaction_dynamic_level_bytes(rocksdb_options_t*, 850 unsigned char); 851 extern ROCKSDB_LIBRARY_API void 852 rocksdb_options_set_max_bytes_for_level_multiplier(rocksdb_options_t*, double); 853 extern ROCKSDB_LIBRARY_API void 854 rocksdb_options_set_max_bytes_for_level_multiplier_additional( 855 rocksdb_options_t*, int* level_values, size_t num_levels); 856 extern ROCKSDB_LIBRARY_API void rocksdb_options_enable_statistics( 857 rocksdb_options_t*); 858 extern ROCKSDB_LIBRARY_API void 859 rocksdb_options_set_skip_stats_update_on_db_open(rocksdb_options_t* opt, 860 unsigned char val); 861 extern ROCKSDB_LIBRARY_API void 862 rocksdb_options_set_skip_checking_sst_file_sizes_on_db_open( 863 rocksdb_options_t* opt, unsigned char val); 864 865 /* returns a pointer to a malloc()-ed, null terminated string */ 866 extern ROCKSDB_LIBRARY_API char* rocksdb_options_statistics_get_string( 867 rocksdb_options_t* opt); 868 869 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_write_buffer_number( 870 rocksdb_options_t*, int); 871 extern ROCKSDB_LIBRARY_API void 872 rocksdb_options_set_min_write_buffer_number_to_merge(rocksdb_options_t*, int); 873 extern ROCKSDB_LIBRARY_API void 874 rocksdb_options_set_max_write_buffer_number_to_maintain(rocksdb_options_t*, 875 int); 876 extern ROCKSDB_LIBRARY_API void 877 rocksdb_options_set_max_write_buffer_size_to_maintain(rocksdb_options_t*, 878 int64_t); 879 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_enable_pipelined_write( 880 rocksdb_options_t*, unsigned char); 881 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_unordered_write( 882 rocksdb_options_t*, unsigned char); 883 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_subcompactions( 884 rocksdb_options_t*, uint32_t); 885 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_background_jobs( 886 rocksdb_options_t*, int); 887 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_background_compactions( 888 rocksdb_options_t*, int); 889 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_base_background_compactions( 890 rocksdb_options_t*, int); 891 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_background_flushes( 892 rocksdb_options_t*, int); 893 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_log_file_size( 894 rocksdb_options_t*, size_t); 895 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_log_file_time_to_roll( 896 rocksdb_options_t*, size_t); 897 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_keep_log_file_num( 898 rocksdb_options_t*, size_t); 899 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_recycle_log_file_num( 900 rocksdb_options_t*, size_t); 901 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_soft_rate_limit( 902 rocksdb_options_t*, double); 903 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_hard_rate_limit( 904 rocksdb_options_t*, double); 905 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_soft_pending_compaction_bytes_limit( 906 rocksdb_options_t* opt, size_t v); 907 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_hard_pending_compaction_bytes_limit( 908 rocksdb_options_t* opt, size_t v); 909 extern ROCKSDB_LIBRARY_API void 910 rocksdb_options_set_rate_limit_delay_max_milliseconds(rocksdb_options_t*, 911 unsigned int); 912 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_manifest_file_size( 913 rocksdb_options_t*, size_t); 914 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_table_cache_numshardbits( 915 rocksdb_options_t*, int); 916 extern ROCKSDB_LIBRARY_API void 917 rocksdb_options_set_table_cache_remove_scan_count_limit(rocksdb_options_t*, 918 int); 919 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_arena_block_size( 920 rocksdb_options_t*, size_t); 921 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_use_fsync( 922 rocksdb_options_t*, int); 923 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_db_log_dir( 924 rocksdb_options_t*, const char*); 925 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_wal_dir(rocksdb_options_t*, 926 const char*); 927 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_WAL_ttl_seconds( 928 rocksdb_options_t*, uint64_t); 929 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_WAL_size_limit_MB( 930 rocksdb_options_t*, uint64_t); 931 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_manifest_preallocation_size( 932 rocksdb_options_t*, size_t); 933 extern ROCKSDB_LIBRARY_API void 934 rocksdb_options_set_purge_redundant_kvs_while_flush(rocksdb_options_t*, 935 unsigned char); 936 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_allow_mmap_reads( 937 rocksdb_options_t*, unsigned char); 938 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_allow_mmap_writes( 939 rocksdb_options_t*, unsigned char); 940 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_use_direct_reads( 941 rocksdb_options_t*, unsigned char); 942 extern ROCKSDB_LIBRARY_API void 943 rocksdb_options_set_use_direct_io_for_flush_and_compaction(rocksdb_options_t*, 944 unsigned char); 945 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_is_fd_close_on_exec( 946 rocksdb_options_t*, unsigned char); 947 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_skip_log_error_on_recovery( 948 rocksdb_options_t*, unsigned char); 949 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_stats_dump_period_sec( 950 rocksdb_options_t*, unsigned int); 951 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_advise_random_on_open( 952 rocksdb_options_t*, unsigned char); 953 extern ROCKSDB_LIBRARY_API void 954 rocksdb_options_set_access_hint_on_compaction_start(rocksdb_options_t*, int); 955 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_use_adaptive_mutex( 956 rocksdb_options_t*, unsigned char); 957 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_bytes_per_sync( 958 rocksdb_options_t*, uint64_t); 959 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_wal_bytes_per_sync( 960 rocksdb_options_t*, uint64_t); 961 extern ROCKSDB_LIBRARY_API void 962 rocksdb_options_set_writable_file_max_buffer_size(rocksdb_options_t*, uint64_t); 963 extern ROCKSDB_LIBRARY_API void 964 rocksdb_options_set_allow_concurrent_memtable_write(rocksdb_options_t*, 965 unsigned char); 966 extern ROCKSDB_LIBRARY_API void 967 rocksdb_options_set_enable_write_thread_adaptive_yield(rocksdb_options_t*, 968 unsigned char); 969 extern ROCKSDB_LIBRARY_API void 970 rocksdb_options_set_max_sequential_skip_in_iterations(rocksdb_options_t*, 971 uint64_t); 972 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_disable_auto_compactions( 973 rocksdb_options_t*, int); 974 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_optimize_filters_for_hits( 975 rocksdb_options_t*, int); 976 extern ROCKSDB_LIBRARY_API void 977 rocksdb_options_set_delete_obsolete_files_period_micros(rocksdb_options_t*, 978 uint64_t); 979 extern ROCKSDB_LIBRARY_API void rocksdb_options_prepare_for_bulk_load( 980 rocksdb_options_t*); 981 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_memtable_vector_rep( 982 rocksdb_options_t*); 983 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_memtable_prefix_bloom_size_ratio( 984 rocksdb_options_t*, double); 985 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_compaction_bytes( 986 rocksdb_options_t*, uint64_t); 987 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_hash_skip_list_rep( 988 rocksdb_options_t*, size_t, int32_t, int32_t); 989 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_hash_link_list_rep( 990 rocksdb_options_t*, size_t); 991 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_plain_table_factory( 992 rocksdb_options_t*, uint32_t, int, double, size_t); 993 994 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_min_level_to_compress( 995 rocksdb_options_t* opt, int level); 996 997 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_memtable_huge_page_size( 998 rocksdb_options_t*, size_t); 999 1000 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_successive_merges( 1001 rocksdb_options_t*, size_t); 1002 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_bloom_locality( 1003 rocksdb_options_t*, uint32_t); 1004 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_inplace_update_support( 1005 rocksdb_options_t*, unsigned char); 1006 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_inplace_update_num_locks( 1007 rocksdb_options_t*, size_t); 1008 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_report_bg_io_stats( 1009 rocksdb_options_t*, int); 1010 1011 enum { 1012 rocksdb_tolerate_corrupted_tail_records_recovery = 0, 1013 rocksdb_absolute_consistency_recovery = 1, 1014 rocksdb_point_in_time_recovery = 2, 1015 rocksdb_skip_any_corrupted_records_recovery = 3 1016 }; 1017 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_wal_recovery_mode( 1018 rocksdb_options_t*, int); 1019 1020 enum { 1021 rocksdb_no_compression = 0, 1022 rocksdb_snappy_compression = 1, 1023 rocksdb_zlib_compression = 2, 1024 rocksdb_bz2_compression = 3, 1025 rocksdb_lz4_compression = 4, 1026 rocksdb_lz4hc_compression = 5, 1027 rocksdb_xpress_compression = 6, 1028 rocksdb_zstd_compression = 7 1029 }; 1030 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_compression( 1031 rocksdb_options_t*, int); 1032 1033 enum { 1034 rocksdb_level_compaction = 0, 1035 rocksdb_universal_compaction = 1, 1036 rocksdb_fifo_compaction = 2 1037 }; 1038 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_compaction_style( 1039 rocksdb_options_t*, int); 1040 extern ROCKSDB_LIBRARY_API void 1041 rocksdb_options_set_universal_compaction_options( 1042 rocksdb_options_t*, rocksdb_universal_compaction_options_t*); 1043 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_fifo_compaction_options( 1044 rocksdb_options_t* opt, rocksdb_fifo_compaction_options_t* fifo); 1045 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_ratelimiter( 1046 rocksdb_options_t* opt, rocksdb_ratelimiter_t* limiter); 1047 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_atomic_flush( 1048 rocksdb_options_t* opt, unsigned char); 1049 1050 extern ROCKSDB_LIBRARY_API void rocksdb_options_set_row_cache( 1051 rocksdb_options_t* opt, rocksdb_cache_t* cache 1052 ); 1053 1054 /* RateLimiter */ 1055 extern ROCKSDB_LIBRARY_API rocksdb_ratelimiter_t* rocksdb_ratelimiter_create( 1056 int64_t rate_bytes_per_sec, int64_t refill_period_us, int32_t fairness); 1057 extern ROCKSDB_LIBRARY_API void rocksdb_ratelimiter_destroy(rocksdb_ratelimiter_t*); 1058 1059 /* PerfContext */ 1060 enum { 1061 rocksdb_uninitialized = 0, 1062 rocksdb_disable = 1, 1063 rocksdb_enable_count = 2, 1064 rocksdb_enable_time_except_for_mutex = 3, 1065 rocksdb_enable_time = 4, 1066 rocksdb_out_of_bounds = 5 1067 }; 1068 1069 enum { 1070 rocksdb_user_key_comparison_count = 0, 1071 rocksdb_block_cache_hit_count, 1072 rocksdb_block_read_count, 1073 rocksdb_block_read_byte, 1074 rocksdb_block_read_time, 1075 rocksdb_block_checksum_time, 1076 rocksdb_block_decompress_time, 1077 rocksdb_get_read_bytes, 1078 rocksdb_multiget_read_bytes, 1079 rocksdb_iter_read_bytes, 1080 rocksdb_internal_key_skipped_count, 1081 rocksdb_internal_delete_skipped_count, 1082 rocksdb_internal_recent_skipped_count, 1083 rocksdb_internal_merge_count, 1084 rocksdb_get_snapshot_time, 1085 rocksdb_get_from_memtable_time, 1086 rocksdb_get_from_memtable_count, 1087 rocksdb_get_post_process_time, 1088 rocksdb_get_from_output_files_time, 1089 rocksdb_seek_on_memtable_time, 1090 rocksdb_seek_on_memtable_count, 1091 rocksdb_next_on_memtable_count, 1092 rocksdb_prev_on_memtable_count, 1093 rocksdb_seek_child_seek_time, 1094 rocksdb_seek_child_seek_count, 1095 rocksdb_seek_min_heap_time, 1096 rocksdb_seek_max_heap_time, 1097 rocksdb_seek_internal_seek_time, 1098 rocksdb_find_next_user_entry_time, 1099 rocksdb_write_wal_time, 1100 rocksdb_write_memtable_time, 1101 rocksdb_write_delay_time, 1102 rocksdb_write_pre_and_post_process_time, 1103 rocksdb_db_mutex_lock_nanos, 1104 rocksdb_db_condition_wait_nanos, 1105 rocksdb_merge_operator_time_nanos, 1106 rocksdb_read_index_block_nanos, 1107 rocksdb_read_filter_block_nanos, 1108 rocksdb_new_table_block_iter_nanos, 1109 rocksdb_new_table_iterator_nanos, 1110 rocksdb_block_seek_nanos, 1111 rocksdb_find_table_nanos, 1112 rocksdb_bloom_memtable_hit_count, 1113 rocksdb_bloom_memtable_miss_count, 1114 rocksdb_bloom_sst_hit_count, 1115 rocksdb_bloom_sst_miss_count, 1116 rocksdb_key_lock_wait_time, 1117 rocksdb_key_lock_wait_count, 1118 rocksdb_env_new_sequential_file_nanos, 1119 rocksdb_env_new_random_access_file_nanos, 1120 rocksdb_env_new_writable_file_nanos, 1121 rocksdb_env_reuse_writable_file_nanos, 1122 rocksdb_env_new_random_rw_file_nanos, 1123 rocksdb_env_new_directory_nanos, 1124 rocksdb_env_file_exists_nanos, 1125 rocksdb_env_get_children_nanos, 1126 rocksdb_env_get_children_file_attributes_nanos, 1127 rocksdb_env_delete_file_nanos, 1128 rocksdb_env_create_dir_nanos, 1129 rocksdb_env_create_dir_if_missing_nanos, 1130 rocksdb_env_delete_dir_nanos, 1131 rocksdb_env_get_file_size_nanos, 1132 rocksdb_env_get_file_modification_time_nanos, 1133 rocksdb_env_rename_file_nanos, 1134 rocksdb_env_link_file_nanos, 1135 rocksdb_env_lock_file_nanos, 1136 rocksdb_env_unlock_file_nanos, 1137 rocksdb_env_new_logger_nanos, 1138 rocksdb_total_metric_count = 68 1139 }; 1140 1141 extern ROCKSDB_LIBRARY_API void rocksdb_set_perf_level(int); 1142 extern ROCKSDB_LIBRARY_API rocksdb_perfcontext_t* rocksdb_perfcontext_create(); 1143 extern ROCKSDB_LIBRARY_API void rocksdb_perfcontext_reset( 1144 rocksdb_perfcontext_t* context); 1145 extern ROCKSDB_LIBRARY_API char* rocksdb_perfcontext_report( 1146 rocksdb_perfcontext_t* context, unsigned char exclude_zero_counters); 1147 extern ROCKSDB_LIBRARY_API uint64_t rocksdb_perfcontext_metric( 1148 rocksdb_perfcontext_t* context, int metric); 1149 extern ROCKSDB_LIBRARY_API void rocksdb_perfcontext_destroy( 1150 rocksdb_perfcontext_t* context); 1151 1152 /* Compaction Filter */ 1153 1154 extern ROCKSDB_LIBRARY_API rocksdb_compactionfilter_t* 1155 rocksdb_compactionfilter_create( 1156 void* state, void (*destructor)(void*), 1157 unsigned char (*filter)(void*, int level, const char* key, 1158 size_t key_length, const char* existing_value, 1159 size_t value_length, char** new_value, 1160 size_t* new_value_length, 1161 unsigned char* value_changed), 1162 const char* (*name)(void*)); 1163 extern ROCKSDB_LIBRARY_API void rocksdb_compactionfilter_set_ignore_snapshots( 1164 rocksdb_compactionfilter_t*, unsigned char); 1165 extern ROCKSDB_LIBRARY_API void rocksdb_compactionfilter_destroy( 1166 rocksdb_compactionfilter_t*); 1167 1168 /* Compaction Filter Context */ 1169 1170 extern ROCKSDB_LIBRARY_API unsigned char 1171 rocksdb_compactionfiltercontext_is_full_compaction( 1172 rocksdb_compactionfiltercontext_t* context); 1173 1174 extern ROCKSDB_LIBRARY_API unsigned char 1175 rocksdb_compactionfiltercontext_is_manual_compaction( 1176 rocksdb_compactionfiltercontext_t* context); 1177 1178 /* Compaction Filter Factory */ 1179 1180 extern ROCKSDB_LIBRARY_API rocksdb_compactionfilterfactory_t* 1181 rocksdb_compactionfilterfactory_create( 1182 void* state, void (*destructor)(void*), 1183 rocksdb_compactionfilter_t* (*create_compaction_filter)( 1184 void*, rocksdb_compactionfiltercontext_t* context), 1185 const char* (*name)(void*)); 1186 extern ROCKSDB_LIBRARY_API void rocksdb_compactionfilterfactory_destroy( 1187 rocksdb_compactionfilterfactory_t*); 1188 1189 /* Comparator */ 1190 1191 extern ROCKSDB_LIBRARY_API rocksdb_comparator_t* rocksdb_comparator_create( 1192 void* state, void (*destructor)(void*), 1193 int (*compare)(void*, const char* a, size_t alen, const char* b, 1194 size_t blen), 1195 const char* (*name)(void*)); 1196 extern ROCKSDB_LIBRARY_API void rocksdb_comparator_destroy( 1197 rocksdb_comparator_t*); 1198 1199 /* Filter policy */ 1200 1201 extern ROCKSDB_LIBRARY_API rocksdb_filterpolicy_t* rocksdb_filterpolicy_create( 1202 void* state, void (*destructor)(void*), 1203 char* (*create_filter)(void*, const char* const* key_array, 1204 const size_t* key_length_array, int num_keys, 1205 size_t* filter_length), 1206 unsigned char (*key_may_match)(void*, const char* key, size_t length, 1207 const char* filter, size_t filter_length), 1208 void (*delete_filter)(void*, const char* filter, size_t filter_length), 1209 const char* (*name)(void*)); 1210 extern ROCKSDB_LIBRARY_API void rocksdb_filterpolicy_destroy( 1211 rocksdb_filterpolicy_t*); 1212 1213 extern ROCKSDB_LIBRARY_API rocksdb_filterpolicy_t* 1214 rocksdb_filterpolicy_create_bloom(int bits_per_key); 1215 extern ROCKSDB_LIBRARY_API rocksdb_filterpolicy_t* 1216 rocksdb_filterpolicy_create_bloom_full(int bits_per_key); 1217 1218 /* Merge Operator */ 1219 1220 extern ROCKSDB_LIBRARY_API rocksdb_mergeoperator_t* 1221 rocksdb_mergeoperator_create( 1222 void* state, void (*destructor)(void*), 1223 char* (*full_merge)(void*, const char* key, size_t key_length, 1224 const char* existing_value, 1225 size_t existing_value_length, 1226 const char* const* operands_list, 1227 const size_t* operands_list_length, int num_operands, 1228 unsigned char* success, size_t* new_value_length), 1229 char* (*partial_merge)(void*, const char* key, size_t key_length, 1230 const char* const* operands_list, 1231 const size_t* operands_list_length, int num_operands, 1232 unsigned char* success, size_t* new_value_length), 1233 void (*delete_value)(void*, const char* value, size_t value_length), 1234 const char* (*name)(void*)); 1235 extern ROCKSDB_LIBRARY_API void rocksdb_mergeoperator_destroy( 1236 rocksdb_mergeoperator_t*); 1237 1238 /* Read options */ 1239 1240 extern ROCKSDB_LIBRARY_API rocksdb_readoptions_t* rocksdb_readoptions_create(); 1241 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_destroy( 1242 rocksdb_readoptions_t*); 1243 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_verify_checksums( 1244 rocksdb_readoptions_t*, unsigned char); 1245 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_fill_cache( 1246 rocksdb_readoptions_t*, unsigned char); 1247 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_snapshot( 1248 rocksdb_readoptions_t*, const rocksdb_snapshot_t*); 1249 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_iterate_upper_bound( 1250 rocksdb_readoptions_t*, const char* key, size_t keylen); 1251 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_iterate_lower_bound( 1252 rocksdb_readoptions_t*, const char* key, size_t keylen); 1253 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_read_tier( 1254 rocksdb_readoptions_t*, int); 1255 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_tailing( 1256 rocksdb_readoptions_t*, unsigned char); 1257 // The functionality that this option controlled has been removed. 1258 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_managed( 1259 rocksdb_readoptions_t*, unsigned char); 1260 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_readahead_size( 1261 rocksdb_readoptions_t*, size_t); 1262 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_prefix_same_as_start( 1263 rocksdb_readoptions_t*, unsigned char); 1264 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_pin_data( 1265 rocksdb_readoptions_t*, unsigned char); 1266 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_total_order_seek( 1267 rocksdb_readoptions_t*, unsigned char); 1268 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_max_skippable_internal_keys( 1269 rocksdb_readoptions_t*, uint64_t); 1270 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_background_purge_on_iterator_cleanup( 1271 rocksdb_readoptions_t*, unsigned char); 1272 extern ROCKSDB_LIBRARY_API void rocksdb_readoptions_set_ignore_range_deletions( 1273 rocksdb_readoptions_t*, unsigned char); 1274 1275 /* Write options */ 1276 1277 extern ROCKSDB_LIBRARY_API rocksdb_writeoptions_t* 1278 rocksdb_writeoptions_create(); 1279 extern ROCKSDB_LIBRARY_API void rocksdb_writeoptions_destroy( 1280 rocksdb_writeoptions_t*); 1281 extern ROCKSDB_LIBRARY_API void rocksdb_writeoptions_set_sync( 1282 rocksdb_writeoptions_t*, unsigned char); 1283 extern ROCKSDB_LIBRARY_API void rocksdb_writeoptions_disable_WAL( 1284 rocksdb_writeoptions_t* opt, int disable); 1285 extern ROCKSDB_LIBRARY_API void rocksdb_writeoptions_set_ignore_missing_column_families( 1286 rocksdb_writeoptions_t*, unsigned char); 1287 extern ROCKSDB_LIBRARY_API void rocksdb_writeoptions_set_no_slowdown( 1288 rocksdb_writeoptions_t*, unsigned char); 1289 extern ROCKSDB_LIBRARY_API void rocksdb_writeoptions_set_low_pri( 1290 rocksdb_writeoptions_t*, unsigned char); 1291 extern ROCKSDB_LIBRARY_API void 1292 rocksdb_writeoptions_set_memtable_insert_hint_per_batch(rocksdb_writeoptions_t*, 1293 unsigned char); 1294 1295 /* Compact range options */ 1296 1297 extern ROCKSDB_LIBRARY_API rocksdb_compactoptions_t* 1298 rocksdb_compactoptions_create(); 1299 extern ROCKSDB_LIBRARY_API void rocksdb_compactoptions_destroy( 1300 rocksdb_compactoptions_t*); 1301 extern ROCKSDB_LIBRARY_API void 1302 rocksdb_compactoptions_set_exclusive_manual_compaction( 1303 rocksdb_compactoptions_t*, unsigned char); 1304 extern ROCKSDB_LIBRARY_API void 1305 rocksdb_compactoptions_set_bottommost_level_compaction( 1306 rocksdb_compactoptions_t*, unsigned char); 1307 extern ROCKSDB_LIBRARY_API void rocksdb_compactoptions_set_change_level( 1308 rocksdb_compactoptions_t*, unsigned char); 1309 extern ROCKSDB_LIBRARY_API void rocksdb_compactoptions_set_target_level( 1310 rocksdb_compactoptions_t*, int); 1311 1312 /* Flush options */ 1313 1314 extern ROCKSDB_LIBRARY_API rocksdb_flushoptions_t* 1315 rocksdb_flushoptions_create(); 1316 extern ROCKSDB_LIBRARY_API void rocksdb_flushoptions_destroy( 1317 rocksdb_flushoptions_t*); 1318 extern ROCKSDB_LIBRARY_API void rocksdb_flushoptions_set_wait( 1319 rocksdb_flushoptions_t*, unsigned char); 1320 1321 /* Cache */ 1322 1323 extern ROCKSDB_LIBRARY_API rocksdb_cache_t* rocksdb_cache_create_lru( 1324 size_t capacity); 1325 extern ROCKSDB_LIBRARY_API void rocksdb_cache_destroy(rocksdb_cache_t* cache); 1326 extern ROCKSDB_LIBRARY_API void rocksdb_cache_set_capacity( 1327 rocksdb_cache_t* cache, size_t capacity); 1328 extern ROCKSDB_LIBRARY_API size_t 1329 rocksdb_cache_get_usage(rocksdb_cache_t* cache); 1330 extern ROCKSDB_LIBRARY_API size_t 1331 rocksdb_cache_get_pinned_usage(rocksdb_cache_t* cache); 1332 1333 /* DBPath */ 1334 1335 extern ROCKSDB_LIBRARY_API rocksdb_dbpath_t* rocksdb_dbpath_create(const char* path, uint64_t target_size); 1336 extern ROCKSDB_LIBRARY_API void rocksdb_dbpath_destroy(rocksdb_dbpath_t*); 1337 1338 /* Env */ 1339 1340 extern ROCKSDB_LIBRARY_API rocksdb_env_t* rocksdb_create_default_env(); 1341 extern ROCKSDB_LIBRARY_API rocksdb_env_t* rocksdb_create_mem_env(); 1342 extern ROCKSDB_LIBRARY_API void rocksdb_env_set_background_threads( 1343 rocksdb_env_t* env, int n); 1344 extern ROCKSDB_LIBRARY_API void 1345 rocksdb_env_set_high_priority_background_threads(rocksdb_env_t* env, int n); 1346 extern ROCKSDB_LIBRARY_API void rocksdb_env_join_all_threads( 1347 rocksdb_env_t* env); 1348 extern ROCKSDB_LIBRARY_API void rocksdb_env_lower_thread_pool_io_priority(rocksdb_env_t* env); 1349 extern ROCKSDB_LIBRARY_API void rocksdb_env_lower_high_priority_thread_pool_io_priority(rocksdb_env_t* env); 1350 extern ROCKSDB_LIBRARY_API void rocksdb_env_lower_thread_pool_cpu_priority(rocksdb_env_t* env); 1351 extern ROCKSDB_LIBRARY_API void rocksdb_env_lower_high_priority_thread_pool_cpu_priority(rocksdb_env_t* env); 1352 1353 extern ROCKSDB_LIBRARY_API void rocksdb_env_destroy(rocksdb_env_t*); 1354 1355 extern ROCKSDB_LIBRARY_API rocksdb_envoptions_t* rocksdb_envoptions_create(); 1356 extern ROCKSDB_LIBRARY_API void rocksdb_envoptions_destroy( 1357 rocksdb_envoptions_t* opt); 1358 1359 /* SstFile */ 1360 1361 extern ROCKSDB_LIBRARY_API rocksdb_sstfilewriter_t* 1362 rocksdb_sstfilewriter_create(const rocksdb_envoptions_t* env, 1363 const rocksdb_options_t* io_options); 1364 extern ROCKSDB_LIBRARY_API rocksdb_sstfilewriter_t* 1365 rocksdb_sstfilewriter_create_with_comparator( 1366 const rocksdb_envoptions_t* env, const rocksdb_options_t* io_options, 1367 const rocksdb_comparator_t* comparator); 1368 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_open( 1369 rocksdb_sstfilewriter_t* writer, const char* name, char** errptr); 1370 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_add( 1371 rocksdb_sstfilewriter_t* writer, const char* key, size_t keylen, 1372 const char* val, size_t vallen, char** errptr); 1373 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_put( 1374 rocksdb_sstfilewriter_t* writer, const char* key, size_t keylen, 1375 const char* val, size_t vallen, char** errptr); 1376 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_merge( 1377 rocksdb_sstfilewriter_t* writer, const char* key, size_t keylen, 1378 const char* val, size_t vallen, char** errptr); 1379 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_delete( 1380 rocksdb_sstfilewriter_t* writer, const char* key, size_t keylen, 1381 char** errptr); 1382 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_finish( 1383 rocksdb_sstfilewriter_t* writer, char** errptr); 1384 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_file_size( 1385 rocksdb_sstfilewriter_t* writer, uint64_t* file_size); 1386 extern ROCKSDB_LIBRARY_API void rocksdb_sstfilewriter_destroy( 1387 rocksdb_sstfilewriter_t* writer); 1388 1389 extern ROCKSDB_LIBRARY_API rocksdb_ingestexternalfileoptions_t* 1390 rocksdb_ingestexternalfileoptions_create(); 1391 extern ROCKSDB_LIBRARY_API void 1392 rocksdb_ingestexternalfileoptions_set_move_files( 1393 rocksdb_ingestexternalfileoptions_t* opt, unsigned char move_files); 1394 extern ROCKSDB_LIBRARY_API void 1395 rocksdb_ingestexternalfileoptions_set_snapshot_consistency( 1396 rocksdb_ingestexternalfileoptions_t* opt, 1397 unsigned char snapshot_consistency); 1398 extern ROCKSDB_LIBRARY_API void 1399 rocksdb_ingestexternalfileoptions_set_allow_global_seqno( 1400 rocksdb_ingestexternalfileoptions_t* opt, unsigned char allow_global_seqno); 1401 extern ROCKSDB_LIBRARY_API void 1402 rocksdb_ingestexternalfileoptions_set_allow_blocking_flush( 1403 rocksdb_ingestexternalfileoptions_t* opt, 1404 unsigned char allow_blocking_flush); 1405 extern ROCKSDB_LIBRARY_API void 1406 rocksdb_ingestexternalfileoptions_set_ingest_behind( 1407 rocksdb_ingestexternalfileoptions_t* opt, 1408 unsigned char ingest_behind); 1409 extern ROCKSDB_LIBRARY_API void rocksdb_ingestexternalfileoptions_destroy( 1410 rocksdb_ingestexternalfileoptions_t* opt); 1411 1412 extern ROCKSDB_LIBRARY_API void rocksdb_ingest_external_file( 1413 rocksdb_t* db, const char* const* file_list, const size_t list_len, 1414 const rocksdb_ingestexternalfileoptions_t* opt, char** errptr); 1415 extern ROCKSDB_LIBRARY_API void rocksdb_ingest_external_file_cf( 1416 rocksdb_t* db, rocksdb_column_family_handle_t* handle, 1417 const char* const* file_list, const size_t list_len, 1418 const rocksdb_ingestexternalfileoptions_t* opt, char** errptr); 1419 1420 extern ROCKSDB_LIBRARY_API void rocksdb_try_catch_up_with_primary( 1421 rocksdb_t* db, char** errptr); 1422 1423 /* SliceTransform */ 1424 1425 extern ROCKSDB_LIBRARY_API rocksdb_slicetransform_t* 1426 rocksdb_slicetransform_create( 1427 void* state, void (*destructor)(void*), 1428 char* (*transform)(void*, const char* key, size_t length, 1429 size_t* dst_length), 1430 unsigned char (*in_domain)(void*, const char* key, size_t length), 1431 unsigned char (*in_range)(void*, const char* key, size_t length), 1432 const char* (*name)(void*)); 1433 extern ROCKSDB_LIBRARY_API rocksdb_slicetransform_t* 1434 rocksdb_slicetransform_create_fixed_prefix(size_t); 1435 extern ROCKSDB_LIBRARY_API rocksdb_slicetransform_t* 1436 rocksdb_slicetransform_create_noop(); 1437 extern ROCKSDB_LIBRARY_API void rocksdb_slicetransform_destroy( 1438 rocksdb_slicetransform_t*); 1439 1440 /* Universal Compaction options */ 1441 1442 enum { 1443 rocksdb_similar_size_compaction_stop_style = 0, 1444 rocksdb_total_size_compaction_stop_style = 1 1445 }; 1446 1447 extern ROCKSDB_LIBRARY_API rocksdb_universal_compaction_options_t* 1448 rocksdb_universal_compaction_options_create(); 1449 extern ROCKSDB_LIBRARY_API void 1450 rocksdb_universal_compaction_options_set_size_ratio( 1451 rocksdb_universal_compaction_options_t*, int); 1452 extern ROCKSDB_LIBRARY_API void 1453 rocksdb_universal_compaction_options_set_min_merge_width( 1454 rocksdb_universal_compaction_options_t*, int); 1455 extern ROCKSDB_LIBRARY_API void 1456 rocksdb_universal_compaction_options_set_max_merge_width( 1457 rocksdb_universal_compaction_options_t*, int); 1458 extern ROCKSDB_LIBRARY_API void 1459 rocksdb_universal_compaction_options_set_max_size_amplification_percent( 1460 rocksdb_universal_compaction_options_t*, int); 1461 extern ROCKSDB_LIBRARY_API void 1462 rocksdb_universal_compaction_options_set_compression_size_percent( 1463 rocksdb_universal_compaction_options_t*, int); 1464 extern ROCKSDB_LIBRARY_API void 1465 rocksdb_universal_compaction_options_set_stop_style( 1466 rocksdb_universal_compaction_options_t*, int); 1467 extern ROCKSDB_LIBRARY_API void rocksdb_universal_compaction_options_destroy( 1468 rocksdb_universal_compaction_options_t*); 1469 1470 extern ROCKSDB_LIBRARY_API rocksdb_fifo_compaction_options_t* 1471 rocksdb_fifo_compaction_options_create(); 1472 extern ROCKSDB_LIBRARY_API void 1473 rocksdb_fifo_compaction_options_set_max_table_files_size( 1474 rocksdb_fifo_compaction_options_t* fifo_opts, uint64_t size); 1475 extern ROCKSDB_LIBRARY_API void rocksdb_fifo_compaction_options_destroy( 1476 rocksdb_fifo_compaction_options_t* fifo_opts); 1477 1478 extern ROCKSDB_LIBRARY_API int rocksdb_livefiles_count( 1479 const rocksdb_livefiles_t*); 1480 extern ROCKSDB_LIBRARY_API const char* rocksdb_livefiles_name( 1481 const rocksdb_livefiles_t*, int index); 1482 extern ROCKSDB_LIBRARY_API int rocksdb_livefiles_level( 1483 const rocksdb_livefiles_t*, int index); 1484 extern ROCKSDB_LIBRARY_API size_t 1485 rocksdb_livefiles_size(const rocksdb_livefiles_t*, int index); 1486 extern ROCKSDB_LIBRARY_API const char* rocksdb_livefiles_smallestkey( 1487 const rocksdb_livefiles_t*, int index, size_t* size); 1488 extern ROCKSDB_LIBRARY_API const char* rocksdb_livefiles_largestkey( 1489 const rocksdb_livefiles_t*, int index, size_t* size); 1490 extern ROCKSDB_LIBRARY_API uint64_t rocksdb_livefiles_entries( 1491 const rocksdb_livefiles_t*, int index); 1492 extern ROCKSDB_LIBRARY_API uint64_t rocksdb_livefiles_deletions( 1493 const rocksdb_livefiles_t*, int index); 1494 extern ROCKSDB_LIBRARY_API void rocksdb_livefiles_destroy( 1495 const rocksdb_livefiles_t*); 1496 1497 /* Utility Helpers */ 1498 1499 extern ROCKSDB_LIBRARY_API void rocksdb_get_options_from_string( 1500 const rocksdb_options_t* base_options, const char* opts_str, 1501 rocksdb_options_t* new_options, char** errptr); 1502 1503 extern ROCKSDB_LIBRARY_API void rocksdb_delete_file_in_range( 1504 rocksdb_t* db, const char* start_key, size_t start_key_len, 1505 const char* limit_key, size_t limit_key_len, char** errptr); 1506 1507 extern ROCKSDB_LIBRARY_API void rocksdb_delete_file_in_range_cf( 1508 rocksdb_t* db, rocksdb_column_family_handle_t* column_family, 1509 const char* start_key, size_t start_key_len, const char* limit_key, 1510 size_t limit_key_len, char** errptr); 1511 1512 /* Transactions */ 1513 1514 extern ROCKSDB_LIBRARY_API rocksdb_column_family_handle_t* 1515 rocksdb_transactiondb_create_column_family( 1516 rocksdb_transactiondb_t* txn_db, 1517 const rocksdb_options_t* column_family_options, 1518 const char* column_family_name, char** errptr); 1519 1520 extern ROCKSDB_LIBRARY_API rocksdb_transactiondb_t* rocksdb_transactiondb_open( 1521 const rocksdb_options_t* options, 1522 const rocksdb_transactiondb_options_t* txn_db_options, const char* name, 1523 char** errptr); 1524 1525 rocksdb_transactiondb_t* rocksdb_transactiondb_open_column_families( 1526 const rocksdb_options_t* options, 1527 const rocksdb_transactiondb_options_t* txn_db_options, const char* name, 1528 int num_column_families, const char* const* column_family_names, 1529 const rocksdb_options_t* const* column_family_options, 1530 rocksdb_column_family_handle_t** column_family_handles, char** errptr); 1531 1532 extern ROCKSDB_LIBRARY_API const rocksdb_snapshot_t* 1533 rocksdb_transactiondb_create_snapshot(rocksdb_transactiondb_t* txn_db); 1534 1535 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_release_snapshot( 1536 rocksdb_transactiondb_t* txn_db, const rocksdb_snapshot_t* snapshot); 1537 1538 extern ROCKSDB_LIBRARY_API rocksdb_transaction_t* rocksdb_transaction_begin( 1539 rocksdb_transactiondb_t* txn_db, 1540 const rocksdb_writeoptions_t* write_options, 1541 const rocksdb_transaction_options_t* txn_options, 1542 rocksdb_transaction_t* old_txn); 1543 1544 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_commit( 1545 rocksdb_transaction_t* txn, char** errptr); 1546 1547 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_rollback( 1548 rocksdb_transaction_t* txn, char** errptr); 1549 1550 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_set_savepoint( 1551 rocksdb_transaction_t* txn); 1552 1553 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_rollback_to_savepoint( 1554 rocksdb_transaction_t* txn, char** errptr); 1555 1556 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_destroy( 1557 rocksdb_transaction_t* txn); 1558 1559 // This snapshot should be freed using rocksdb_free 1560 extern ROCKSDB_LIBRARY_API const rocksdb_snapshot_t* 1561 rocksdb_transaction_get_snapshot(rocksdb_transaction_t* txn); 1562 1563 extern ROCKSDB_LIBRARY_API char* rocksdb_transaction_get( 1564 rocksdb_transaction_t* txn, const rocksdb_readoptions_t* options, 1565 const char* key, size_t klen, size_t* vlen, char** errptr); 1566 1567 extern ROCKSDB_LIBRARY_API char* rocksdb_transaction_get_cf( 1568 rocksdb_transaction_t* txn, const rocksdb_readoptions_t* options, 1569 rocksdb_column_family_handle_t* column_family, const char* key, size_t klen, 1570 size_t* vlen, char** errptr); 1571 1572 extern ROCKSDB_LIBRARY_API char* rocksdb_transaction_get_for_update( 1573 rocksdb_transaction_t* txn, const rocksdb_readoptions_t* options, 1574 const char* key, size_t klen, size_t* vlen, unsigned char exclusive, 1575 char** errptr); 1576 1577 char* rocksdb_transaction_get_for_update_cf( 1578 rocksdb_transaction_t* txn, const rocksdb_readoptions_t* options, 1579 rocksdb_column_family_handle_t* column_family, const char* key, size_t klen, 1580 size_t* vlen, unsigned char exclusive, char** errptr); 1581 1582 extern ROCKSDB_LIBRARY_API char* rocksdb_transactiondb_get( 1583 rocksdb_transactiondb_t* txn_db, const rocksdb_readoptions_t* options, 1584 const char* key, size_t klen, size_t* vlen, char** errptr); 1585 1586 extern ROCKSDB_LIBRARY_API char* rocksdb_transactiondb_get_cf( 1587 rocksdb_transactiondb_t* txn_db, const rocksdb_readoptions_t* options, 1588 rocksdb_column_family_handle_t* column_family, const char* key, 1589 size_t keylen, size_t* vallen, char** errptr); 1590 1591 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_put( 1592 rocksdb_transaction_t* txn, const char* key, size_t klen, const char* val, 1593 size_t vlen, char** errptr); 1594 1595 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_put_cf( 1596 rocksdb_transaction_t* txn, rocksdb_column_family_handle_t* column_family, 1597 const char* key, size_t klen, const char* val, size_t vlen, char** errptr); 1598 1599 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_put( 1600 rocksdb_transactiondb_t* txn_db, const rocksdb_writeoptions_t* options, 1601 const char* key, size_t klen, const char* val, size_t vlen, char** errptr); 1602 1603 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_put_cf( 1604 rocksdb_transactiondb_t* txn_db, const rocksdb_writeoptions_t* options, 1605 rocksdb_column_family_handle_t* column_family, const char* key, 1606 size_t keylen, const char* val, size_t vallen, char** errptr); 1607 1608 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_write( 1609 rocksdb_transactiondb_t* txn_db, const rocksdb_writeoptions_t* options, 1610 rocksdb_writebatch_t *batch, char** errptr); 1611 1612 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_merge( 1613 rocksdb_transaction_t* txn, const char* key, size_t klen, const char* val, 1614 size_t vlen, char** errptr); 1615 1616 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_merge_cf( 1617 rocksdb_transaction_t* txn, rocksdb_column_family_handle_t* column_family, 1618 const char* key, size_t klen, const char* val, size_t vlen, char** errptr); 1619 1620 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_merge( 1621 rocksdb_transactiondb_t* txn_db, const rocksdb_writeoptions_t* options, 1622 const char* key, size_t klen, const char* val, size_t vlen, char** errptr); 1623 1624 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_merge_cf( 1625 rocksdb_transactiondb_t* txn_db, const rocksdb_writeoptions_t* options, 1626 rocksdb_column_family_handle_t* column_family, const char* key, size_t klen, 1627 const char* val, size_t vlen, char** errptr); 1628 1629 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_delete( 1630 rocksdb_transaction_t* txn, const char* key, size_t klen, char** errptr); 1631 1632 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_delete_cf( 1633 rocksdb_transaction_t* txn, rocksdb_column_family_handle_t* column_family, 1634 const char* key, size_t klen, char** errptr); 1635 1636 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_delete( 1637 rocksdb_transactiondb_t* txn_db, const rocksdb_writeoptions_t* options, 1638 const char* key, size_t klen, char** errptr); 1639 1640 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_delete_cf( 1641 rocksdb_transactiondb_t* txn_db, const rocksdb_writeoptions_t* options, 1642 rocksdb_column_family_handle_t* column_family, const char* key, 1643 size_t keylen, char** errptr); 1644 1645 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* 1646 rocksdb_transaction_create_iterator(rocksdb_transaction_t* txn, 1647 const rocksdb_readoptions_t* options); 1648 1649 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* 1650 rocksdb_transaction_create_iterator_cf( 1651 rocksdb_transaction_t* txn, const rocksdb_readoptions_t* options, 1652 rocksdb_column_family_handle_t* column_family); 1653 1654 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* 1655 rocksdb_transactiondb_create_iterator(rocksdb_transactiondb_t* txn_db, 1656 const rocksdb_readoptions_t* options); 1657 1658 extern ROCKSDB_LIBRARY_API rocksdb_iterator_t* 1659 rocksdb_transactiondb_create_iterator_cf( 1660 rocksdb_transactiondb_t* txn_db, const rocksdb_readoptions_t* options, 1661 rocksdb_column_family_handle_t* column_family); 1662 1663 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_close( 1664 rocksdb_transactiondb_t* txn_db); 1665 1666 extern ROCKSDB_LIBRARY_API rocksdb_checkpoint_t* 1667 rocksdb_transactiondb_checkpoint_object_create(rocksdb_transactiondb_t* txn_db, 1668 char** errptr); 1669 1670 extern ROCKSDB_LIBRARY_API rocksdb_optimistictransactiondb_t* 1671 rocksdb_optimistictransactiondb_open(const rocksdb_options_t* options, 1672 const char* name, char** errptr); 1673 1674 extern ROCKSDB_LIBRARY_API rocksdb_optimistictransactiondb_t* 1675 rocksdb_optimistictransactiondb_open_column_families( 1676 const rocksdb_options_t* options, const char* name, int num_column_families, 1677 const char* const* column_family_names, 1678 const rocksdb_options_t* const* column_family_options, 1679 rocksdb_column_family_handle_t** column_family_handles, char** errptr); 1680 1681 extern ROCKSDB_LIBRARY_API rocksdb_t* 1682 rocksdb_optimistictransactiondb_get_base_db( 1683 rocksdb_optimistictransactiondb_t* otxn_db); 1684 1685 extern ROCKSDB_LIBRARY_API void rocksdb_optimistictransactiondb_close_base_db( 1686 rocksdb_t* base_db); 1687 1688 extern ROCKSDB_LIBRARY_API rocksdb_transaction_t* 1689 rocksdb_optimistictransaction_begin( 1690 rocksdb_optimistictransactiondb_t* otxn_db, 1691 const rocksdb_writeoptions_t* write_options, 1692 const rocksdb_optimistictransaction_options_t* otxn_options, 1693 rocksdb_transaction_t* old_txn); 1694 1695 extern ROCKSDB_LIBRARY_API void rocksdb_optimistictransactiondb_close( 1696 rocksdb_optimistictransactiondb_t* otxn_db); 1697 1698 /* Transaction Options */ 1699 1700 extern ROCKSDB_LIBRARY_API rocksdb_transactiondb_options_t* 1701 rocksdb_transactiondb_options_create(); 1702 1703 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_options_destroy( 1704 rocksdb_transactiondb_options_t* opt); 1705 1706 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_options_set_max_num_locks( 1707 rocksdb_transactiondb_options_t* opt, int64_t max_num_locks); 1708 1709 extern ROCKSDB_LIBRARY_API void rocksdb_transactiondb_options_set_num_stripes( 1710 rocksdb_transactiondb_options_t* opt, size_t num_stripes); 1711 1712 extern ROCKSDB_LIBRARY_API void 1713 rocksdb_transactiondb_options_set_transaction_lock_timeout( 1714 rocksdb_transactiondb_options_t* opt, int64_t txn_lock_timeout); 1715 1716 extern ROCKSDB_LIBRARY_API void 1717 rocksdb_transactiondb_options_set_default_lock_timeout( 1718 rocksdb_transactiondb_options_t* opt, int64_t default_lock_timeout); 1719 1720 extern ROCKSDB_LIBRARY_API rocksdb_transaction_options_t* 1721 rocksdb_transaction_options_create(); 1722 1723 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_options_destroy( 1724 rocksdb_transaction_options_t* opt); 1725 1726 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_options_set_set_snapshot( 1727 rocksdb_transaction_options_t* opt, unsigned char v); 1728 1729 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_options_set_deadlock_detect( 1730 rocksdb_transaction_options_t* opt, unsigned char v); 1731 1732 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_options_set_lock_timeout( 1733 rocksdb_transaction_options_t* opt, int64_t lock_timeout); 1734 1735 extern ROCKSDB_LIBRARY_API void rocksdb_transaction_options_set_expiration( 1736 rocksdb_transaction_options_t* opt, int64_t expiration); 1737 1738 extern ROCKSDB_LIBRARY_API void 1739 rocksdb_transaction_options_set_deadlock_detect_depth( 1740 rocksdb_transaction_options_t* opt, int64_t depth); 1741 1742 extern ROCKSDB_LIBRARY_API void 1743 rocksdb_transaction_options_set_max_write_batch_size( 1744 rocksdb_transaction_options_t* opt, size_t size); 1745 1746 extern ROCKSDB_LIBRARY_API rocksdb_optimistictransaction_options_t* 1747 rocksdb_optimistictransaction_options_create(); 1748 1749 extern ROCKSDB_LIBRARY_API void rocksdb_optimistictransaction_options_destroy( 1750 rocksdb_optimistictransaction_options_t* opt); 1751 1752 extern ROCKSDB_LIBRARY_API void 1753 rocksdb_optimistictransaction_options_set_set_snapshot( 1754 rocksdb_optimistictransaction_options_t* opt, unsigned char v); 1755 1756 // referring to convention (3), this should be used by client 1757 // to free memory that was malloc()ed 1758 extern ROCKSDB_LIBRARY_API void rocksdb_free(void* ptr); 1759 1760 extern ROCKSDB_LIBRARY_API rocksdb_pinnableslice_t* rocksdb_get_pinned( 1761 rocksdb_t* db, const rocksdb_readoptions_t* options, const char* key, 1762 size_t keylen, char** errptr); 1763 extern ROCKSDB_LIBRARY_API rocksdb_pinnableslice_t* rocksdb_get_pinned_cf( 1764 rocksdb_t* db, const rocksdb_readoptions_t* options, 1765 rocksdb_column_family_handle_t* column_family, const char* key, 1766 size_t keylen, char** errptr); 1767 extern ROCKSDB_LIBRARY_API void rocksdb_pinnableslice_destroy( 1768 rocksdb_pinnableslice_t* v); 1769 extern ROCKSDB_LIBRARY_API const char* rocksdb_pinnableslice_value( 1770 const rocksdb_pinnableslice_t* t, size_t* vlen); 1771 1772 extern ROCKSDB_LIBRARY_API rocksdb_memory_consumers_t* 1773 rocksdb_memory_consumers_create(); 1774 extern ROCKSDB_LIBRARY_API void rocksdb_memory_consumers_add_db( 1775 rocksdb_memory_consumers_t* consumers, rocksdb_t* db); 1776 extern ROCKSDB_LIBRARY_API void rocksdb_memory_consumers_add_cache( 1777 rocksdb_memory_consumers_t* consumers, rocksdb_cache_t* cache); 1778 extern ROCKSDB_LIBRARY_API void rocksdb_memory_consumers_destroy( 1779 rocksdb_memory_consumers_t* consumers); 1780 extern ROCKSDB_LIBRARY_API rocksdb_memory_usage_t* 1781 rocksdb_approximate_memory_usage_create(rocksdb_memory_consumers_t* consumers, 1782 char** errptr); 1783 extern ROCKSDB_LIBRARY_API void rocksdb_approximate_memory_usage_destroy( 1784 rocksdb_memory_usage_t* usage); 1785 1786 extern ROCKSDB_LIBRARY_API uint64_t 1787 rocksdb_approximate_memory_usage_get_mem_table_total( 1788 rocksdb_memory_usage_t* memory_usage); 1789 extern ROCKSDB_LIBRARY_API uint64_t 1790 rocksdb_approximate_memory_usage_get_mem_table_unflushed( 1791 rocksdb_memory_usage_t* memory_usage); 1792 extern ROCKSDB_LIBRARY_API uint64_t 1793 rocksdb_approximate_memory_usage_get_mem_table_readers_total( 1794 rocksdb_memory_usage_t* memory_usage); 1795 extern ROCKSDB_LIBRARY_API uint64_t 1796 rocksdb_approximate_memory_usage_get_cache_total( 1797 rocksdb_memory_usage_t* memory_usage); 1798 1799 #ifdef __cplusplus 1800 } /* end extern "C" */ 1801 #endif 1802