rocksdb-native 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1951) hide show
  1. package/.clang-format +15 -0
  2. package/.github/workflows/test-node.yml +23 -0
  3. package/.gitmodules +4 -0
  4. package/CMakeLists.txt +33 -0
  5. package/LICENSE +201 -0
  6. package/NOTICE +13 -0
  7. package/README.md +15 -0
  8. package/binding.c +470 -0
  9. package/binding.js +1 -0
  10. package/index.js +276 -0
  11. package/package.json +19 -0
  12. package/vendor/rocksdb/.circleci/config.yml +892 -0
  13. package/vendor/rocksdb/.circleci/ubsan_suppression_list.txt +6 -0
  14. package/vendor/rocksdb/.clang-format +5 -0
  15. package/vendor/rocksdb/.github/workflows/sanity_check.yml +47 -0
  16. package/vendor/rocksdb/.lgtm.yml +4 -0
  17. package/vendor/rocksdb/AUTHORS +12 -0
  18. package/vendor/rocksdb/CMakeLists.txt +1591 -0
  19. package/vendor/rocksdb/CODE_OF_CONDUCT.md +77 -0
  20. package/vendor/rocksdb/CONTRIBUTING.md +17 -0
  21. package/vendor/rocksdb/COPYING +339 -0
  22. package/vendor/rocksdb/DEFAULT_OPTIONS_HISTORY.md +24 -0
  23. package/vendor/rocksdb/DUMP_FORMAT.md +16 -0
  24. package/vendor/rocksdb/HISTORY.md +2399 -0
  25. package/vendor/rocksdb/INSTALL.md +220 -0
  26. package/vendor/rocksdb/LANGUAGE-BINDINGS.md +26 -0
  27. package/vendor/rocksdb/LICENSE.Apache +202 -0
  28. package/vendor/rocksdb/LICENSE.leveldb +29 -0
  29. package/vendor/rocksdb/Makefile +2579 -0
  30. package/vendor/rocksdb/PLUGINS.md +8 -0
  31. package/vendor/rocksdb/README.md +29 -0
  32. package/vendor/rocksdb/TARGETS +5599 -0
  33. package/vendor/rocksdb/USERS.md +165 -0
  34. package/vendor/rocksdb/Vagrantfile +39 -0
  35. package/vendor/rocksdb/WINDOWS_PORT.md +228 -0
  36. package/vendor/rocksdb/buckifier/bench-slow.json +6163 -0
  37. package/vendor/rocksdb/buckifier/bench.json +1594 -0
  38. package/vendor/rocksdb/buckifier/buckify_rocksdb.py +333 -0
  39. package/vendor/rocksdb/buckifier/check_buck_targets.sh +32 -0
  40. package/vendor/rocksdb/buckifier/rocks_test_runner.sh +6 -0
  41. package/vendor/rocksdb/buckifier/targets_builder.py +150 -0
  42. package/vendor/rocksdb/buckifier/targets_cfg.py +41 -0
  43. package/vendor/rocksdb/buckifier/util.py +118 -0
  44. package/vendor/rocksdb/build_tools/amalgamate.py +168 -0
  45. package/vendor/rocksdb/build_tools/benchmark_log_tool.py +238 -0
  46. package/vendor/rocksdb/build_tools/build_detect_platform +804 -0
  47. package/vendor/rocksdb/build_tools/check-sources.sh +48 -0
  48. package/vendor/rocksdb/build_tools/dependencies_platform010.sh +22 -0
  49. package/vendor/rocksdb/build_tools/dockerbuild.sh +3 -0
  50. package/vendor/rocksdb/build_tools/error_filter.py +181 -0
  51. package/vendor/rocksdb/build_tools/fb_compile_mongo.sh +55 -0
  52. package/vendor/rocksdb/build_tools/fbcode_config.sh +175 -0
  53. package/vendor/rocksdb/build_tools/fbcode_config_platform010.sh +175 -0
  54. package/vendor/rocksdb/build_tools/format-diff.sh +203 -0
  55. package/vendor/rocksdb/build_tools/gnu_parallel +7971 -0
  56. package/vendor/rocksdb/build_tools/make_package.sh +129 -0
  57. package/vendor/rocksdb/build_tools/ps_with_stack +38 -0
  58. package/vendor/rocksdb/build_tools/regression_build_test.sh +396 -0
  59. package/vendor/rocksdb/build_tools/run_ci_db_test.ps1 +493 -0
  60. package/vendor/rocksdb/build_tools/setup_centos7.sh +45 -0
  61. package/vendor/rocksdb/build_tools/ubuntu20_image/Dockerfile +57 -0
  62. package/vendor/rocksdb/build_tools/update_dependencies.sh +106 -0
  63. package/vendor/rocksdb/build_tools/version.sh +23 -0
  64. package/vendor/rocksdb/cache/cache.cc +158 -0
  65. package/vendor/rocksdb/cache/cache_bench.cc +20 -0
  66. package/vendor/rocksdb/cache/cache_bench_tool.cc +969 -0
  67. package/vendor/rocksdb/cache/cache_entry_roles.cc +104 -0
  68. package/vendor/rocksdb/cache/cache_entry_roles.h +20 -0
  69. package/vendor/rocksdb/cache/cache_entry_stats.h +182 -0
  70. package/vendor/rocksdb/cache/cache_helpers.cc +40 -0
  71. package/vendor/rocksdb/cache/cache_helpers.h +139 -0
  72. package/vendor/rocksdb/cache/cache_key.cc +364 -0
  73. package/vendor/rocksdb/cache/cache_key.h +143 -0
  74. package/vendor/rocksdb/cache/cache_reservation_manager.cc +184 -0
  75. package/vendor/rocksdb/cache/cache_reservation_manager.h +317 -0
  76. package/vendor/rocksdb/cache/cache_reservation_manager_test.cc +469 -0
  77. package/vendor/rocksdb/cache/cache_test.cc +1061 -0
  78. package/vendor/rocksdb/cache/charged_cache.cc +109 -0
  79. package/vendor/rocksdb/cache/charged_cache.h +59 -0
  80. package/vendor/rocksdb/cache/clock_cache.cc +1482 -0
  81. package/vendor/rocksdb/cache/clock_cache.h +707 -0
  82. package/vendor/rocksdb/cache/compressed_secondary_cache.cc +304 -0
  83. package/vendor/rocksdb/cache/compressed_secondary_cache.h +132 -0
  84. package/vendor/rocksdb/cache/compressed_secondary_cache_test.cc +983 -0
  85. package/vendor/rocksdb/cache/lru_cache.cc +723 -0
  86. package/vendor/rocksdb/cache/lru_cache.h +467 -0
  87. package/vendor/rocksdb/cache/lru_cache_test.cc +2559 -0
  88. package/vendor/rocksdb/cache/secondary_cache.cc +44 -0
  89. package/vendor/rocksdb/cache/secondary_cache_adapter.cc +295 -0
  90. package/vendor/rocksdb/cache/secondary_cache_adapter.h +52 -0
  91. package/vendor/rocksdb/cache/sharded_cache.cc +137 -0
  92. package/vendor/rocksdb/cache/sharded_cache.h +309 -0
  93. package/vendor/rocksdb/cache/typed_cache.h +375 -0
  94. package/vendor/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  95. package/vendor/rocksdb/common.mk +30 -0
  96. package/vendor/rocksdb/crash_test.mk +107 -0
  97. package/vendor/rocksdb/db/arena_wrapped_db_iter.cc +163 -0
  98. package/vendor/rocksdb/db/arena_wrapped_db_iter.h +127 -0
  99. package/vendor/rocksdb/db/blob/blob_constants.h +16 -0
  100. package/vendor/rocksdb/db/blob/blob_contents.cc +42 -0
  101. package/vendor/rocksdb/db/blob/blob_contents.h +59 -0
  102. package/vendor/rocksdb/db/blob/blob_counting_iterator.h +150 -0
  103. package/vendor/rocksdb/db/blob/blob_counting_iterator_test.cc +327 -0
  104. package/vendor/rocksdb/db/blob/blob_fetcher.cc +34 -0
  105. package/vendor/rocksdb/db/blob/blob_fetcher.h +37 -0
  106. package/vendor/rocksdb/db/blob/blob_file_addition.cc +156 -0
  107. package/vendor/rocksdb/db/blob/blob_file_addition.h +67 -0
  108. package/vendor/rocksdb/db/blob/blob_file_addition_test.cc +211 -0
  109. package/vendor/rocksdb/db/blob/blob_file_builder.cc +426 -0
  110. package/vendor/rocksdb/db/blob/blob_file_builder.h +112 -0
  111. package/vendor/rocksdb/db/blob/blob_file_builder_test.cc +680 -0
  112. package/vendor/rocksdb/db/blob/blob_file_cache.cc +101 -0
  113. package/vendor/rocksdb/db/blob/blob_file_cache.h +56 -0
  114. package/vendor/rocksdb/db/blob/blob_file_cache_test.cc +278 -0
  115. package/vendor/rocksdb/db/blob/blob_file_completion_callback.h +84 -0
  116. package/vendor/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  117. package/vendor/rocksdb/db/blob/blob_file_garbage.h +57 -0
  118. package/vendor/rocksdb/db/blob/blob_file_garbage_test.cc +174 -0
  119. package/vendor/rocksdb/db/blob/blob_file_meta.cc +62 -0
  120. package/vendor/rocksdb/db/blob/blob_file_meta.h +170 -0
  121. package/vendor/rocksdb/db/blob/blob_file_reader.cc +624 -0
  122. package/vendor/rocksdb/db/blob/blob_file_reader.h +112 -0
  123. package/vendor/rocksdb/db/blob/blob_file_reader_test.cc +1023 -0
  124. package/vendor/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  125. package/vendor/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  126. package/vendor/rocksdb/db/blob/blob_garbage_meter_test.cc +197 -0
  127. package/vendor/rocksdb/db/blob/blob_index.h +187 -0
  128. package/vendor/rocksdb/db/blob/blob_log_format.cc +143 -0
  129. package/vendor/rocksdb/db/blob/blob_log_format.h +164 -0
  130. package/vendor/rocksdb/db/blob/blob_log_sequential_reader.cc +134 -0
  131. package/vendor/rocksdb/db/blob/blob_log_sequential_reader.h +83 -0
  132. package/vendor/rocksdb/db/blob/blob_log_writer.cc +178 -0
  133. package/vendor/rocksdb/db/blob/blob_log_writer.h +83 -0
  134. package/vendor/rocksdb/db/blob/blob_read_request.h +58 -0
  135. package/vendor/rocksdb/db/blob/blob_source.cc +459 -0
  136. package/vendor/rocksdb/db/blob/blob_source.h +161 -0
  137. package/vendor/rocksdb/db/blob/blob_source_test.cc +1611 -0
  138. package/vendor/rocksdb/db/blob/db_blob_basic_test.cc +2237 -0
  139. package/vendor/rocksdb/db/blob/db_blob_compaction_test.cc +899 -0
  140. package/vendor/rocksdb/db/blob/db_blob_corruption_test.cc +80 -0
  141. package/vendor/rocksdb/db/blob/db_blob_index_test.cc +596 -0
  142. package/vendor/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  143. package/vendor/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  144. package/vendor/rocksdb/db/builder.cc +447 -0
  145. package/vendor/rocksdb/db/builder.h +78 -0
  146. package/vendor/rocksdb/db/c.cc +6559 -0
  147. package/vendor/rocksdb/db/c_test.c +3609 -0
  148. package/vendor/rocksdb/db/column_family.cc +1708 -0
  149. package/vendor/rocksdb/db/column_family.h +851 -0
  150. package/vendor/rocksdb/db/column_family_test.cc +3382 -0
  151. package/vendor/rocksdb/db/compact_files_test.cc +492 -0
  152. package/vendor/rocksdb/db/compaction/clipping_iterator.h +281 -0
  153. package/vendor/rocksdb/db/compaction/clipping_iterator_test.cc +259 -0
  154. package/vendor/rocksdb/db/compaction/compaction.cc +857 -0
  155. package/vendor/rocksdb/db/compaction/compaction.h +565 -0
  156. package/vendor/rocksdb/db/compaction/compaction_iteration_stats.h +49 -0
  157. package/vendor/rocksdb/db/compaction/compaction_iterator.cc +1445 -0
  158. package/vendor/rocksdb/db/compaction/compaction_iterator.h +530 -0
  159. package/vendor/rocksdb/db/compaction/compaction_iterator_test.cc +1618 -0
  160. package/vendor/rocksdb/db/compaction/compaction_job.cc +2054 -0
  161. package/vendor/rocksdb/db/compaction/compaction_job.h +504 -0
  162. package/vendor/rocksdb/db/compaction/compaction_job_stats_test.cc +965 -0
  163. package/vendor/rocksdb/db/compaction/compaction_job_test.cc +2444 -0
  164. package/vendor/rocksdb/db/compaction/compaction_outputs.cc +784 -0
  165. package/vendor/rocksdb/db/compaction/compaction_outputs.h +403 -0
  166. package/vendor/rocksdb/db/compaction/compaction_picker.cc +1225 -0
  167. package/vendor/rocksdb/db/compaction/compaction_picker.h +318 -0
  168. package/vendor/rocksdb/db/compaction/compaction_picker_fifo.cc +471 -0
  169. package/vendor/rocksdb/db/compaction/compaction_picker_fifo.h +60 -0
  170. package/vendor/rocksdb/db/compaction/compaction_picker_level.cc +888 -0
  171. package/vendor/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  172. package/vendor/rocksdb/db/compaction/compaction_picker_test.cc +4074 -0
  173. package/vendor/rocksdb/db/compaction/compaction_picker_universal.cc +1452 -0
  174. package/vendor/rocksdb/db/compaction/compaction_picker_universal.h +30 -0
  175. package/vendor/rocksdb/db/compaction/compaction_service_job.cc +833 -0
  176. package/vendor/rocksdb/db/compaction/compaction_service_test.cc +954 -0
  177. package/vendor/rocksdb/db/compaction/compaction_state.cc +46 -0
  178. package/vendor/rocksdb/db/compaction/compaction_state.h +42 -0
  179. package/vendor/rocksdb/db/compaction/file_pri.h +92 -0
  180. package/vendor/rocksdb/db/compaction/sst_partitioner.cc +83 -0
  181. package/vendor/rocksdb/db/compaction/subcompaction_state.cc +106 -0
  182. package/vendor/rocksdb/db/compaction/subcompaction_state.h +220 -0
  183. package/vendor/rocksdb/db/compaction/tiered_compaction_test.cc +2149 -0
  184. package/vendor/rocksdb/db/comparator_db_test.cc +678 -0
  185. package/vendor/rocksdb/db/convenience.cc +81 -0
  186. package/vendor/rocksdb/db/corruption_test.cc +1670 -0
  187. package/vendor/rocksdb/db/cuckoo_table_db_test.cc +351 -0
  188. package/vendor/rocksdb/db/db_basic_test.cc +4777 -0
  189. package/vendor/rocksdb/db/db_block_cache_test.cc +1972 -0
  190. package/vendor/rocksdb/db/db_bloom_filter_test.cc +3513 -0
  191. package/vendor/rocksdb/db/db_clip_test.cc +142 -0
  192. package/vendor/rocksdb/db/db_compaction_filter_test.cc +1030 -0
  193. package/vendor/rocksdb/db/db_compaction_test.cc +9424 -0
  194. package/vendor/rocksdb/db/db_dynamic_level_test.cc +499 -0
  195. package/vendor/rocksdb/db/db_encryption_test.cc +126 -0
  196. package/vendor/rocksdb/db/db_filesnapshot.cc +436 -0
  197. package/vendor/rocksdb/db/db_flush_test.cc +3202 -0
  198. package/vendor/rocksdb/db/db_impl/compacted_db_impl.cc +260 -0
  199. package/vendor/rocksdb/db/db_impl/compacted_db_impl.h +157 -0
  200. package/vendor/rocksdb/db/db_impl/db_impl.cc +6132 -0
  201. package/vendor/rocksdb/db/db_impl/db_impl.h +2841 -0
  202. package/vendor/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3980 -0
  203. package/vendor/rocksdb/db/db_impl/db_impl_debug.cc +314 -0
  204. package/vendor/rocksdb/db/db_impl/db_impl_experimental.cc +159 -0
  205. package/vendor/rocksdb/db/db_impl/db_impl_files.cc +1014 -0
  206. package/vendor/rocksdb/db/db_impl/db_impl_open.cc +2202 -0
  207. package/vendor/rocksdb/db/db_impl/db_impl_readonly.cc +334 -0
  208. package/vendor/rocksdb/db/db_impl/db_impl_readonly.h +173 -0
  209. package/vendor/rocksdb/db/db_impl/db_impl_secondary.cc +964 -0
  210. package/vendor/rocksdb/db/db_impl/db_impl_secondary.h +406 -0
  211. package/vendor/rocksdb/db/db_impl/db_impl_write.cc +2487 -0
  212. package/vendor/rocksdb/db/db_info_dumper.cc +147 -0
  213. package/vendor/rocksdb/db/db_info_dumper.h +15 -0
  214. package/vendor/rocksdb/db/db_inplace_update_test.cc +262 -0
  215. package/vendor/rocksdb/db/db_io_failure_test.cc +589 -0
  216. package/vendor/rocksdb/db/db_iter.cc +1708 -0
  217. package/vendor/rocksdb/db/db_iter.h +411 -0
  218. package/vendor/rocksdb/db/db_iter_stress_test.cc +658 -0
  219. package/vendor/rocksdb/db/db_iter_test.cc +3195 -0
  220. package/vendor/rocksdb/db/db_iterator_test.cc +3304 -0
  221. package/vendor/rocksdb/db/db_kv_checksum_test.cc +885 -0
  222. package/vendor/rocksdb/db/db_log_iter_test.cc +297 -0
  223. package/vendor/rocksdb/db/db_logical_block_size_cache_test.cc +505 -0
  224. package/vendor/rocksdb/db/db_memtable_test.cc +344 -0
  225. package/vendor/rocksdb/db/db_merge_operand_test.cc +488 -0
  226. package/vendor/rocksdb/db/db_merge_operator_test.cc +866 -0
  227. package/vendor/rocksdb/db/db_options_test.cc +1330 -0
  228. package/vendor/rocksdb/db/db_properties_test.cc +2377 -0
  229. package/vendor/rocksdb/db/db_range_del_test.cc +3414 -0
  230. package/vendor/rocksdb/db/db_rate_limiter_test.cc +437 -0
  231. package/vendor/rocksdb/db/db_readonly_with_timestamp_test.cc +956 -0
  232. package/vendor/rocksdb/db/db_secondary_test.cc +1691 -0
  233. package/vendor/rocksdb/db/db_sst_test.cc +1865 -0
  234. package/vendor/rocksdb/db/db_statistics_test.cc +292 -0
  235. package/vendor/rocksdb/db/db_table_properties_test.cc +623 -0
  236. package/vendor/rocksdb/db/db_tailing_iter_test.cc +595 -0
  237. package/vendor/rocksdb/db/db_test.cc +7359 -0
  238. package/vendor/rocksdb/db/db_test2.cc +7679 -0
  239. package/vendor/rocksdb/db/db_test_util.cc +1759 -0
  240. package/vendor/rocksdb/db/db_test_util.h +1340 -0
  241. package/vendor/rocksdb/db/db_universal_compaction_test.cc +2227 -0
  242. package/vendor/rocksdb/db/db_wal_test.cc +2433 -0
  243. package/vendor/rocksdb/db/db_with_timestamp_basic_test.cc +4016 -0
  244. package/vendor/rocksdb/db/db_with_timestamp_compaction_test.cc +353 -0
  245. package/vendor/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  246. package/vendor/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  247. package/vendor/rocksdb/db/db_write_buffer_manager_test.cc +927 -0
  248. package/vendor/rocksdb/db/db_write_test.cc +795 -0
  249. package/vendor/rocksdb/db/dbformat.cc +213 -0
  250. package/vendor/rocksdb/db/dbformat.h +869 -0
  251. package/vendor/rocksdb/db/dbformat_test.cc +214 -0
  252. package/vendor/rocksdb/db/deletefile_test.cc +603 -0
  253. package/vendor/rocksdb/db/error_handler.cc +792 -0
  254. package/vendor/rocksdb/db/error_handler.h +124 -0
  255. package/vendor/rocksdb/db/error_handler_fs_test.cc +2862 -0
  256. package/vendor/rocksdb/db/event_helpers.cc +323 -0
  257. package/vendor/rocksdb/db/event_helpers.h +78 -0
  258. package/vendor/rocksdb/db/experimental.cc +144 -0
  259. package/vendor/rocksdb/db/external_sst_file_basic_test.cc +2084 -0
  260. package/vendor/rocksdb/db/external_sst_file_ingestion_job.cc +1104 -0
  261. package/vendor/rocksdb/db/external_sst_file_ingestion_job.h +238 -0
  262. package/vendor/rocksdb/db/external_sst_file_test.cc +2859 -0
  263. package/vendor/rocksdb/db/fault_injection_test.cc +637 -0
  264. package/vendor/rocksdb/db/file_indexer.cc +218 -0
  265. package/vendor/rocksdb/db/file_indexer.h +140 -0
  266. package/vendor/rocksdb/db/file_indexer_test.cc +352 -0
  267. package/vendor/rocksdb/db/filename_test.cc +241 -0
  268. package/vendor/rocksdb/db/flush_job.cc +1097 -0
  269. package/vendor/rocksdb/db/flush_job.h +200 -0
  270. package/vendor/rocksdb/db/flush_job_test.cc +743 -0
  271. package/vendor/rocksdb/db/flush_scheduler.cc +86 -0
  272. package/vendor/rocksdb/db/flush_scheduler.h +55 -0
  273. package/vendor/rocksdb/db/forward_iterator.cc +1070 -0
  274. package/vendor/rocksdb/db/forward_iterator.h +166 -0
  275. package/vendor/rocksdb/db/forward_iterator_bench.cc +378 -0
  276. package/vendor/rocksdb/db/history_trimming_iterator.h +95 -0
  277. package/vendor/rocksdb/db/import_column_family_job.cc +364 -0
  278. package/vendor/rocksdb/db/import_column_family_job.h +82 -0
  279. package/vendor/rocksdb/db/import_column_family_test.cc +748 -0
  280. package/vendor/rocksdb/db/internal_stats.cc +2121 -0
  281. package/vendor/rocksdb/db/internal_stats.h +875 -0
  282. package/vendor/rocksdb/db/job_context.h +237 -0
  283. package/vendor/rocksdb/db/kv_checksum.h +484 -0
  284. package/vendor/rocksdb/db/listener_test.cc +1598 -0
  285. package/vendor/rocksdb/db/log_format.h +55 -0
  286. package/vendor/rocksdb/db/log_reader.cc +934 -0
  287. package/vendor/rocksdb/db/log_reader.h +241 -0
  288. package/vendor/rocksdb/db/log_test.cc +1216 -0
  289. package/vendor/rocksdb/db/log_writer.cc +279 -0
  290. package/vendor/rocksdb/db/log_writer.h +144 -0
  291. package/vendor/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  292. package/vendor/rocksdb/db/logs_with_prep_tracker.h +62 -0
  293. package/vendor/rocksdb/db/lookup_key.h +68 -0
  294. package/vendor/rocksdb/db/malloc_stats.cc +53 -0
  295. package/vendor/rocksdb/db/malloc_stats.h +22 -0
  296. package/vendor/rocksdb/db/manual_compaction_test.cc +308 -0
  297. package/vendor/rocksdb/db/memtable.cc +1675 -0
  298. package/vendor/rocksdb/db/memtable.h +660 -0
  299. package/vendor/rocksdb/db/memtable_list.cc +987 -0
  300. package/vendor/rocksdb/db/memtable_list.h +471 -0
  301. package/vendor/rocksdb/db/memtable_list_test.cc +1037 -0
  302. package/vendor/rocksdb/db/merge_context.h +147 -0
  303. package/vendor/rocksdb/db/merge_helper.cc +606 -0
  304. package/vendor/rocksdb/db/merge_helper.h +224 -0
  305. package/vendor/rocksdb/db/merge_helper_test.cc +298 -0
  306. package/vendor/rocksdb/db/merge_operator.cc +85 -0
  307. package/vendor/rocksdb/db/merge_test.cc +621 -0
  308. package/vendor/rocksdb/db/obsolete_files_test.cc +317 -0
  309. package/vendor/rocksdb/db/options_file_test.cc +110 -0
  310. package/vendor/rocksdb/db/output_validator.cc +33 -0
  311. package/vendor/rocksdb/db/output_validator.h +48 -0
  312. package/vendor/rocksdb/db/perf_context_test.cc +1158 -0
  313. package/vendor/rocksdb/db/periodic_task_scheduler.cc +111 -0
  314. package/vendor/rocksdb/db/periodic_task_scheduler.h +108 -0
  315. package/vendor/rocksdb/db/periodic_task_scheduler_test.cc +229 -0
  316. package/vendor/rocksdb/db/pinned_iterators_manager.h +92 -0
  317. package/vendor/rocksdb/db/plain_table_db_test.cc +1348 -0
  318. package/vendor/rocksdb/db/post_memtable_callback.h +25 -0
  319. package/vendor/rocksdb/db/pre_release_callback.h +37 -0
  320. package/vendor/rocksdb/db/prefix_test.cc +894 -0
  321. package/vendor/rocksdb/db/range_del_aggregator.cc +555 -0
  322. package/vendor/rocksdb/db/range_del_aggregator.h +478 -0
  323. package/vendor/rocksdb/db/range_del_aggregator_bench.cc +280 -0
  324. package/vendor/rocksdb/db/range_del_aggregator_test.cc +713 -0
  325. package/vendor/rocksdb/db/range_tombstone_fragmenter.cc +502 -0
  326. package/vendor/rocksdb/db/range_tombstone_fragmenter.h +356 -0
  327. package/vendor/rocksdb/db/range_tombstone_fragmenter_test.cc +555 -0
  328. package/vendor/rocksdb/db/read_callback.h +54 -0
  329. package/vendor/rocksdb/db/repair.cc +839 -0
  330. package/vendor/rocksdb/db/repair_test.cc +484 -0
  331. package/vendor/rocksdb/db/seqno_time_test.cc +994 -0
  332. package/vendor/rocksdb/db/seqno_to_time_mapping.cc +341 -0
  333. package/vendor/rocksdb/db/seqno_to_time_mapping.h +189 -0
  334. package/vendor/rocksdb/db/snapshot_checker.h +58 -0
  335. package/vendor/rocksdb/db/snapshot_impl.cc +25 -0
  336. package/vendor/rocksdb/db/snapshot_impl.h +239 -0
  337. package/vendor/rocksdb/db/table_cache.cc +710 -0
  338. package/vendor/rocksdb/db/table_cache.h +283 -0
  339. package/vendor/rocksdb/db/table_cache_sync_and_async.h +130 -0
  340. package/vendor/rocksdb/db/table_properties_collector.cc +74 -0
  341. package/vendor/rocksdb/db/table_properties_collector.h +177 -0
  342. package/vendor/rocksdb/db/table_properties_collector_test.cc +512 -0
  343. package/vendor/rocksdb/db/transaction_log_impl.cc +296 -0
  344. package/vendor/rocksdb/db/transaction_log_impl.h +128 -0
  345. package/vendor/rocksdb/db/trim_history_scheduler.cc +54 -0
  346. package/vendor/rocksdb/db/trim_history_scheduler.h +46 -0
  347. package/vendor/rocksdb/db/version_builder.cc +1426 -0
  348. package/vendor/rocksdb/db/version_builder.h +93 -0
  349. package/vendor/rocksdb/db/version_builder_test.cc +1840 -0
  350. package/vendor/rocksdb/db/version_edit.cc +1059 -0
  351. package/vendor/rocksdb/db/version_edit.h +702 -0
  352. package/vendor/rocksdb/db/version_edit_handler.cc +1017 -0
  353. package/vendor/rocksdb/db/version_edit_handler.h +334 -0
  354. package/vendor/rocksdb/db/version_edit_test.cc +732 -0
  355. package/vendor/rocksdb/db/version_set.cc +7286 -0
  356. package/vendor/rocksdb/db/version_set.h +1714 -0
  357. package/vendor/rocksdb/db/version_set_sync_and_async.h +172 -0
  358. package/vendor/rocksdb/db/version_set_test.cc +3659 -0
  359. package/vendor/rocksdb/db/version_util.h +72 -0
  360. package/vendor/rocksdb/db/wal_edit.cc +211 -0
  361. package/vendor/rocksdb/db/wal_edit.h +177 -0
  362. package/vendor/rocksdb/db/wal_edit_test.cc +213 -0
  363. package/vendor/rocksdb/db/wal_manager.cc +527 -0
  364. package/vendor/rocksdb/db/wal_manager.h +136 -0
  365. package/vendor/rocksdb/db/wal_manager_test.cc +336 -0
  366. package/vendor/rocksdb/db/wide/db_wide_basic_test.cc +1042 -0
  367. package/vendor/rocksdb/db/wide/wide_column_serialization.cc +182 -0
  368. package/vendor/rocksdb/db/wide/wide_column_serialization.h +77 -0
  369. package/vendor/rocksdb/db/wide/wide_column_serialization_test.cc +338 -0
  370. package/vendor/rocksdb/db/wide/wide_columns.cc +22 -0
  371. package/vendor/rocksdb/db/write_batch.cc +3142 -0
  372. package/vendor/rocksdb/db/write_batch_base.cc +94 -0
  373. package/vendor/rocksdb/db/write_batch_internal.h +401 -0
  374. package/vendor/rocksdb/db/write_batch_test.cc +1112 -0
  375. package/vendor/rocksdb/db/write_callback.h +27 -0
  376. package/vendor/rocksdb/db/write_callback_test.cc +454 -0
  377. package/vendor/rocksdb/db/write_controller.cc +121 -0
  378. package/vendor/rocksdb/db/write_controller.h +148 -0
  379. package/vendor/rocksdb/db/write_controller_test.cc +248 -0
  380. package/vendor/rocksdb/db/write_stall_stats.cc +179 -0
  381. package/vendor/rocksdb/db/write_stall_stats.h +47 -0
  382. package/vendor/rocksdb/db/write_thread.cc +844 -0
  383. package/vendor/rocksdb/db/write_thread.h +464 -0
  384. package/vendor/rocksdb/db_stress_tool/CMakeLists.txt +18 -0
  385. package/vendor/rocksdb/db_stress_tool/batched_ops_stress.cc +593 -0
  386. package/vendor/rocksdb/db_stress_tool/cf_consistency_stress.cc +892 -0
  387. package/vendor/rocksdb/db_stress_tool/db_stress.cc +25 -0
  388. package/vendor/rocksdb/db_stress_tool/db_stress_common.cc +491 -0
  389. package/vendor/rocksdb/db_stress_tool/db_stress_common.h +674 -0
  390. package/vendor/rocksdb/db_stress_tool/db_stress_compaction_filter.h +96 -0
  391. package/vendor/rocksdb/db_stress_tool/db_stress_driver.cc +216 -0
  392. package/vendor/rocksdb/db_stress_tool/db_stress_driver.h +18 -0
  393. package/vendor/rocksdb/db_stress_tool/db_stress_env_wrapper.h +78 -0
  394. package/vendor/rocksdb/db_stress_tool/db_stress_gflags.cc +1094 -0
  395. package/vendor/rocksdb/db_stress_tool/db_stress_listener.cc +189 -0
  396. package/vendor/rocksdb/db_stress_tool/db_stress_listener.h +269 -0
  397. package/vendor/rocksdb/db_stress_tool/db_stress_shared_state.cc +17 -0
  398. package/vendor/rocksdb/db_stress_tool/db_stress_shared_state.h +437 -0
  399. package/vendor/rocksdb/db_stress_tool/db_stress_stat.cc +17 -0
  400. package/vendor/rocksdb/db_stress_tool/db_stress_stat.h +219 -0
  401. package/vendor/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +65 -0
  402. package/vendor/rocksdb/db_stress_tool/db_stress_test_base.cc +3294 -0
  403. package/vendor/rocksdb/db_stress_tool/db_stress_test_base.h +327 -0
  404. package/vendor/rocksdb/db_stress_tool/db_stress_tool.cc +371 -0
  405. package/vendor/rocksdb/db_stress_tool/expected_state.cc +780 -0
  406. package/vendor/rocksdb/db_stress_tool/expected_state.h +329 -0
  407. package/vendor/rocksdb/db_stress_tool/expected_value.cc +122 -0
  408. package/vendor/rocksdb/db_stress_tool/expected_value.h +206 -0
  409. package/vendor/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1761 -0
  410. package/vendor/rocksdb/db_stress_tool/multi_ops_txns_stress.h +446 -0
  411. package/vendor/rocksdb/db_stress_tool/no_batched_ops_stress.cc +1906 -0
  412. package/vendor/rocksdb/docs/CNAME +1 -0
  413. package/vendor/rocksdb/docs/CONTRIBUTING.md +115 -0
  414. package/vendor/rocksdb/docs/Gemfile +4 -0
  415. package/vendor/rocksdb/docs/LICENSE-DOCUMENTATION +385 -0
  416. package/vendor/rocksdb/docs/README.md +80 -0
  417. package/vendor/rocksdb/docs/TEMPLATE-INFORMATION.md +17 -0
  418. package/vendor/rocksdb/docs/_config.yml +85 -0
  419. package/vendor/rocksdb/docs/_data/authors.yml +81 -0
  420. package/vendor/rocksdb/docs/_data/features.yml +19 -0
  421. package/vendor/rocksdb/docs/_data/nav.yml +30 -0
  422. package/vendor/rocksdb/docs/_data/nav_docs.yml +3 -0
  423. package/vendor/rocksdb/docs/_data/powered_by.yml +1 -0
  424. package/vendor/rocksdb/docs/_data/powered_by_highlight.yml +1 -0
  425. package/vendor/rocksdb/docs/_data/promo.yml +6 -0
  426. package/vendor/rocksdb/docs/_docs/faq.md +48 -0
  427. package/vendor/rocksdb/docs/_docs/getting-started.md +78 -0
  428. package/vendor/rocksdb/docs/_includes/blog_pagination.html +28 -0
  429. package/vendor/rocksdb/docs/_includes/content/gridblocks.html +5 -0
  430. package/vendor/rocksdb/docs/_includes/content/items/gridblock.html +37 -0
  431. package/vendor/rocksdb/docs/_includes/doc.html +25 -0
  432. package/vendor/rocksdb/docs/_includes/doc_paging.html +0 -0
  433. package/vendor/rocksdb/docs/_includes/footer.html +34 -0
  434. package/vendor/rocksdb/docs/_includes/head.html +23 -0
  435. package/vendor/rocksdb/docs/_includes/header.html +19 -0
  436. package/vendor/rocksdb/docs/_includes/hero.html +0 -0
  437. package/vendor/rocksdb/docs/_includes/home_header.html +22 -0
  438. package/vendor/rocksdb/docs/_includes/katex_import.html +3 -0
  439. package/vendor/rocksdb/docs/_includes/katex_render.html +210 -0
  440. package/vendor/rocksdb/docs/_includes/nav/collection_nav.html +64 -0
  441. package/vendor/rocksdb/docs/_includes/nav/collection_nav_group.html +19 -0
  442. package/vendor/rocksdb/docs/_includes/nav/collection_nav_group_item.html +1 -0
  443. package/vendor/rocksdb/docs/_includes/nav/header_nav.html +30 -0
  444. package/vendor/rocksdb/docs/_includes/nav.html +37 -0
  445. package/vendor/rocksdb/docs/_includes/nav_search.html +15 -0
  446. package/vendor/rocksdb/docs/_includes/plugins/all_share.html +3 -0
  447. package/vendor/rocksdb/docs/_includes/plugins/ascii_cinema.html +2 -0
  448. package/vendor/rocksdb/docs/_includes/plugins/button.html +6 -0
  449. package/vendor/rocksdb/docs/_includes/plugins/github_star.html +4 -0
  450. package/vendor/rocksdb/docs/_includes/plugins/github_watch.html +4 -0
  451. package/vendor/rocksdb/docs/_includes/plugins/google_share.html +5 -0
  452. package/vendor/rocksdb/docs/_includes/plugins/iframe.html +6 -0
  453. package/vendor/rocksdb/docs/_includes/plugins/like_button.html +18 -0
  454. package/vendor/rocksdb/docs/_includes/plugins/plugin_row.html +5 -0
  455. package/vendor/rocksdb/docs/_includes/plugins/post_social_plugins.html +41 -0
  456. package/vendor/rocksdb/docs/_includes/plugins/slideshow.html +88 -0
  457. package/vendor/rocksdb/docs/_includes/plugins/twitter_follow.html +12 -0
  458. package/vendor/rocksdb/docs/_includes/plugins/twitter_share.html +11 -0
  459. package/vendor/rocksdb/docs/_includes/post.html +40 -0
  460. package/vendor/rocksdb/docs/_includes/powered_by.html +28 -0
  461. package/vendor/rocksdb/docs/_includes/social_plugins.html +31 -0
  462. package/vendor/rocksdb/docs/_includes/ui/button.html +1 -0
  463. package/vendor/rocksdb/docs/_layouts/basic.html +12 -0
  464. package/vendor/rocksdb/docs/_layouts/blog.html +11 -0
  465. package/vendor/rocksdb/docs/_layouts/blog_default.html +14 -0
  466. package/vendor/rocksdb/docs/_layouts/default.html +12 -0
  467. package/vendor/rocksdb/docs/_layouts/doc_default.html +14 -0
  468. package/vendor/rocksdb/docs/_layouts/doc_page.html +10 -0
  469. package/vendor/rocksdb/docs/_layouts/docs.html +5 -0
  470. package/vendor/rocksdb/docs/_layouts/home.html +26 -0
  471. package/vendor/rocksdb/docs/_layouts/page.html +3 -0
  472. package/vendor/rocksdb/docs/_layouts/plain.html +10 -0
  473. package/vendor/rocksdb/docs/_layouts/post.html +8 -0
  474. package/vendor/rocksdb/docs/_layouts/redirect.html +6 -0
  475. package/vendor/rocksdb/docs/_layouts/top-level.html +10 -0
  476. package/vendor/rocksdb/docs/_posts/2014-03-27-how-to-backup-rocksdb.markdown +135 -0
  477. package/vendor/rocksdb/docs/_posts/2014-03-27-how-to-persist-in-memory-rocksdb-database.markdown +54 -0
  478. package/vendor/rocksdb/docs/_posts/2014-04-02-the-1st-rocksdb-local-meetup-held-on-march-27-2014.markdown +53 -0
  479. package/vendor/rocksdb/docs/_posts/2014-04-07-rocksdb-2-8-release.markdown +40 -0
  480. package/vendor/rocksdb/docs/_posts/2014-04-21-indexing-sst-files-for-better-lookup-performance.markdown +28 -0
  481. package/vendor/rocksdb/docs/_posts/2014-05-14-lock.markdown +88 -0
  482. package/vendor/rocksdb/docs/_posts/2014-05-19-rocksdb-3-0-release.markdown +24 -0
  483. package/vendor/rocksdb/docs/_posts/2014-05-22-rocksdb-3-1-release.markdown +20 -0
  484. package/vendor/rocksdb/docs/_posts/2014-06-23-plaintable-a-new-file-format.markdown +47 -0
  485. package/vendor/rocksdb/docs/_posts/2014-06-27-avoid-expensive-locks-in-get.markdown +89 -0
  486. package/vendor/rocksdb/docs/_posts/2014-06-27-rocksdb-3-2-release.markdown +30 -0
  487. package/vendor/rocksdb/docs/_posts/2014-07-29-rocksdb-3-3-release.markdown +34 -0
  488. package/vendor/rocksdb/docs/_posts/2014-09-12-cuckoo.markdown +74 -0
  489. package/vendor/rocksdb/docs/_posts/2014-09-12-new-bloom-filter-format.markdown +52 -0
  490. package/vendor/rocksdb/docs/_posts/2014-09-15-rocksdb-3-5-release.markdown +38 -0
  491. package/vendor/rocksdb/docs/_posts/2015-01-16-migrating-from-leveldb-to-rocksdb-2.markdown +112 -0
  492. package/vendor/rocksdb/docs/_posts/2015-02-24-reading-rocksdb-options-from-a-file.markdown +41 -0
  493. package/vendor/rocksdb/docs/_posts/2015-02-27-write-batch-with-index.markdown +20 -0
  494. package/vendor/rocksdb/docs/_posts/2015-04-22-integrating-rocksdb-with-mongodb-2.markdown +16 -0
  495. package/vendor/rocksdb/docs/_posts/2015-06-12-rocksdb-in-osquery.markdown +10 -0
  496. package/vendor/rocksdb/docs/_posts/2015-07-15-rocksdb-2015-h2-roadmap.markdown +92 -0
  497. package/vendor/rocksdb/docs/_posts/2015-07-17-spatial-indexing-in-rocksdb.markdown +78 -0
  498. package/vendor/rocksdb/docs/_posts/2015-07-22-rocksdb-is-now-available-in-windows-platform.markdown +30 -0
  499. package/vendor/rocksdb/docs/_posts/2015-07-23-dynamic-level.markdown +29 -0
  500. package/vendor/rocksdb/docs/_posts/2015-10-27-getthreadlist.markdown +193 -0
  501. package/vendor/rocksdb/docs/_posts/2015-11-10-use-checkpoints-for-efficient-snapshots.markdown +45 -0
  502. package/vendor/rocksdb/docs/_posts/2015-11-16-analysis-file-read-latency-by-level.markdown +244 -0
  503. package/vendor/rocksdb/docs/_posts/2016-01-29-compaction_pri.markdown +51 -0
  504. package/vendor/rocksdb/docs/_posts/2016-02-24-rocksdb-4-2-release.markdown +41 -0
  505. package/vendor/rocksdb/docs/_posts/2016-02-25-rocksdb-ama.markdown +20 -0
  506. package/vendor/rocksdb/docs/_posts/2016-03-07-rocksdb-options-file.markdown +24 -0
  507. package/vendor/rocksdb/docs/_posts/2016-04-26-rocksdb-4-5-1-released.markdown +60 -0
  508. package/vendor/rocksdb/docs/_posts/2016-07-26-rocksdb-4-8-released.markdown +48 -0
  509. package/vendor/rocksdb/docs/_posts/2016-09-28-rocksdb-4-11-2-released.markdown +49 -0
  510. package/vendor/rocksdb/docs/_posts/2017-01-06-rocksdb-5-0-1-released.markdown +26 -0
  511. package/vendor/rocksdb/docs/_posts/2017-02-07-rocksdb-5-1-2-released.markdown +15 -0
  512. package/vendor/rocksdb/docs/_posts/2017-02-17-bulkoad-ingest-sst-file.markdown +50 -0
  513. package/vendor/rocksdb/docs/_posts/2017-03-02-rocksdb-5-2-1-released.markdown +22 -0
  514. package/vendor/rocksdb/docs/_posts/2017-05-12-partitioned-index-filter.markdown +34 -0
  515. package/vendor/rocksdb/docs/_posts/2017-05-14-core-local-stats.markdown +106 -0
  516. package/vendor/rocksdb/docs/_posts/2017-05-26-rocksdb-5-4-5-released.markdown +39 -0
  517. package/vendor/rocksdb/docs/_posts/2017-06-26-17-level-based-changes.markdown +60 -0
  518. package/vendor/rocksdb/docs/_posts/2017-06-29-rocksdb-5-5-1-released.markdown +22 -0
  519. package/vendor/rocksdb/docs/_posts/2017-07-25-rocksdb-5-6-1-released.markdown +22 -0
  520. package/vendor/rocksdb/docs/_posts/2017-08-24-pinnableslice.markdown +37 -0
  521. package/vendor/rocksdb/docs/_posts/2017-08-25-flushwal.markdown +26 -0
  522. package/vendor/rocksdb/docs/_posts/2017-09-28-rocksdb-5-8-released.markdown +25 -0
  523. package/vendor/rocksdb/docs/_posts/2017-12-18-17-auto-tuned-rate-limiter.markdown +28 -0
  524. package/vendor/rocksdb/docs/_posts/2017-12-19-write-prepared-txn.markdown +41 -0
  525. package/vendor/rocksdb/docs/_posts/2018-02-05-rocksdb-5-10-2-released.markdown +22 -0
  526. package/vendor/rocksdb/docs/_posts/2018-08-01-rocksdb-tuning-advisor.markdown +58 -0
  527. package/vendor/rocksdb/docs/_posts/2018-08-23-data-block-hash-index.markdown +118 -0
  528. package/vendor/rocksdb/docs/_posts/2018-11-21-delete-range.markdown +292 -0
  529. package/vendor/rocksdb/docs/_posts/2019-03-08-format-version-4.markdown +36 -0
  530. package/vendor/rocksdb/docs/_posts/2019-08-15-unordered-write.markdown +56 -0
  531. package/vendor/rocksdb/docs/_posts/2021-04-12-universal-improvements.markdown +46 -0
  532. package/vendor/rocksdb/docs/_posts/2021-05-26-integrated-blob-db.markdown +101 -0
  533. package/vendor/rocksdb/docs/_posts/2021-05-26-online-validation.markdown +17 -0
  534. package/vendor/rocksdb/docs/_posts/2021-05-27-rocksdb-secondary-cache.markdown +195 -0
  535. package/vendor/rocksdb/docs/_posts/2021-05-31-dictionary-compression.markdown +157 -0
  536. package/vendor/rocksdb/docs/_posts/2021-12-29-ribbon-filter.markdown +281 -0
  537. package/vendor/rocksdb/docs/_posts/2022-07-18-per-key-value-checksum.markdown +142 -0
  538. package/vendor/rocksdb/docs/_posts/2022-10-05-lost-buffered-write-recovery.markdown +123 -0
  539. package/vendor/rocksdb/docs/_posts/2022-10-07-asynchronous-io-in-rocksdb.markdown +133 -0
  540. package/vendor/rocksdb/docs/_posts/2022-10-31-align-compaction-output-file.markdown +107 -0
  541. package/vendor/rocksdb/docs/_posts/2022-11-09-time-aware-tiered-storage.markdown +121 -0
  542. package/vendor/rocksdb/docs/_sass/_base.scss +492 -0
  543. package/vendor/rocksdb/docs/_sass/_blog.scss +47 -0
  544. package/vendor/rocksdb/docs/_sass/_buttons.scss +47 -0
  545. package/vendor/rocksdb/docs/_sass/_footer.scss +82 -0
  546. package/vendor/rocksdb/docs/_sass/_gridBlock.scss +115 -0
  547. package/vendor/rocksdb/docs/_sass/_header.scss +139 -0
  548. package/vendor/rocksdb/docs/_sass/_poweredby.scss +69 -0
  549. package/vendor/rocksdb/docs/_sass/_promo.scss +55 -0
  550. package/vendor/rocksdb/docs/_sass/_react_docs_nav.scss +332 -0
  551. package/vendor/rocksdb/docs/_sass/_react_header_nav.scss +141 -0
  552. package/vendor/rocksdb/docs/_sass/_reset.scss +43 -0
  553. package/vendor/rocksdb/docs/_sass/_search.scss +142 -0
  554. package/vendor/rocksdb/docs/_sass/_slideshow.scss +48 -0
  555. package/vendor/rocksdb/docs/_sass/_syntax-highlighting.scss +129 -0
  556. package/vendor/rocksdb/docs/_sass/_tables.scss +47 -0
  557. package/vendor/rocksdb/docs/_top-level/support.md +22 -0
  558. package/vendor/rocksdb/docs/blog/all.html +20 -0
  559. package/vendor/rocksdb/docs/blog/index.html +12 -0
  560. package/vendor/rocksdb/docs/css/main.scss +159 -0
  561. package/vendor/rocksdb/docs/doc-type-examples/2016-04-07-blog-post-example.md +21 -0
  562. package/vendor/rocksdb/docs/doc-type-examples/docs-hello-world.md +12 -0
  563. package/vendor/rocksdb/docs/doc-type-examples/top-level-example.md +8 -0
  564. package/vendor/rocksdb/docs/docs/index.html +6 -0
  565. package/vendor/rocksdb/docs/feed.xml +30 -0
  566. package/vendor/rocksdb/docs/index.md +9 -0
  567. package/vendor/rocksdb/docs/static/favicon.png +0 -0
  568. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Black.woff +0 -0
  569. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Black.woff2 +0 -0
  570. package/vendor/rocksdb/docs/static/fonts/LatoLatin-BlackItalic.woff +0 -0
  571. package/vendor/rocksdb/docs/static/fonts/LatoLatin-BlackItalic.woff2 +0 -0
  572. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Italic.woff +0 -0
  573. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Italic.woff2 +0 -0
  574. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Light.woff +0 -0
  575. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Light.woff2 +0 -0
  576. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Regular.woff +0 -0
  577. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Regular.woff2 +0 -0
  578. package/vendor/rocksdb/docs/static/images/Resize-of-20140327_200754-300x225.jpg +0 -0
  579. package/vendor/rocksdb/docs/static/images/align-compaction-output/compaction_output_file_size_compare.png +0 -0
  580. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_align.png +0 -0
  581. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_normal.png +0 -0
  582. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_trival_move.png +0 -0
  583. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_size_compare.png +0 -0
  584. package/vendor/rocksdb/docs/static/images/align-compaction-output/write_amp_compare.png +0 -0
  585. package/vendor/rocksdb/docs/static/images/asynchronous-io/mget_async.png +0 -0
  586. package/vendor/rocksdb/docs/static/images/asynchronous-io/scan_async.png +0 -0
  587. package/vendor/rocksdb/docs/static/images/binaryseek.png +0 -0
  588. package/vendor/rocksdb/docs/static/images/bloom_fp_vs_bpk.png +0 -0
  589. package/vendor/rocksdb/docs/static/images/compaction/full-range.png +0 -0
  590. package/vendor/rocksdb/docs/static/images/compaction/l0-l1-contend.png +0 -0
  591. package/vendor/rocksdb/docs/static/images/compaction/l1-l2-contend.png +0 -0
  592. package/vendor/rocksdb/docs/static/images/compaction/part-range-old.png +0 -0
  593. package/vendor/rocksdb/docs/static/images/data-block-hash-index/block-format-binary-seek.png +0 -0
  594. package/vendor/rocksdb/docs/static/images/data-block-hash-index/block-format-hash-index.png +0 -0
  595. package/vendor/rocksdb/docs/static/images/data-block-hash-index/hash-index-data-structure.png +0 -0
  596. package/vendor/rocksdb/docs/static/images/data-block-hash-index/perf-cache-miss.png +0 -0
  597. package/vendor/rocksdb/docs/static/images/data-block-hash-index/perf-throughput.png +0 -0
  598. package/vendor/rocksdb/docs/static/images/delrange/delrange_collapsed.png +0 -0
  599. package/vendor/rocksdb/docs/static/images/delrange/delrange_key_schema.png +0 -0
  600. package/vendor/rocksdb/docs/static/images/delrange/delrange_sst_blocks.png +0 -0
  601. package/vendor/rocksdb/docs/static/images/delrange/delrange_uncollapsed.png +0 -0
  602. package/vendor/rocksdb/docs/static/images/delrange/delrange_write_path.png +0 -0
  603. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_raw_sampled.png +0 -0
  604. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_sst_blocks.png +0 -0
  605. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_zstd_trained.png +0 -0
  606. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Legacy_Vs_Integrated.png +0 -0
  607. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_RW_RO_Perf.png +0 -0
  608. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Write_Amp.png +0 -0
  609. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Write_Perf.png +0 -0
  610. package/vendor/rocksdb/docs/static/images/kv-checksum/Memtable-entry.png +0 -0
  611. package/vendor/rocksdb/docs/static/images/kv-checksum/Memtable-write.png +0 -0
  612. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Memtable.png +0 -0
  613. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Writebatch-to-Memtable.png +0 -0
  614. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Writebatch.png +0 -0
  615. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-fragment.png +0 -0
  616. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-read.png +0 -0
  617. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-write.png +0 -0
  618. package/vendor/rocksdb/docs/static/images/kv-checksum/Write-batch.png +0 -0
  619. package/vendor/rocksdb/docs/static/images/kv-checksum/Writebatch-write.png +0 -0
  620. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/angry-cat.png +0 -0
  621. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/basic-setup.png +0 -0
  622. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/happy-cat.png +0 -0
  623. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/replay-extension.png +0 -0
  624. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/test-fs-writable-file.png +0 -0
  625. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/trace-extension.png +0 -0
  626. package/vendor/rocksdb/docs/static/images/pcache-blockindex.jpg +0 -0
  627. package/vendor/rocksdb/docs/static/images/pcache-fileindex.jpg +0 -0
  628. package/vendor/rocksdb/docs/static/images/pcache-filelayout.jpg +0 -0
  629. package/vendor/rocksdb/docs/static/images/pcache-readiopath.jpg +0 -0
  630. package/vendor/rocksdb/docs/static/images/pcache-tieredstorage.jpg +0 -0
  631. package/vendor/rocksdb/docs/static/images/pcache-writeiopath.jpg +0 -0
  632. package/vendor/rocksdb/docs/static/images/promo-adapt.svg +8 -0
  633. package/vendor/rocksdb/docs/static/images/promo-flash.svg +28 -0
  634. package/vendor/rocksdb/docs/static/images/promo-operations.svg +6 -0
  635. package/vendor/rocksdb/docs/static/images/promo-performance.svg +134 -0
  636. package/vendor/rocksdb/docs/static/images/rate-limiter/auto-tuned-write-KBps-series.png +0 -0
  637. package/vendor/rocksdb/docs/static/images/rate-limiter/write-KBps-cdf.png +0 -0
  638. package/vendor/rocksdb/docs/static/images/rate-limiter/write-KBps-series.png +0 -0
  639. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/Mixgraph_hit_rate.png +0 -0
  640. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/Mixgraph_throughput.png +0 -0
  641. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/arch_diagram.png +0 -0
  642. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/insert_flow.png +0 -0
  643. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/lookup_flow.png +0 -0
  644. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/compaction_moving_up_conflict.png +0 -0
  645. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/per_key_placement_compaction.png +0 -0
  646. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_design.png +0 -0
  647. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_overview.png +0 -0
  648. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_problem.png +0 -0
  649. package/vendor/rocksdb/docs/static/images/tree_example1.png +0 -0
  650. package/vendor/rocksdb/docs/static/logo.svg +76 -0
  651. package/vendor/rocksdb/docs/static/og_image.png +0 -0
  652. package/vendor/rocksdb/env/composite_env.cc +534 -0
  653. package/vendor/rocksdb/env/composite_env_wrapper.h +378 -0
  654. package/vendor/rocksdb/env/emulated_clock.h +114 -0
  655. package/vendor/rocksdb/env/env.cc +1233 -0
  656. package/vendor/rocksdb/env/env_basic_test.cc +397 -0
  657. package/vendor/rocksdb/env/env_chroot.cc +148 -0
  658. package/vendor/rocksdb/env/env_chroot.h +55 -0
  659. package/vendor/rocksdb/env/env_encryption.cc +1346 -0
  660. package/vendor/rocksdb/env/env_encryption_ctr.h +114 -0
  661. package/vendor/rocksdb/env/env_posix.cc +524 -0
  662. package/vendor/rocksdb/env/env_test.cc +3577 -0
  663. package/vendor/rocksdb/env/file_system.cc +277 -0
  664. package/vendor/rocksdb/env/file_system_tracer.cc +564 -0
  665. package/vendor/rocksdb/env/file_system_tracer.h +461 -0
  666. package/vendor/rocksdb/env/fs_posix.cc +1284 -0
  667. package/vendor/rocksdb/env/fs_readonly.h +105 -0
  668. package/vendor/rocksdb/env/fs_remap.cc +341 -0
  669. package/vendor/rocksdb/env/fs_remap.h +137 -0
  670. package/vendor/rocksdb/env/io_posix.cc +1733 -0
  671. package/vendor/rocksdb/env/io_posix.h +523 -0
  672. package/vendor/rocksdb/env/io_posix_test.cc +141 -0
  673. package/vendor/rocksdb/env/mock_env.cc +1058 -0
  674. package/vendor/rocksdb/env/mock_env.h +144 -0
  675. package/vendor/rocksdb/env/mock_env_test.cc +84 -0
  676. package/vendor/rocksdb/env/unique_id_gen.cc +164 -0
  677. package/vendor/rocksdb/env/unique_id_gen.h +85 -0
  678. package/vendor/rocksdb/examples/CMakeLists.txt +45 -0
  679. package/vendor/rocksdb/examples/Makefile +58 -0
  680. package/vendor/rocksdb/examples/README.md +2 -0
  681. package/vendor/rocksdb/examples/c_simple_example.c +96 -0
  682. package/vendor/rocksdb/examples/column_families_example.cc +88 -0
  683. package/vendor/rocksdb/examples/compact_files_example.cc +177 -0
  684. package/vendor/rocksdb/examples/compaction_filter_example.cc +96 -0
  685. package/vendor/rocksdb/examples/multi_processes_example.cc +393 -0
  686. package/vendor/rocksdb/examples/optimistic_transaction_example.cc +190 -0
  687. package/vendor/rocksdb/examples/options_file_example.cc +132 -0
  688. package/vendor/rocksdb/examples/rocksdb_backup_restore_example.cc +99 -0
  689. package/vendor/rocksdb/examples/rocksdb_option_file_example.ini +142 -0
  690. package/vendor/rocksdb/examples/simple_example.cc +93 -0
  691. package/vendor/rocksdb/examples/transaction_example.cc +196 -0
  692. package/vendor/rocksdb/file/delete_scheduler.cc +409 -0
  693. package/vendor/rocksdb/file/delete_scheduler.h +147 -0
  694. package/vendor/rocksdb/file/delete_scheduler_test.cc +717 -0
  695. package/vendor/rocksdb/file/file_prefetch_buffer.cc +955 -0
  696. package/vendor/rocksdb/file/file_prefetch_buffer.h +471 -0
  697. package/vendor/rocksdb/file/file_util.cc +277 -0
  698. package/vendor/rocksdb/file/file_util.h +91 -0
  699. package/vendor/rocksdb/file/filename.cc +523 -0
  700. package/vendor/rocksdb/file/filename.h +188 -0
  701. package/vendor/rocksdb/file/line_file_reader.cc +73 -0
  702. package/vendor/rocksdb/file/line_file_reader.h +60 -0
  703. package/vendor/rocksdb/file/prefetch_test.cc +2374 -0
  704. package/vendor/rocksdb/file/random_access_file_reader.cc +599 -0
  705. package/vendor/rocksdb/file/random_access_file_reader.h +210 -0
  706. package/vendor/rocksdb/file/random_access_file_reader_test.cc +479 -0
  707. package/vendor/rocksdb/file/read_write_util.cc +33 -0
  708. package/vendor/rocksdb/file/read_write_util.h +31 -0
  709. package/vendor/rocksdb/file/readahead_file_info.h +33 -0
  710. package/vendor/rocksdb/file/readahead_raf.cc +169 -0
  711. package/vendor/rocksdb/file/readahead_raf.h +29 -0
  712. package/vendor/rocksdb/file/sequence_file_reader.cc +320 -0
  713. package/vendor/rocksdb/file/sequence_file_reader.h +119 -0
  714. package/vendor/rocksdb/file/sst_file_manager_impl.cc +507 -0
  715. package/vendor/rocksdb/file/sst_file_manager_impl.h +193 -0
  716. package/vendor/rocksdb/file/writable_file_writer.cc +989 -0
  717. package/vendor/rocksdb/file/writable_file_writer.h +320 -0
  718. package/vendor/rocksdb/fuzz/Makefile +67 -0
  719. package/vendor/rocksdb/fuzz/README.md +165 -0
  720. package/vendor/rocksdb/fuzz/db_fuzzer.cc +172 -0
  721. package/vendor/rocksdb/fuzz/db_map_fuzzer.cc +107 -0
  722. package/vendor/rocksdb/fuzz/proto/db_operation.proto +28 -0
  723. package/vendor/rocksdb/fuzz/sst_file_writer_fuzzer.cc +210 -0
  724. package/vendor/rocksdb/fuzz/util.h +29 -0
  725. package/vendor/rocksdb/include/rocksdb/advanced_cache.h +623 -0
  726. package/vendor/rocksdb/include/rocksdb/advanced_options.h +1177 -0
  727. package/vendor/rocksdb/include/rocksdb/block_cache_trace_writer.h +149 -0
  728. package/vendor/rocksdb/include/rocksdb/c.h +2864 -0
  729. package/vendor/rocksdb/include/rocksdb/cache.h +442 -0
  730. package/vendor/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  731. package/vendor/rocksdb/include/rocksdb/cleanable.h +128 -0
  732. package/vendor/rocksdb/include/rocksdb/compaction_filter.h +363 -0
  733. package/vendor/rocksdb/include/rocksdb/compaction_job_stats.h +109 -0
  734. package/vendor/rocksdb/include/rocksdb/comparator.h +164 -0
  735. package/vendor/rocksdb/include/rocksdb/compression_type.h +40 -0
  736. package/vendor/rocksdb/include/rocksdb/concurrent_task_limiter.h +51 -0
  737. package/vendor/rocksdb/include/rocksdb/configurable.h +390 -0
  738. package/vendor/rocksdb/include/rocksdb/convenience.h +466 -0
  739. package/vendor/rocksdb/include/rocksdb/customizable.h +229 -0
  740. package/vendor/rocksdb/include/rocksdb/data_structure.h +186 -0
  741. package/vendor/rocksdb/include/rocksdb/db.h +1980 -0
  742. package/vendor/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  743. package/vendor/rocksdb/include/rocksdb/db_dump_tool.h +43 -0
  744. package/vendor/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  745. package/vendor/rocksdb/include/rocksdb/env.h +1882 -0
  746. package/vendor/rocksdb/include/rocksdb/env_encryption.h +463 -0
  747. package/vendor/rocksdb/include/rocksdb/experimental.h +56 -0
  748. package/vendor/rocksdb/include/rocksdb/file_checksum.h +146 -0
  749. package/vendor/rocksdb/include/rocksdb/file_system.h +1849 -0
  750. package/vendor/rocksdb/include/rocksdb/filter_policy.h +206 -0
  751. package/vendor/rocksdb/include/rocksdb/flush_block_policy.h +75 -0
  752. package/vendor/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  753. package/vendor/rocksdb/include/rocksdb/io_status.h +244 -0
  754. package/vendor/rocksdb/include/rocksdb/iostats_context.h +98 -0
  755. package/vendor/rocksdb/include/rocksdb/iterator.h +144 -0
  756. package/vendor/rocksdb/include/rocksdb/ldb_tool.h +42 -0
  757. package/vendor/rocksdb/include/rocksdb/listener.h +840 -0
  758. package/vendor/rocksdb/include/rocksdb/memory_allocator.h +87 -0
  759. package/vendor/rocksdb/include/rocksdb/memtablerep.h +421 -0
  760. package/vendor/rocksdb/include/rocksdb/merge_operator.h +286 -0
  761. package/vendor/rocksdb/include/rocksdb/metadata.h +258 -0
  762. package/vendor/rocksdb/include/rocksdb/options.h +2083 -0
  763. package/vendor/rocksdb/include/rocksdb/perf_context.h +314 -0
  764. package/vendor/rocksdb/include/rocksdb/perf_level.h +36 -0
  765. package/vendor/rocksdb/include/rocksdb/persistent_cache.h +74 -0
  766. package/vendor/rocksdb/include/rocksdb/port_defs.h +22 -0
  767. package/vendor/rocksdb/include/rocksdb/rate_limiter.h +159 -0
  768. package/vendor/rocksdb/include/rocksdb/rocksdb_namespace.h +16 -0
  769. package/vendor/rocksdb/include/rocksdb/secondary_cache.h +139 -0
  770. package/vendor/rocksdb/include/rocksdb/slice.h +264 -0
  771. package/vendor/rocksdb/include/rocksdb/slice_transform.h +135 -0
  772. package/vendor/rocksdb/include/rocksdb/snapshot.h +53 -0
  773. package/vendor/rocksdb/include/rocksdb/sst_dump_tool.h +17 -0
  774. package/vendor/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  775. package/vendor/rocksdb/include/rocksdb/sst_file_reader.h +45 -0
  776. package/vendor/rocksdb/include/rocksdb/sst_file_writer.h +189 -0
  777. package/vendor/rocksdb/include/rocksdb/sst_partitioner.h +142 -0
  778. package/vendor/rocksdb/include/rocksdb/statistics.h +757 -0
  779. package/vendor/rocksdb/include/rocksdb/stats_history.h +70 -0
  780. package/vendor/rocksdb/include/rocksdb/status.h +574 -0
  781. package/vendor/rocksdb/include/rocksdb/system_clock.h +114 -0
  782. package/vendor/rocksdb/include/rocksdb/table.h +927 -0
  783. package/vendor/rocksdb/include/rocksdb/table_properties.h +332 -0
  784. package/vendor/rocksdb/include/rocksdb/table_reader_caller.h +41 -0
  785. package/vendor/rocksdb/include/rocksdb/thread_status.h +190 -0
  786. package/vendor/rocksdb/include/rocksdb/threadpool.h +67 -0
  787. package/vendor/rocksdb/include/rocksdb/trace_reader_writer.h +52 -0
  788. package/vendor/rocksdb/include/rocksdb/trace_record.h +248 -0
  789. package/vendor/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  790. package/vendor/rocksdb/include/rocksdb/transaction_log.h +122 -0
  791. package/vendor/rocksdb/include/rocksdb/types.h +94 -0
  792. package/vendor/rocksdb/include/rocksdb/unique_id.h +55 -0
  793. package/vendor/rocksdb/include/rocksdb/universal_compaction.h +96 -0
  794. package/vendor/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  795. package/vendor/rocksdb/include/rocksdb/utilities/backup_engine.h +689 -0
  796. package/vendor/rocksdb/include/rocksdb/utilities/cache_dump_load.h +140 -0
  797. package/vendor/rocksdb/include/rocksdb/utilities/checkpoint.h +63 -0
  798. package/vendor/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  799. package/vendor/rocksdb/include/rocksdb/utilities/customizable_util.h +322 -0
  800. package/vendor/rocksdb/include/rocksdb/utilities/db_ttl.h +70 -0
  801. package/vendor/rocksdb/include/rocksdb/utilities/debug.h +46 -0
  802. package/vendor/rocksdb/include/rocksdb/utilities/env_mirror.h +179 -0
  803. package/vendor/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  804. package/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd.h +316 -0
  805. package/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +75 -0
  806. package/vendor/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  807. package/vendor/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  808. package/vendor/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  809. package/vendor/rocksdb/include/rocksdb/utilities/memory_util.h +48 -0
  810. package/vendor/rocksdb/include/rocksdb/utilities/object_registry.h +583 -0
  811. package/vendor/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +98 -0
  812. package/vendor/rocksdb/include/rocksdb/utilities/option_change_migration.h +24 -0
  813. package/vendor/rocksdb/include/rocksdb/utilities/options_type.h +1221 -0
  814. package/vendor/rocksdb/include/rocksdb/utilities/options_util.h +105 -0
  815. package/vendor/rocksdb/include/rocksdb/utilities/replayer.h +85 -0
  816. package/vendor/rocksdb/include/rocksdb/utilities/sim_cache.h +93 -0
  817. package/vendor/rocksdb/include/rocksdb/utilities/stackable_db.h +587 -0
  818. package/vendor/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +88 -0
  819. package/vendor/rocksdb/include/rocksdb/utilities/transaction.h +683 -0
  820. package/vendor/rocksdb/include/rocksdb/utilities/transaction_db.h +506 -0
  821. package/vendor/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +89 -0
  822. package/vendor/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +307 -0
  823. package/vendor/rocksdb/include/rocksdb/version.h +43 -0
  824. package/vendor/rocksdb/include/rocksdb/wal_filter.h +111 -0
  825. package/vendor/rocksdb/include/rocksdb/wide_columns.h +210 -0
  826. package/vendor/rocksdb/include/rocksdb/write_batch.h +494 -0
  827. package/vendor/rocksdb/include/rocksdb/write_batch_base.h +144 -0
  828. package/vendor/rocksdb/include/rocksdb/write_buffer_manager.h +183 -0
  829. package/vendor/rocksdb/issue_template.md +7 -0
  830. package/vendor/rocksdb/java/CMakeLists.txt +549 -0
  831. package/vendor/rocksdb/java/GetBenchmarks.md +161 -0
  832. package/vendor/rocksdb/java/HISTORY-JAVA.md +86 -0
  833. package/vendor/rocksdb/java/Makefile +453 -0
  834. package/vendor/rocksdb/java/RELEASE.md +59 -0
  835. package/vendor/rocksdb/java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java +1640 -0
  836. package/vendor/rocksdb/java/crossbuild/Vagrantfile +51 -0
  837. package/vendor/rocksdb/java/crossbuild/build-linux-alpine.sh +70 -0
  838. package/vendor/rocksdb/java/crossbuild/build-linux-centos.sh +38 -0
  839. package/vendor/rocksdb/java/crossbuild/build-linux.sh +15 -0
  840. package/vendor/rocksdb/java/crossbuild/docker-build-linux-alpine.sh +17 -0
  841. package/vendor/rocksdb/java/crossbuild/docker-build-linux-centos.sh +38 -0
  842. package/vendor/rocksdb/java/jdb_bench.sh +13 -0
  843. package/vendor/rocksdb/java/jmh/LICENSE-HEADER.txt +5 -0
  844. package/vendor/rocksdb/java/jmh/README.md +24 -0
  845. package/vendor/rocksdb/java/jmh/pom.xml +138 -0
  846. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/ComparatorBenchmarks.java +139 -0
  847. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/GetBenchmarks.java +215 -0
  848. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/MultiGetBenchmarks.java +214 -0
  849. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/PutBenchmarks.java +112 -0
  850. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/util/FileUtils.java +59 -0
  851. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/util/KVUtils.java +72 -0
  852. package/vendor/rocksdb/java/pom.xml.template +178 -0
  853. package/vendor/rocksdb/java/rocksjni/backup_engine_options.cc +365 -0
  854. package/vendor/rocksdb/java/rocksjni/backupenginejni.cc +279 -0
  855. package/vendor/rocksdb/java/rocksjni/cache.cc +34 -0
  856. package/vendor/rocksdb/java/rocksjni/cassandra_compactionfilterjni.cc +25 -0
  857. package/vendor/rocksdb/java/rocksjni/cassandra_value_operator.cc +50 -0
  858. package/vendor/rocksdb/java/rocksjni/checkpoint.cc +71 -0
  859. package/vendor/rocksdb/java/rocksjni/clock_cache.cc +42 -0
  860. package/vendor/rocksdb/java/rocksjni/columnfamilyhandle.cc +72 -0
  861. package/vendor/rocksdb/java/rocksjni/compact_range_options.cc +222 -0
  862. package/vendor/rocksdb/java/rocksjni/compaction_filter.cc +29 -0
  863. package/vendor/rocksdb/java/rocksjni/compaction_filter_factory.cc +42 -0
  864. package/vendor/rocksdb/java/rocksjni/compaction_filter_factory_jnicallback.cc +79 -0
  865. package/vendor/rocksdb/java/rocksjni/compaction_filter_factory_jnicallback.h +37 -0
  866. package/vendor/rocksdb/java/rocksjni/compaction_job_info.cc +230 -0
  867. package/vendor/rocksdb/java/rocksjni/compaction_job_stats.cc +345 -0
  868. package/vendor/rocksdb/java/rocksjni/compaction_options.cc +112 -0
  869. package/vendor/rocksdb/java/rocksjni/compaction_options_fifo.cc +83 -0
  870. package/vendor/rocksdb/java/rocksjni/compaction_options_universal.cc +209 -0
  871. package/vendor/rocksdb/java/rocksjni/comparator.cc +60 -0
  872. package/vendor/rocksdb/java/rocksjni/comparatorjnicallback.cc +647 -0
  873. package/vendor/rocksdb/java/rocksjni/comparatorjnicallback.h +137 -0
  874. package/vendor/rocksdb/java/rocksjni/compression_options.cc +214 -0
  875. package/vendor/rocksdb/java/rocksjni/concurrent_task_limiter.cc +97 -0
  876. package/vendor/rocksdb/java/rocksjni/config_options.cc +103 -0
  877. package/vendor/rocksdb/java/rocksjni/cplusplus_to_java_convert.h +37 -0
  878. package/vendor/rocksdb/java/rocksjni/env.cc +205 -0
  879. package/vendor/rocksdb/java/rocksjni/env_options.cc +305 -0
  880. package/vendor/rocksdb/java/rocksjni/event_listener.cc +44 -0
  881. package/vendor/rocksdb/java/rocksjni/event_listener_jnicallback.cc +502 -0
  882. package/vendor/rocksdb/java/rocksjni/event_listener_jnicallback.h +122 -0
  883. package/vendor/rocksdb/java/rocksjni/filter.cc +46 -0
  884. package/vendor/rocksdb/java/rocksjni/ingest_external_file_options.cc +199 -0
  885. package/vendor/rocksdb/java/rocksjni/iterator.cc +340 -0
  886. package/vendor/rocksdb/java/rocksjni/jnicallback.cc +54 -0
  887. package/vendor/rocksdb/java/rocksjni/jnicallback.h +32 -0
  888. package/vendor/rocksdb/java/rocksjni/loggerjnicallback.cc +299 -0
  889. package/vendor/rocksdb/java/rocksjni/loggerjnicallback.h +51 -0
  890. package/vendor/rocksdb/java/rocksjni/lru_cache.cc +49 -0
  891. package/vendor/rocksdb/java/rocksjni/memory_util.cc +100 -0
  892. package/vendor/rocksdb/java/rocksjni/memtablejni.cc +94 -0
  893. package/vendor/rocksdb/java/rocksjni/merge_operator.cc +98 -0
  894. package/vendor/rocksdb/java/rocksjni/native_comparator_wrapper_test.cc +45 -0
  895. package/vendor/rocksdb/java/rocksjni/optimistic_transaction_db.cc +270 -0
  896. package/vendor/rocksdb/java/rocksjni/optimistic_transaction_options.cc +78 -0
  897. package/vendor/rocksdb/java/rocksjni/options.cc +8695 -0
  898. package/vendor/rocksdb/java/rocksjni/options_util.cc +139 -0
  899. package/vendor/rocksdb/java/rocksjni/persistent_cache.cc +60 -0
  900. package/vendor/rocksdb/java/rocksjni/portal.h +8706 -0
  901. package/vendor/rocksdb/java/rocksjni/ratelimiterjni.cc +128 -0
  902. package/vendor/rocksdb/java/rocksjni/remove_emptyvalue_compactionfilterjni.cc +24 -0
  903. package/vendor/rocksdb/java/rocksjni/restorejni.cc +42 -0
  904. package/vendor/rocksdb/java/rocksjni/rocks_callback_object.cc +30 -0
  905. package/vendor/rocksdb/java/rocksjni/rocksdb_exception_test.cc +81 -0
  906. package/vendor/rocksdb/java/rocksjni/rocksjni.cc +3957 -0
  907. package/vendor/rocksdb/java/rocksjni/slice.cc +374 -0
  908. package/vendor/rocksdb/java/rocksjni/snapshot.cc +27 -0
  909. package/vendor/rocksdb/java/rocksjni/sst_file_manager.cc +250 -0
  910. package/vendor/rocksdb/java/rocksjni/sst_file_reader_iterator.cc +373 -0
  911. package/vendor/rocksdb/java/rocksjni/sst_file_readerjni.cc +118 -0
  912. package/vendor/rocksdb/java/rocksjni/sst_file_writerjni.cc +310 -0
  913. package/vendor/rocksdb/java/rocksjni/sst_partitioner.cc +43 -0
  914. package/vendor/rocksdb/java/rocksjni/statistics.cc +268 -0
  915. package/vendor/rocksdb/java/rocksjni/statisticsjni.cc +31 -0
  916. package/vendor/rocksdb/java/rocksjni/statisticsjni.h +34 -0
  917. package/vendor/rocksdb/java/rocksjni/table.cc +145 -0
  918. package/vendor/rocksdb/java/rocksjni/table_filter.cc +27 -0
  919. package/vendor/rocksdb/java/rocksjni/table_filter_jnicallback.cc +66 -0
  920. package/vendor/rocksdb/java/rocksjni/table_filter_jnicallback.h +36 -0
  921. package/vendor/rocksdb/java/rocksjni/testable_event_listener.cc +219 -0
  922. package/vendor/rocksdb/java/rocksjni/thread_status.cc +125 -0
  923. package/vendor/rocksdb/java/rocksjni/trace_writer.cc +24 -0
  924. package/vendor/rocksdb/java/rocksjni/trace_writer_jnicallback.cc +118 -0
  925. package/vendor/rocksdb/java/rocksjni/trace_writer_jnicallback.h +36 -0
  926. package/vendor/rocksdb/java/rocksjni/transaction.cc +1655 -0
  927. package/vendor/rocksdb/java/rocksjni/transaction_db.cc +451 -0
  928. package/vendor/rocksdb/java/rocksjni/transaction_db_options.cc +169 -0
  929. package/vendor/rocksdb/java/rocksjni/transaction_log.cc +80 -0
  930. package/vendor/rocksdb/java/rocksjni/transaction_notifier.cc +44 -0
  931. package/vendor/rocksdb/java/rocksjni/transaction_notifier_jnicallback.cc +42 -0
  932. package/vendor/rocksdb/java/rocksjni/transaction_notifier_jnicallback.h +42 -0
  933. package/vendor/rocksdb/java/rocksjni/transaction_options.cc +191 -0
  934. package/vendor/rocksdb/java/rocksjni/ttl.cc +212 -0
  935. package/vendor/rocksdb/java/rocksjni/wal_filter.cc +24 -0
  936. package/vendor/rocksdb/java/rocksjni/wal_filter_jnicallback.cc +139 -0
  937. package/vendor/rocksdb/java/rocksjni/wal_filter_jnicallback.h +42 -0
  938. package/vendor/rocksdb/java/rocksjni/write_batch.cc +676 -0
  939. package/vendor/rocksdb/java/rocksjni/write_batch_test.cc +199 -0
  940. package/vendor/rocksdb/java/rocksjni/write_batch_with_index.cc +953 -0
  941. package/vendor/rocksdb/java/rocksjni/write_buffer_manager.cc +47 -0
  942. package/vendor/rocksdb/java/rocksjni/writebatchhandlerjnicallback.cc +519 -0
  943. package/vendor/rocksdb/java/rocksjni/writebatchhandlerjnicallback.h +92 -0
  944. package/vendor/rocksdb/java/samples/src/main/java/OptimisticTransactionSample.java +184 -0
  945. package/vendor/rocksdb/java/samples/src/main/java/RocksDBColumnFamilySample.java +78 -0
  946. package/vendor/rocksdb/java/samples/src/main/java/RocksDBSample.java +295 -0
  947. package/vendor/rocksdb/java/samples/src/main/java/TransactionSample.java +183 -0
  948. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractCompactionFilter.java +59 -0
  949. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractCompactionFilterFactory.java +77 -0
  950. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractComparator.java +124 -0
  951. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractComparatorJniBridge.java +119 -0
  952. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractEventListener.java +334 -0
  953. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractImmutableNativeReference.java +65 -0
  954. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractMutableOptions.java +368 -0
  955. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractNativeReference.java +49 -0
  956. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractRocksIterator.java +146 -0
  957. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractSlice.java +191 -0
  958. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTableFilter.java +20 -0
  959. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTraceWriter.java +70 -0
  960. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTransactionNotifier.java +54 -0
  961. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractWalFilter.java +49 -0
  962. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractWriteBatch.java +203 -0
  963. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AccessHint.java +53 -0
  964. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AdvancedColumnFamilyOptionsInterface.java +463 -0
  965. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AdvancedMutableColumnFamilyOptionsInterface.java +830 -0
  966. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackgroundErrorReason.java +46 -0
  967. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupEngine.java +259 -0
  968. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupEngineOptions.java +458 -0
  969. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupInfo.java +76 -0
  970. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BlockBasedTableConfig.java +951 -0
  971. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BloomFilter.java +73 -0
  972. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BuiltinComparator.java +20 -0
  973. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ByteBufferGetStatus.java +50 -0
  974. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Cache.java +40 -0
  975. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CassandraCompactionFilter.java +20 -0
  976. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CassandraValueMergeOperator.java +25 -0
  977. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Checkpoint.java +62 -0
  978. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ChecksumType.java +45 -0
  979. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ClockCache.java +59 -0
  980. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyDescriptor.java +84 -0
  981. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyHandle.java +151 -0
  982. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyMetaData.java +70 -0
  983. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyOptions.java +1543 -0
  984. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java +536 -0
  985. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactRangeOptions.java +245 -0
  986. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionJobInfo.java +161 -0
  987. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionJobStats.java +295 -0
  988. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptions.java +121 -0
  989. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptionsFIFO.java +87 -0
  990. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptionsUniversal.java +273 -0
  991. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionPriority.java +81 -0
  992. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionReason.java +141 -0
  993. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionStopStyle.java +55 -0
  994. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionStyle.java +81 -0
  995. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ComparatorOptions.java +133 -0
  996. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ComparatorType.java +48 -0
  997. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompressionOptions.java +150 -0
  998. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompressionType.java +121 -0
  999. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConcurrentTaskLimiter.java +44 -0
  1000. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConcurrentTaskLimiterImpl.java +48 -0
  1001. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConfigOptions.java +53 -0
  1002. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DBOptions.java +1496 -0
  1003. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DBOptionsInterface.java +1756 -0
  1004. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DataBlockIndexType.java +32 -0
  1005. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DbPath.java +47 -0
  1006. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DirectSlice.java +136 -0
  1007. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EncodingType.java +55 -0
  1008. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Env.java +167 -0
  1009. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EnvOptions.java +366 -0
  1010. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EventListener.java +335 -0
  1011. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Experimental.java +23 -0
  1012. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ExternalFileIngestionInfo.java +103 -0
  1013. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FileOperationInfo.java +112 -0
  1014. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Filter.java +36 -0
  1015. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushJobInfo.java +186 -0
  1016. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushOptions.java +90 -0
  1017. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushReason.java +53 -0
  1018. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HashLinkedListMemTableConfig.java +174 -0
  1019. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HashSkipListMemTableConfig.java +106 -0
  1020. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HistogramData.java +75 -0
  1021. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HistogramType.java +214 -0
  1022. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Holder.java +46 -0
  1023. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IndexShorteningMode.java +60 -0
  1024. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IndexType.java +55 -0
  1025. package/vendor/rocksdb/java/src/main/java/org/rocksdb/InfoLogLevel.java +49 -0
  1026. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IngestExternalFileOptions.java +227 -0
  1027. package/vendor/rocksdb/java/src/main/java/org/rocksdb/KeyMayExist.java +35 -0
  1028. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LRUCache.java +106 -0
  1029. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LevelMetaData.java +56 -0
  1030. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LiveFileMetaData.java +55 -0
  1031. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LogFile.java +75 -0
  1032. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Logger.java +121 -0
  1033. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemTableConfig.java +29 -0
  1034. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemTableInfo.java +103 -0
  1035. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemoryUsageType.java +72 -0
  1036. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemoryUtil.java +60 -0
  1037. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MergeOperator.java +18 -0
  1038. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java +621 -0
  1039. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java +156 -0
  1040. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableDBOptions.java +292 -0
  1041. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableDBOptionsInterface.java +440 -0
  1042. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableOptionKey.java +16 -0
  1043. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableOptionValue.java +368 -0
  1044. package/vendor/rocksdb/java/src/main/java/org/rocksdb/NativeComparatorWrapper.java +59 -0
  1045. package/vendor/rocksdb/java/src/main/java/org/rocksdb/NativeLibraryLoader.java +172 -0
  1046. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OperationStage.java +59 -0
  1047. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OperationType.java +55 -0
  1048. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptimisticTransactionDB.java +224 -0
  1049. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptimisticTransactionOptions.java +53 -0
  1050. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptionString.java +261 -0
  1051. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Options.java +2574 -0
  1052. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptionsUtil.java +101 -0
  1053. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PersistentCache.java +26 -0
  1054. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PlainTableConfig.java +251 -0
  1055. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PrepopulateBlobCache.java +117 -0
  1056. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Priority.java +49 -0
  1057. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Range.java +19 -0
  1058. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RateLimiter.java +227 -0
  1059. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RateLimiterMode.java +52 -0
  1060. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReadOptions.java +822 -0
  1061. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReadTier.java +49 -0
  1062. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RemoveEmptyValueCompactionFilter.java +18 -0
  1063. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RestoreOptions.java +32 -0
  1064. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReusedSynchronisationType.java +65 -0
  1065. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksCallbackObject.java +73 -0
  1066. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksDB.java +4688 -0
  1067. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksDBException.java +44 -0
  1068. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksEnv.java +31 -0
  1069. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksIterator.java +140 -0
  1070. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksIteratorInterface.java +127 -0
  1071. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksMemEnv.java +31 -0
  1072. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksMutableObject.java +87 -0
  1073. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksObject.java +45 -0
  1074. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SanityLevel.java +47 -0
  1075. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SizeApproximationFlag.java +31 -0
  1076. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SkipListMemTableConfig.java +51 -0
  1077. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Slice.java +135 -0
  1078. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Snapshot.java +41 -0
  1079. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileManager.java +249 -0
  1080. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileMetaData.java +162 -0
  1081. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileReader.java +82 -0
  1082. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileReaderIterator.java +140 -0
  1083. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileWriter.java +237 -0
  1084. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstPartitionerFactory.java +15 -0
  1085. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstPartitionerFixedPrefixFactory.java +19 -0
  1086. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StateType.java +53 -0
  1087. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Statistics.java +153 -0
  1088. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatisticsCollector.java +102 -0
  1089. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatisticsCollectorCallback.java +32 -0
  1090. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatsCollectorInput.java +35 -0
  1091. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatsLevel.java +65 -0
  1092. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Status.java +155 -0
  1093. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StringAppendOperator.java +29 -0
  1094. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationBriefInfo.java +107 -0
  1095. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationInfo.java +86 -0
  1096. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationReason.java +46 -0
  1097. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileDeletionInfo.java +86 -0
  1098. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFilter.java +21 -0
  1099. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFormatConfig.java +22 -0
  1100. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableProperties.java +426 -0
  1101. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ThreadStatus.java +224 -0
  1102. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ThreadType.java +65 -0
  1103. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TickerType.java +802 -0
  1104. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TimedEnv.java +30 -0
  1105. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TraceOptions.java +32 -0
  1106. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TraceWriter.java +36 -0
  1107. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Transaction.java +2162 -0
  1108. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionDB.java +401 -0
  1109. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionDBOptions.java +216 -0
  1110. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionLogIterator.java +112 -0
  1111. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionOptions.java +189 -0
  1112. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionalDB.java +65 -0
  1113. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionalOptions.java +31 -0
  1114. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TtlDB.java +242 -0
  1115. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TxnDBWritePolicy.java +62 -0
  1116. package/vendor/rocksdb/java/src/main/java/org/rocksdb/UInt64AddOperator.java +19 -0
  1117. package/vendor/rocksdb/java/src/main/java/org/rocksdb/VectorMemTableConfig.java +46 -0
  1118. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WALRecoveryMode.java +82 -0
  1119. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WBWIRocksIterator.java +203 -0
  1120. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalFileType.java +55 -0
  1121. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalFilter.java +86 -0
  1122. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalProcessingOption.java +54 -0
  1123. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatch.java +394 -0
  1124. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatchInterface.java +283 -0
  1125. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatchWithIndex.java +358 -0
  1126. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBufferManager.java +50 -0
  1127. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteOptions.java +255 -0
  1128. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteStallCondition.java +44 -0
  1129. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteStallInfo.java +75 -0
  1130. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/ByteUtil.java +52 -0
  1131. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/BytewiseComparator.java +121 -0
  1132. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/Environment.java +245 -0
  1133. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/IntComparator.java +67 -0
  1134. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/ReverseBytewiseComparator.java +88 -0
  1135. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/SizeUnit.java +16 -0
  1136. package/vendor/rocksdb/java/src/test/java/org/rocksdb/AbstractTransactionTest.java +979 -0
  1137. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BackupEngineOptionsTest.java +297 -0
  1138. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BackupEngineTest.java +261 -0
  1139. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BlobOptionsTest.java +353 -0
  1140. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BlockBasedTableConfigTest.java +415 -0
  1141. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BuiltinComparatorTest.java +145 -0
  1142. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ByteBufferUnsupportedOperationTest.java +132 -0
  1143. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BytewiseComparatorRegressionTest.java +132 -0
  1144. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CheckPointTest.java +82 -0
  1145. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ClockCacheTest.java +25 -0
  1146. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java +712 -0
  1147. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ColumnFamilyTest.java +562 -0
  1148. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactRangeOptionsTest.java +102 -0
  1149. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionFilterFactoryTest.java +61 -0
  1150. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionJobInfoTest.java +114 -0
  1151. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionJobStatsTest.java +196 -0
  1152. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsFIFOTest.java +35 -0
  1153. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsTest.java +52 -0
  1154. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsUniversalTest.java +80 -0
  1155. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionPriorityTest.java +31 -0
  1156. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionStopStyleTest.java +31 -0
  1157. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ComparatorOptionsTest.java +58 -0
  1158. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompressionOptionsTest.java +71 -0
  1159. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompressionTypesTest.java +25 -0
  1160. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ConcurrentTaskLimiterTest.java +56 -0
  1161. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DBOptionsTest.java +902 -0
  1162. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DefaultEnvTest.java +113 -0
  1163. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DirectSliceTest.java +93 -0
  1164. package/vendor/rocksdb/java/src/test/java/org/rocksdb/EnvOptionsTest.java +145 -0
  1165. package/vendor/rocksdb/java/src/test/java/org/rocksdb/EventListenerTest.java +725 -0
  1166. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FilterTest.java +39 -0
  1167. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FlushOptionsTest.java +31 -0
  1168. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FlushTest.java +49 -0
  1169. package/vendor/rocksdb/java/src/test/java/org/rocksdb/InfoLogLevelTest.java +109 -0
  1170. package/vendor/rocksdb/java/src/test/java/org/rocksdb/IngestExternalFileOptionsTest.java +107 -0
  1171. package/vendor/rocksdb/java/src/test/java/org/rocksdb/KeyMayExistTest.java +528 -0
  1172. package/vendor/rocksdb/java/src/test/java/org/rocksdb/LRUCacheTest.java +32 -0
  1173. package/vendor/rocksdb/java/src/test/java/org/rocksdb/LoggerTest.java +235 -0
  1174. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MemTableTest.java +108 -0
  1175. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MemoryUtilTest.java +136 -0
  1176. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MergeTest.java +465 -0
  1177. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MixedOptionsTest.java +85 -0
  1178. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiColumnRegressionTest.java +145 -0
  1179. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiGetManyKeysTest.java +241 -0
  1180. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiGetTest.java +530 -0
  1181. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableColumnFamilyOptionsTest.java +167 -0
  1182. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableDBOptionsTest.java +85 -0
  1183. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableOptionsGetSetTest.java +429 -0
  1184. package/vendor/rocksdb/java/src/test/java/org/rocksdb/NativeComparatorWrapperTest.java +90 -0
  1185. package/vendor/rocksdb/java/src/test/java/org/rocksdb/NativeLibraryLoaderTest.java +41 -0
  1186. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionDBTest.java +131 -0
  1187. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionOptionsTest.java +38 -0
  1188. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionTest.java +446 -0
  1189. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptionsTest.java +1488 -0
  1190. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptionsUtilTest.java +129 -0
  1191. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PlainTableConfigTest.java +89 -0
  1192. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PlatformRandomHelper.java +58 -0
  1193. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PutMultiplePartsTest.java +164 -0
  1194. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RateLimiterTest.java +65 -0
  1195. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ReadOnlyTest.java +222 -0
  1196. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ReadOptionsTest.java +374 -0
  1197. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksDBExceptionTest.java +115 -0
  1198. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksDBTest.java +1692 -0
  1199. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksIteratorTest.java +289 -0
  1200. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksMemEnvTest.java +137 -0
  1201. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksNativeLibraryResource.java +18 -0
  1202. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SecondaryDBTest.java +135 -0
  1203. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SliceTest.java +80 -0
  1204. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SnapshotTest.java +169 -0
  1205. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileManagerTest.java +66 -0
  1206. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileReaderTest.java +222 -0
  1207. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileWriterTest.java +239 -0
  1208. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstPartitionerTest.java +72 -0
  1209. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatisticsCollectorTest.java +55 -0
  1210. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatisticsTest.java +168 -0
  1211. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatsCallbackMock.java +19 -0
  1212. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TableFilterTest.java +106 -0
  1213. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TimedEnvTest.java +40 -0
  1214. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionDBOptionsTest.java +64 -0
  1215. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionDBTest.java +177 -0
  1216. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionLogIteratorTest.java +139 -0
  1217. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionOptionsTest.java +72 -0
  1218. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionTest.java +488 -0
  1219. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TtlDBTest.java +112 -0
  1220. package/vendor/rocksdb/java/src/test/java/org/rocksdb/Types.java +43 -0
  1221. package/vendor/rocksdb/java/src/test/java/org/rocksdb/VerifyChecksumsTest.java +213 -0
  1222. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WALRecoveryModeTest.java +22 -0
  1223. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WalFilterTest.java +165 -0
  1224. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchHandlerTest.java +76 -0
  1225. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchTest.java +528 -0
  1226. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchThreadedTest.java +101 -0
  1227. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchWithIndexTest.java +1068 -0
  1228. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteOptionsTest.java +75 -0
  1229. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/RemoveEmptyValueCompactionFilterFactory.java +21 -0
  1230. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/RocksJunitRunner.java +174 -0
  1231. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/TestableEventListener.java +23 -0
  1232. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/ByteBufferAllocator.java +16 -0
  1233. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/BytewiseComparatorIntTest.java +267 -0
  1234. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/BytewiseComparatorTest.java +531 -0
  1235. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/CapturingWriteBatchHandler.java +190 -0
  1236. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/DirectByteBufferAllocator.java +18 -0
  1237. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/EnvironmentTest.java +304 -0
  1238. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/HeapByteBufferAllocator.java +18 -0
  1239. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/IntComparatorTest.java +266 -0
  1240. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/JNIComparatorTest.java +180 -0
  1241. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/ReverseBytewiseComparatorIntTest.java +270 -0
  1242. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/SizeUnitTest.java +27 -0
  1243. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/TestUtil.java +72 -0
  1244. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/WriteBatchGetter.java +139 -0
  1245. package/vendor/rocksdb/java/understanding_options.md +79 -0
  1246. package/vendor/rocksdb/logging/auto_roll_logger.cc +368 -0
  1247. package/vendor/rocksdb/logging/auto_roll_logger.h +166 -0
  1248. package/vendor/rocksdb/logging/auto_roll_logger_test.cc +731 -0
  1249. package/vendor/rocksdb/logging/env_logger.h +195 -0
  1250. package/vendor/rocksdb/logging/env_logger_test.cc +163 -0
  1251. package/vendor/rocksdb/logging/event_logger.cc +68 -0
  1252. package/vendor/rocksdb/logging/event_logger.h +202 -0
  1253. package/vendor/rocksdb/logging/event_logger_test.cc +45 -0
  1254. package/vendor/rocksdb/logging/log_buffer.cc +91 -0
  1255. package/vendor/rocksdb/logging/log_buffer.h +57 -0
  1256. package/vendor/rocksdb/logging/logging.h +62 -0
  1257. package/vendor/rocksdb/memory/allocator.h +58 -0
  1258. package/vendor/rocksdb/memory/arena.cc +170 -0
  1259. package/vendor/rocksdb/memory/arena.h +135 -0
  1260. package/vendor/rocksdb/memory/arena_test.cc +295 -0
  1261. package/vendor/rocksdb/memory/concurrent_arena.cc +45 -0
  1262. package/vendor/rocksdb/memory/concurrent_arena.h +215 -0
  1263. package/vendor/rocksdb/memory/jemalloc_nodump_allocator.cc +303 -0
  1264. package/vendor/rocksdb/memory/jemalloc_nodump_allocator.h +99 -0
  1265. package/vendor/rocksdb/memory/memkind_kmem_allocator.cc +44 -0
  1266. package/vendor/rocksdb/memory/memkind_kmem_allocator.h +43 -0
  1267. package/vendor/rocksdb/memory/memory_allocator.cc +80 -0
  1268. package/vendor/rocksdb/memory/memory_allocator_impl.h +47 -0
  1269. package/vendor/rocksdb/memory/memory_allocator_test.cc +236 -0
  1270. package/vendor/rocksdb/memory/memory_usage.h +38 -0
  1271. package/vendor/rocksdb/memtable/alloc_tracker.cc +63 -0
  1272. package/vendor/rocksdb/memtable/hash_linklist_rep.cc +924 -0
  1273. package/vendor/rocksdb/memtable/hash_skiplist_rep.cc +391 -0
  1274. package/vendor/rocksdb/memtable/inlineskiplist.h +1051 -0
  1275. package/vendor/rocksdb/memtable/inlineskiplist_test.cc +665 -0
  1276. package/vendor/rocksdb/memtable/memtablerep_bench.cc +687 -0
  1277. package/vendor/rocksdb/memtable/skiplist.h +498 -0
  1278. package/vendor/rocksdb/memtable/skiplist_test.cc +388 -0
  1279. package/vendor/rocksdb/memtable/skiplistrep.cc +368 -0
  1280. package/vendor/rocksdb/memtable/stl_wrappers.h +33 -0
  1281. package/vendor/rocksdb/memtable/vectorrep.cc +307 -0
  1282. package/vendor/rocksdb/memtable/write_buffer_manager.cc +185 -0
  1283. package/vendor/rocksdb/memtable/write_buffer_manager_test.cc +304 -0
  1284. package/vendor/rocksdb/microbench/CMakeLists.txt +17 -0
  1285. package/vendor/rocksdb/microbench/README.md +60 -0
  1286. package/vendor/rocksdb/microbench/db_basic_bench.cc +1583 -0
  1287. package/vendor/rocksdb/microbench/ribbon_bench.cc +155 -0
  1288. package/vendor/rocksdb/monitoring/file_read_sample.h +23 -0
  1289. package/vendor/rocksdb/monitoring/histogram.cc +270 -0
  1290. package/vendor/rocksdb/monitoring/histogram.h +143 -0
  1291. package/vendor/rocksdb/monitoring/histogram_test.cc +254 -0
  1292. package/vendor/rocksdb/monitoring/histogram_windowing.cc +194 -0
  1293. package/vendor/rocksdb/monitoring/histogram_windowing.h +84 -0
  1294. package/vendor/rocksdb/monitoring/in_memory_stats_history.cc +50 -0
  1295. package/vendor/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  1296. package/vendor/rocksdb/monitoring/instrumented_mutex.cc +90 -0
  1297. package/vendor/rocksdb/monitoring/instrumented_mutex.h +126 -0
  1298. package/vendor/rocksdb/monitoring/iostats_context.cc +78 -0
  1299. package/vendor/rocksdb/monitoring/iostats_context_imp.h +62 -0
  1300. package/vendor/rocksdb/monitoring/iostats_context_test.cc +31 -0
  1301. package/vendor/rocksdb/monitoring/perf_context.cc +313 -0
  1302. package/vendor/rocksdb/monitoring/perf_context_imp.h +96 -0
  1303. package/vendor/rocksdb/monitoring/perf_level.cc +23 -0
  1304. package/vendor/rocksdb/monitoring/perf_level_imp.h +14 -0
  1305. package/vendor/rocksdb/monitoring/perf_step_timer.h +77 -0
  1306. package/vendor/rocksdb/monitoring/persistent_stats_history.cc +170 -0
  1307. package/vendor/rocksdb/monitoring/persistent_stats_history.h +83 -0
  1308. package/vendor/rocksdb/monitoring/statistics.cc +534 -0
  1309. package/vendor/rocksdb/monitoring/statistics_impl.h +144 -0
  1310. package/vendor/rocksdb/monitoring/statistics_test.cc +88 -0
  1311. package/vendor/rocksdb/monitoring/stats_history_test.cc +662 -0
  1312. package/vendor/rocksdb/monitoring/thread_status_impl.cc +163 -0
  1313. package/vendor/rocksdb/monitoring/thread_status_updater.cc +328 -0
  1314. package/vendor/rocksdb/monitoring/thread_status_updater.h +226 -0
  1315. package/vendor/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  1316. package/vendor/rocksdb/monitoring/thread_status_util.cc +208 -0
  1317. package/vendor/rocksdb/monitoring/thread_status_util.h +139 -0
  1318. package/vendor/rocksdb/monitoring/thread_status_util_debug.cc +46 -0
  1319. package/vendor/rocksdb/options/cf_options.cc +1196 -0
  1320. package/vendor/rocksdb/options/cf_options.h +347 -0
  1321. package/vendor/rocksdb/options/configurable.cc +712 -0
  1322. package/vendor/rocksdb/options/configurable_helper.h +185 -0
  1323. package/vendor/rocksdb/options/configurable_test.cc +861 -0
  1324. package/vendor/rocksdb/options/configurable_test.h +116 -0
  1325. package/vendor/rocksdb/options/customizable.cc +133 -0
  1326. package/vendor/rocksdb/options/customizable_test.cc +2116 -0
  1327. package/vendor/rocksdb/options/db_options.cc +1079 -0
  1328. package/vendor/rocksdb/options/db_options.h +152 -0
  1329. package/vendor/rocksdb/options/options.cc +692 -0
  1330. package/vendor/rocksdb/options/options_helper.cc +1424 -0
  1331. package/vendor/rocksdb/options/options_helper.h +116 -0
  1332. package/vendor/rocksdb/options/options_parser.cc +736 -0
  1333. package/vendor/rocksdb/options/options_parser.h +149 -0
  1334. package/vendor/rocksdb/options/options_settable_test.cc +655 -0
  1335. package/vendor/rocksdb/options/options_test.cc +5060 -0
  1336. package/vendor/rocksdb/plugin/README.md +43 -0
  1337. package/vendor/rocksdb/port/README +10 -0
  1338. package/vendor/rocksdb/port/jemalloc_helper.h +107 -0
  1339. package/vendor/rocksdb/port/lang.h +97 -0
  1340. package/vendor/rocksdb/port/likely.h +18 -0
  1341. package/vendor/rocksdb/port/malloc.h +17 -0
  1342. package/vendor/rocksdb/port/mmap.cc +98 -0
  1343. package/vendor/rocksdb/port/mmap.h +70 -0
  1344. package/vendor/rocksdb/port/port.h +21 -0
  1345. package/vendor/rocksdb/port/port_dirent.h +44 -0
  1346. package/vendor/rocksdb/port/port_example.h +101 -0
  1347. package/vendor/rocksdb/port/port_posix.cc +300 -0
  1348. package/vendor/rocksdb/port/port_posix.h +243 -0
  1349. package/vendor/rocksdb/port/stack_trace.cc +336 -0
  1350. package/vendor/rocksdb/port/stack_trace.h +31 -0
  1351. package/vendor/rocksdb/port/sys_time.h +63 -0
  1352. package/vendor/rocksdb/port/util_logger.h +18 -0
  1353. package/vendor/rocksdb/port/win/env_default.cc +45 -0
  1354. package/vendor/rocksdb/port/win/env_win.cc +1437 -0
  1355. package/vendor/rocksdb/port/win/env_win.h +305 -0
  1356. package/vendor/rocksdb/port/win/io_win.cc +1101 -0
  1357. package/vendor/rocksdb/port/win/io_win.h +508 -0
  1358. package/vendor/rocksdb/port/win/port_win.cc +303 -0
  1359. package/vendor/rocksdb/port/win/port_win.h +379 -0
  1360. package/vendor/rocksdb/port/win/win_jemalloc.cc +80 -0
  1361. package/vendor/rocksdb/port/win/win_logger.cc +192 -0
  1362. package/vendor/rocksdb/port/win/win_logger.h +64 -0
  1363. package/vendor/rocksdb/port/win/win_thread.cc +170 -0
  1364. package/vendor/rocksdb/port/win/win_thread.h +117 -0
  1365. package/vendor/rocksdb/port/win/xpress_win.cc +210 -0
  1366. package/vendor/rocksdb/port/win/xpress_win.h +26 -0
  1367. package/vendor/rocksdb/port/xpress.h +17 -0
  1368. package/vendor/rocksdb/rocksdb.pc.in +10 -0
  1369. package/vendor/rocksdb/src.mk +713 -0
  1370. package/vendor/rocksdb/table/adaptive/adaptive_table_factory.cc +125 -0
  1371. package/vendor/rocksdb/table/adaptive/adaptive_table_factory.h +56 -0
  1372. package/vendor/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  1373. package/vendor/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  1374. package/vendor/rocksdb/table/block_based/block.cc +1291 -0
  1375. package/vendor/rocksdb/table/block_based/block.h +921 -0
  1376. package/vendor/rocksdb/table/block_based/block_based_table_builder.cc +2027 -0
  1377. package/vendor/rocksdb/table/block_based/block_based_table_builder.h +209 -0
  1378. package/vendor/rocksdb/table/block_based/block_based_table_factory.cc +962 -0
  1379. package/vendor/rocksdb/table/block_based/block_based_table_factory.h +102 -0
  1380. package/vendor/rocksdb/table/block_based/block_based_table_iterator.cc +500 -0
  1381. package/vendor/rocksdb/table/block_based/block_based_table_iterator.h +310 -0
  1382. package/vendor/rocksdb/table/block_based/block_based_table_reader.cc +3043 -0
  1383. package/vendor/rocksdb/table/block_based/block_based_table_reader.h +745 -0
  1384. package/vendor/rocksdb/table/block_based/block_based_table_reader_impl.h +203 -0
  1385. package/vendor/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +758 -0
  1386. package/vendor/rocksdb/table/block_based/block_based_table_reader_test.cc +567 -0
  1387. package/vendor/rocksdb/table/block_based/block_builder.cc +234 -0
  1388. package/vendor/rocksdb/table/block_based/block_builder.h +104 -0
  1389. package/vendor/rocksdb/table/block_based/block_cache.cc +106 -0
  1390. package/vendor/rocksdb/table/block_based/block_cache.h +140 -0
  1391. package/vendor/rocksdb/table/block_based/block_prefetcher.cc +120 -0
  1392. package/vendor/rocksdb/table/block_based/block_prefetcher.h +72 -0
  1393. package/vendor/rocksdb/table/block_based/block_prefix_index.cc +226 -0
  1394. package/vendor/rocksdb/table/block_based/block_prefix_index.h +70 -0
  1395. package/vendor/rocksdb/table/block_based/block_test.cc +1543 -0
  1396. package/vendor/rocksdb/table/block_based/block_type.h +34 -0
  1397. package/vendor/rocksdb/table/block_based/cachable_entry.h +244 -0
  1398. package/vendor/rocksdb/table/block_based/data_block_footer.cc +59 -0
  1399. package/vendor/rocksdb/table/block_based/data_block_footer.h +25 -0
  1400. package/vendor/rocksdb/table/block_based/data_block_hash_index.cc +94 -0
  1401. package/vendor/rocksdb/table/block_based/data_block_hash_index.h +137 -0
  1402. package/vendor/rocksdb/table/block_based/data_block_hash_index_test.cc +718 -0
  1403. package/vendor/rocksdb/table/block_based/filter_block.h +183 -0
  1404. package/vendor/rocksdb/table/block_based/filter_block_reader_common.cc +163 -0
  1405. package/vendor/rocksdb/table/block_based/filter_block_reader_common.h +76 -0
  1406. package/vendor/rocksdb/table/block_based/filter_policy.cc +1966 -0
  1407. package/vendor/rocksdb/table/block_based/filter_policy_internal.h +340 -0
  1408. package/vendor/rocksdb/table/block_based/flush_block_policy.cc +132 -0
  1409. package/vendor/rocksdb/table/block_based/flush_block_policy_impl.h +40 -0
  1410. package/vendor/rocksdb/table/block_based/full_filter_block.cc +290 -0
  1411. package/vendor/rocksdb/table/block_based/full_filter_block.h +147 -0
  1412. package/vendor/rocksdb/table/block_based/full_filter_block_test.cc +323 -0
  1413. package/vendor/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  1414. package/vendor/rocksdb/table/block_based/hash_index_reader.h +49 -0
  1415. package/vendor/rocksdb/table/block_based/index_builder.cc +282 -0
  1416. package/vendor/rocksdb/table/block_based/index_builder.h +455 -0
  1417. package/vendor/rocksdb/table/block_based/index_reader_common.cc +57 -0
  1418. package/vendor/rocksdb/table/block_based/index_reader_common.h +85 -0
  1419. package/vendor/rocksdb/table/block_based/mock_block_based_table.h +62 -0
  1420. package/vendor/rocksdb/table/block_based/parsed_full_filter_block.cc +23 -0
  1421. package/vendor/rocksdb/table/block_based/parsed_full_filter_block.h +47 -0
  1422. package/vendor/rocksdb/table/block_based/partitioned_filter_block.cc +554 -0
  1423. package/vendor/rocksdb/table/block_based/partitioned_filter_block.h +182 -0
  1424. package/vendor/rocksdb/table/block_based/partitioned_filter_block_test.cc +436 -0
  1425. package/vendor/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  1426. package/vendor/rocksdb/table/block_based/partitioned_index_iterator.h +160 -0
  1427. package/vendor/rocksdb/table/block_based/partitioned_index_reader.cc +224 -0
  1428. package/vendor/rocksdb/table/block_based/partitioned_index_reader.h +56 -0
  1429. package/vendor/rocksdb/table/block_based/reader_common.cc +52 -0
  1430. package/vendor/rocksdb/table/block_based/reader_common.h +34 -0
  1431. package/vendor/rocksdb/table/block_based/uncompression_dict_reader.cc +126 -0
  1432. package/vendor/rocksdb/table/block_based/uncompression_dict_reader.h +61 -0
  1433. package/vendor/rocksdb/table/block_fetcher.cc +405 -0
  1434. package/vendor/rocksdb/table/block_fetcher.h +142 -0
  1435. package/vendor/rocksdb/table/block_fetcher_test.cc +520 -0
  1436. package/vendor/rocksdb/table/cleanable_test.cc +390 -0
  1437. package/vendor/rocksdb/table/compaction_merging_iterator.cc +370 -0
  1438. package/vendor/rocksdb/table/compaction_merging_iterator.h +44 -0
  1439. package/vendor/rocksdb/table/cuckoo/cuckoo_table_builder.cc +551 -0
  1440. package/vendor/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  1441. package/vendor/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +631 -0
  1442. package/vendor/rocksdb/table/cuckoo/cuckoo_table_factory.cc +100 -0
  1443. package/vendor/rocksdb/table/cuckoo/cuckoo_table_factory.h +80 -0
  1444. package/vendor/rocksdb/table/cuckoo/cuckoo_table_reader.cc +412 -0
  1445. package/vendor/rocksdb/table/cuckoo/cuckoo_table_reader.h +100 -0
  1446. package/vendor/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +574 -0
  1447. package/vendor/rocksdb/table/format.cc +573 -0
  1448. package/vendor/rocksdb/table/format.h +378 -0
  1449. package/vendor/rocksdb/table/get_context.cc +616 -0
  1450. package/vendor/rocksdb/table/get_context.h +245 -0
  1451. package/vendor/rocksdb/table/internal_iterator.h +224 -0
  1452. package/vendor/rocksdb/table/iter_heap.h +44 -0
  1453. package/vendor/rocksdb/table/iterator.cc +130 -0
  1454. package/vendor/rocksdb/table/iterator_wrapper.h +190 -0
  1455. package/vendor/rocksdb/table/merger_test.cc +182 -0
  1456. package/vendor/rocksdb/table/merging_iterator.cc +1725 -0
  1457. package/vendor/rocksdb/table/merging_iterator.h +97 -0
  1458. package/vendor/rocksdb/table/meta_blocks.cc +564 -0
  1459. package/vendor/rocksdb/table/meta_blocks.h +172 -0
  1460. package/vendor/rocksdb/table/mock_table.cc +346 -0
  1461. package/vendor/rocksdb/table/mock_table.h +94 -0
  1462. package/vendor/rocksdb/table/multiget_context.h +405 -0
  1463. package/vendor/rocksdb/table/persistent_cache_helper.cc +111 -0
  1464. package/vendor/rocksdb/table/persistent_cache_helper.h +46 -0
  1465. package/vendor/rocksdb/table/persistent_cache_options.h +34 -0
  1466. package/vendor/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  1467. package/vendor/rocksdb/table/plain/plain_table_bloom.h +132 -0
  1468. package/vendor/rocksdb/table/plain/plain_table_builder.cc +335 -0
  1469. package/vendor/rocksdb/table/plain/plain_table_builder.h +152 -0
  1470. package/vendor/rocksdb/table/plain/plain_table_factory.cc +296 -0
  1471. package/vendor/rocksdb/table/plain/plain_table_factory.h +180 -0
  1472. package/vendor/rocksdb/table/plain/plain_table_index.cc +211 -0
  1473. package/vendor/rocksdb/table/plain/plain_table_index.h +246 -0
  1474. package/vendor/rocksdb/table/plain/plain_table_key_coding.cc +507 -0
  1475. package/vendor/rocksdb/table/plain/plain_table_key_coding.h +199 -0
  1476. package/vendor/rocksdb/table/plain/plain_table_reader.cc +771 -0
  1477. package/vendor/rocksdb/table/plain/plain_table_reader.h +243 -0
  1478. package/vendor/rocksdb/table/scoped_arena_iterator.h +57 -0
  1479. package/vendor/rocksdb/table/sst_file_dumper.cc +520 -0
  1480. package/vendor/rocksdb/table/sst_file_dumper.h +99 -0
  1481. package/vendor/rocksdb/table/sst_file_reader.cc +101 -0
  1482. package/vendor/rocksdb/table/sst_file_reader_test.cc +423 -0
  1483. package/vendor/rocksdb/table/sst_file_writer.cc +436 -0
  1484. package/vendor/rocksdb/table/sst_file_writer_collectors.h +95 -0
  1485. package/vendor/rocksdb/table/table_builder.h +228 -0
  1486. package/vendor/rocksdb/table/table_factory.cc +52 -0
  1487. package/vendor/rocksdb/table/table_properties.cc +351 -0
  1488. package/vendor/rocksdb/table/table_properties_internal.h +14 -0
  1489. package/vendor/rocksdb/table/table_reader.h +187 -0
  1490. package/vendor/rocksdb/table/table_reader_bench.cc +339 -0
  1491. package/vendor/rocksdb/table/table_test.cc +5882 -0
  1492. package/vendor/rocksdb/table/two_level_iterator.cc +220 -0
  1493. package/vendor/rocksdb/table/two_level_iterator.h +43 -0
  1494. package/vendor/rocksdb/table/unique_id.cc +223 -0
  1495. package/vendor/rocksdb/table/unique_id_impl.h +93 -0
  1496. package/vendor/rocksdb/test_util/mock_time_env.cc +38 -0
  1497. package/vendor/rocksdb/test_util/mock_time_env.h +78 -0
  1498. package/vendor/rocksdb/test_util/secondary_cache_test_util.cc +96 -0
  1499. package/vendor/rocksdb/test_util/secondary_cache_test_util.h +119 -0
  1500. package/vendor/rocksdb/test_util/sync_point.cc +82 -0
  1501. package/vendor/rocksdb/test_util/sync_point.h +180 -0
  1502. package/vendor/rocksdb/test_util/sync_point_impl.cc +152 -0
  1503. package/vendor/rocksdb/test_util/sync_point_impl.h +96 -0
  1504. package/vendor/rocksdb/test_util/testharness.cc +107 -0
  1505. package/vendor/rocksdb/test_util/testharness.h +124 -0
  1506. package/vendor/rocksdb/test_util/testutil.cc +722 -0
  1507. package/vendor/rocksdb/test_util/testutil.h +860 -0
  1508. package/vendor/rocksdb/test_util/testutil_test.cc +43 -0
  1509. package/vendor/rocksdb/test_util/transaction_test_util.cc +400 -0
  1510. package/vendor/rocksdb/test_util/transaction_test_util.h +147 -0
  1511. package/vendor/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  1512. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/CMakeLists.txt +4 -0
  1513. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc +11394 -0
  1514. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/gtest.h +22115 -0
  1515. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/gtest_main.cc +37 -0
  1516. package/vendor/rocksdb/thirdparty.inc +268 -0
  1517. package/vendor/rocksdb/tools/CMakeLists.txt +30 -0
  1518. package/vendor/rocksdb/tools/Dockerfile +5 -0
  1519. package/vendor/rocksdb/tools/advisor/README.md +96 -0
  1520. package/vendor/rocksdb/tools/advisor/advisor/__init__.py +0 -0
  1521. package/vendor/rocksdb/tools/advisor/advisor/bench_runner.py +39 -0
  1522. package/vendor/rocksdb/tools/advisor/advisor/config_optimizer_example.py +140 -0
  1523. package/vendor/rocksdb/tools/advisor/advisor/db_bench_runner.py +237 -0
  1524. package/vendor/rocksdb/tools/advisor/advisor/db_config_optimizer.py +293 -0
  1525. package/vendor/rocksdb/tools/advisor/advisor/db_log_parser.py +134 -0
  1526. package/vendor/rocksdb/tools/advisor/advisor/db_options_parser.py +348 -0
  1527. package/vendor/rocksdb/tools/advisor/advisor/db_stats_fetcher.py +346 -0
  1528. package/vendor/rocksdb/tools/advisor/advisor/db_timeseries_parser.py +203 -0
  1529. package/vendor/rocksdb/tools/advisor/advisor/ini_parser.py +76 -0
  1530. package/vendor/rocksdb/tools/advisor/advisor/rule_parser.py +510 -0
  1531. package/vendor/rocksdb/tools/advisor/advisor/rule_parser_example.py +98 -0
  1532. package/vendor/rocksdb/tools/advisor/advisor/rules.ini +214 -0
  1533. package/vendor/rocksdb/tools/advisor/test/__init__.py +0 -0
  1534. package/vendor/rocksdb/tools/advisor/test/input_files/LOG-0 +30 -0
  1535. package/vendor/rocksdb/tools/advisor/test/input_files/LOG-1 +25 -0
  1536. package/vendor/rocksdb/tools/advisor/test/input_files/OPTIONS-000005 +49 -0
  1537. package/vendor/rocksdb/tools/advisor/test/input_files/log_stats_parser_keys_ts +3 -0
  1538. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err1.ini +56 -0
  1539. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err2.ini +15 -0
  1540. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err3.ini +15 -0
  1541. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err4.ini +15 -0
  1542. package/vendor/rocksdb/tools/advisor/test/input_files/test_rules.ini +47 -0
  1543. package/vendor/rocksdb/tools/advisor/test/input_files/triggered_rules.ini +83 -0
  1544. package/vendor/rocksdb/tools/advisor/test/test_db_bench_runner.py +141 -0
  1545. package/vendor/rocksdb/tools/advisor/test/test_db_log_parser.py +96 -0
  1546. package/vendor/rocksdb/tools/advisor/test/test_db_options_parser.py +214 -0
  1547. package/vendor/rocksdb/tools/advisor/test/test_db_stats_fetcher.py +121 -0
  1548. package/vendor/rocksdb/tools/advisor/test/test_rule_parser.py +226 -0
  1549. package/vendor/rocksdb/tools/analyze_txn_stress_test.sh +77 -0
  1550. package/vendor/rocksdb/tools/auto_sanity_test.sh +93 -0
  1551. package/vendor/rocksdb/tools/backup_db.sh +15 -0
  1552. package/vendor/rocksdb/tools/benchmark.sh +1173 -0
  1553. package/vendor/rocksdb/tools/benchmark_ci.py +182 -0
  1554. package/vendor/rocksdb/tools/benchmark_compare.sh +342 -0
  1555. package/vendor/rocksdb/tools/benchmark_leveldb.sh +187 -0
  1556. package/vendor/rocksdb/tools/blob_dump.cc +103 -0
  1557. package/vendor/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  1558. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  1559. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  1560. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  1561. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2314 -0
  1562. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +397 -0
  1563. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +729 -0
  1564. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +791 -0
  1565. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +17 -0
  1566. package/vendor/rocksdb/tools/check_all_python.py +22 -0
  1567. package/vendor/rocksdb/tools/check_format_compatible.sh +379 -0
  1568. package/vendor/rocksdb/tools/db_bench.cc +21 -0
  1569. package/vendor/rocksdb/tools/db_bench_tool.cc +8604 -0
  1570. package/vendor/rocksdb/tools/db_bench_tool_test.cc +342 -0
  1571. package/vendor/rocksdb/tools/db_crashtest.py +1018 -0
  1572. package/vendor/rocksdb/tools/db_repl_stress.cc +132 -0
  1573. package/vendor/rocksdb/tools/db_sanity_test.cc +296 -0
  1574. package/vendor/rocksdb/tools/dbench_monitor +102 -0
  1575. package/vendor/rocksdb/tools/dump/db_dump_tool.cc +258 -0
  1576. package/vendor/rocksdb/tools/dump/rocksdb_dump.cc +60 -0
  1577. package/vendor/rocksdb/tools/dump/rocksdb_undump.cc +59 -0
  1578. package/vendor/rocksdb/tools/generate_random_db.sh +31 -0
  1579. package/vendor/rocksdb/tools/ingest_external_sst.sh +18 -0
  1580. package/vendor/rocksdb/tools/io_tracer_parser.cc +17 -0
  1581. package/vendor/rocksdb/tools/io_tracer_parser_test.cc +182 -0
  1582. package/vendor/rocksdb/tools/io_tracer_parser_tool.cc +142 -0
  1583. package/vendor/rocksdb/tools/io_tracer_parser_tool.h +38 -0
  1584. package/vendor/rocksdb/tools/ldb.cc +13 -0
  1585. package/vendor/rocksdb/tools/ldb_cmd.cc +4263 -0
  1586. package/vendor/rocksdb/tools/ldb_cmd_impl.h +744 -0
  1587. package/vendor/rocksdb/tools/ldb_cmd_test.cc +1216 -0
  1588. package/vendor/rocksdb/tools/ldb_test.py +955 -0
  1589. package/vendor/rocksdb/tools/ldb_tool.cc +182 -0
  1590. package/vendor/rocksdb/tools/pflag +217 -0
  1591. package/vendor/rocksdb/tools/reduce_levels_test.cc +212 -0
  1592. package/vendor/rocksdb/tools/regression_test.sh +525 -0
  1593. package/vendor/rocksdb/tools/restore_db.sh +15 -0
  1594. package/vendor/rocksdb/tools/rocksdb_dump_test.sh +9 -0
  1595. package/vendor/rocksdb/tools/run_blob_bench.sh +223 -0
  1596. package/vendor/rocksdb/tools/run_flash_bench.sh +359 -0
  1597. package/vendor/rocksdb/tools/run_leveldb.sh +175 -0
  1598. package/vendor/rocksdb/tools/sample-dump.dmp +0 -0
  1599. package/vendor/rocksdb/tools/simulated_hybrid_file_system.cc +243 -0
  1600. package/vendor/rocksdb/tools/simulated_hybrid_file_system.h +124 -0
  1601. package/vendor/rocksdb/tools/sst_dump.cc +12 -0
  1602. package/vendor/rocksdb/tools/sst_dump_test.cc +471 -0
  1603. package/vendor/rocksdb/tools/sst_dump_tool.cc +582 -0
  1604. package/vendor/rocksdb/tools/trace_analyzer.cc +17 -0
  1605. package/vendor/rocksdb/tools/trace_analyzer_test.cc +880 -0
  1606. package/vendor/rocksdb/tools/trace_analyzer_tool.cc +1929 -0
  1607. package/vendor/rocksdb/tools/trace_analyzer_tool.h +329 -0
  1608. package/vendor/rocksdb/tools/verify_random_db.sh +41 -0
  1609. package/vendor/rocksdb/tools/write_external_sst.sh +26 -0
  1610. package/vendor/rocksdb/tools/write_stress.cc +305 -0
  1611. package/vendor/rocksdb/tools/write_stress_runner.py +83 -0
  1612. package/vendor/rocksdb/trace_replay/block_cache_tracer.cc +509 -0
  1613. package/vendor/rocksdb/trace_replay/block_cache_tracer.h +239 -0
  1614. package/vendor/rocksdb/trace_replay/block_cache_tracer_test.cc +421 -0
  1615. package/vendor/rocksdb/trace_replay/io_tracer.cc +303 -0
  1616. package/vendor/rocksdb/trace_replay/io_tracer.h +185 -0
  1617. package/vendor/rocksdb/trace_replay/io_tracer_test.cc +353 -0
  1618. package/vendor/rocksdb/trace_replay/trace_record.cc +206 -0
  1619. package/vendor/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  1620. package/vendor/rocksdb/trace_replay/trace_record_handler.h +46 -0
  1621. package/vendor/rocksdb/trace_replay/trace_record_result.cc +146 -0
  1622. package/vendor/rocksdb/trace_replay/trace_replay.cc +622 -0
  1623. package/vendor/rocksdb/trace_replay/trace_replay.h +183 -0
  1624. package/vendor/rocksdb/util/aligned_buffer.h +235 -0
  1625. package/vendor/rocksdb/util/async_file_reader.cc +81 -0
  1626. package/vendor/rocksdb/util/async_file_reader.h +144 -0
  1627. package/vendor/rocksdb/util/autovector.h +393 -0
  1628. package/vendor/rocksdb/util/autovector_test.cc +324 -0
  1629. package/vendor/rocksdb/util/bloom_impl.h +489 -0
  1630. package/vendor/rocksdb/util/bloom_test.cc +1175 -0
  1631. package/vendor/rocksdb/util/build_version.cc.in +79 -0
  1632. package/vendor/rocksdb/util/cast_util.h +42 -0
  1633. package/vendor/rocksdb/util/channel.h +69 -0
  1634. package/vendor/rocksdb/util/cleanable.cc +181 -0
  1635. package/vendor/rocksdb/util/coding.cc +90 -0
  1636. package/vendor/rocksdb/util/coding.h +389 -0
  1637. package/vendor/rocksdb/util/coding_lean.h +101 -0
  1638. package/vendor/rocksdb/util/coding_test.cc +217 -0
  1639. package/vendor/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  1640. package/vendor/rocksdb/util/comparator.cc +383 -0
  1641. package/vendor/rocksdb/util/compression.cc +122 -0
  1642. package/vendor/rocksdb/util/compression.h +1795 -0
  1643. package/vendor/rocksdb/util/compression_context_cache.cc +106 -0
  1644. package/vendor/rocksdb/util/compression_context_cache.h +47 -0
  1645. package/vendor/rocksdb/util/concurrent_task_limiter_impl.cc +64 -0
  1646. package/vendor/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  1647. package/vendor/rocksdb/util/core_local.h +84 -0
  1648. package/vendor/rocksdb/util/coro_utils.h +112 -0
  1649. package/vendor/rocksdb/util/crc32c.cc +1292 -0
  1650. package/vendor/rocksdb/util/crc32c.h +56 -0
  1651. package/vendor/rocksdb/util/crc32c_arm64.cc +213 -0
  1652. package/vendor/rocksdb/util/crc32c_arm64.h +52 -0
  1653. package/vendor/rocksdb/util/crc32c_ppc.c +94 -0
  1654. package/vendor/rocksdb/util/crc32c_ppc.h +22 -0
  1655. package/vendor/rocksdb/util/crc32c_ppc_asm.S +756 -0
  1656. package/vendor/rocksdb/util/crc32c_ppc_constants.h +900 -0
  1657. package/vendor/rocksdb/util/crc32c_test.cc +213 -0
  1658. package/vendor/rocksdb/util/data_structure.cc +18 -0
  1659. package/vendor/rocksdb/util/defer.h +82 -0
  1660. package/vendor/rocksdb/util/defer_test.cc +51 -0
  1661. package/vendor/rocksdb/util/distributed_mutex.h +50 -0
  1662. package/vendor/rocksdb/util/duplicate_detector.h +69 -0
  1663. package/vendor/rocksdb/util/dynamic_bloom.cc +70 -0
  1664. package/vendor/rocksdb/util/dynamic_bloom.h +214 -0
  1665. package/vendor/rocksdb/util/dynamic_bloom_test.cc +325 -0
  1666. package/vendor/rocksdb/util/fastrange.h +114 -0
  1667. package/vendor/rocksdb/util/file_checksum_helper.cc +170 -0
  1668. package/vendor/rocksdb/util/file_checksum_helper.h +101 -0
  1669. package/vendor/rocksdb/util/file_reader_writer_test.cc +1058 -0
  1670. package/vendor/rocksdb/util/filelock_test.cc +148 -0
  1671. package/vendor/rocksdb/util/filter_bench.cc +840 -0
  1672. package/vendor/rocksdb/util/gflags_compat.h +29 -0
  1673. package/vendor/rocksdb/util/hash.cc +201 -0
  1674. package/vendor/rocksdb/util/hash.h +137 -0
  1675. package/vendor/rocksdb/util/hash128.h +26 -0
  1676. package/vendor/rocksdb/util/hash_containers.h +51 -0
  1677. package/vendor/rocksdb/util/hash_map.h +67 -0
  1678. package/vendor/rocksdb/util/hash_test.cc +853 -0
  1679. package/vendor/rocksdb/util/heap.h +174 -0
  1680. package/vendor/rocksdb/util/heap_test.cc +131 -0
  1681. package/vendor/rocksdb/util/kv_map.h +33 -0
  1682. package/vendor/rocksdb/util/log_write_bench.cc +88 -0
  1683. package/vendor/rocksdb/util/math.h +299 -0
  1684. package/vendor/rocksdb/util/math128.h +316 -0
  1685. package/vendor/rocksdb/util/murmurhash.cc +196 -0
  1686. package/vendor/rocksdb/util/murmurhash.h +43 -0
  1687. package/vendor/rocksdb/util/mutexlock.h +181 -0
  1688. package/vendor/rocksdb/util/ppc-opcode.h +27 -0
  1689. package/vendor/rocksdb/util/random.cc +63 -0
  1690. package/vendor/rocksdb/util/random.h +190 -0
  1691. package/vendor/rocksdb/util/random_test.cc +107 -0
  1692. package/vendor/rocksdb/util/rate_limiter.cc +376 -0
  1693. package/vendor/rocksdb/util/rate_limiter_impl.h +146 -0
  1694. package/vendor/rocksdb/util/rate_limiter_test.cc +520 -0
  1695. package/vendor/rocksdb/util/repeatable_thread.h +149 -0
  1696. package/vendor/rocksdb/util/repeatable_thread_test.cc +111 -0
  1697. package/vendor/rocksdb/util/ribbon_alg.h +1225 -0
  1698. package/vendor/rocksdb/util/ribbon_config.cc +506 -0
  1699. package/vendor/rocksdb/util/ribbon_config.h +182 -0
  1700. package/vendor/rocksdb/util/ribbon_impl.h +1137 -0
  1701. package/vendor/rocksdb/util/ribbon_test.cc +1308 -0
  1702. package/vendor/rocksdb/util/set_comparator.h +24 -0
  1703. package/vendor/rocksdb/util/single_thread_executor.h +56 -0
  1704. package/vendor/rocksdb/util/slice.cc +367 -0
  1705. package/vendor/rocksdb/util/slice_test.cc +252 -0
  1706. package/vendor/rocksdb/util/slice_transform_test.cc +159 -0
  1707. package/vendor/rocksdb/util/status.cc +162 -0
  1708. package/vendor/rocksdb/util/stderr_logger.cc +30 -0
  1709. package/vendor/rocksdb/util/stderr_logger.h +31 -0
  1710. package/vendor/rocksdb/util/stop_watch.h +136 -0
  1711. package/vendor/rocksdb/util/string_util.cc +502 -0
  1712. package/vendor/rocksdb/util/string_util.h +175 -0
  1713. package/vendor/rocksdb/util/thread_guard.h +41 -0
  1714. package/vendor/rocksdb/util/thread_list_test.cc +362 -0
  1715. package/vendor/rocksdb/util/thread_local.cc +521 -0
  1716. package/vendor/rocksdb/util/thread_local.h +100 -0
  1717. package/vendor/rocksdb/util/thread_local_test.cc +578 -0
  1718. package/vendor/rocksdb/util/thread_operation.h +113 -0
  1719. package/vendor/rocksdb/util/threadpool_imp.cc +551 -0
  1720. package/vendor/rocksdb/util/threadpool_imp.h +120 -0
  1721. package/vendor/rocksdb/util/timer.h +340 -0
  1722. package/vendor/rocksdb/util/timer_queue.h +231 -0
  1723. package/vendor/rocksdb/util/timer_queue_test.cc +73 -0
  1724. package/vendor/rocksdb/util/timer_test.cc +402 -0
  1725. package/vendor/rocksdb/util/udt_util.h +77 -0
  1726. package/vendor/rocksdb/util/user_comparator_wrapper.h +64 -0
  1727. package/vendor/rocksdb/util/vector_iterator.h +118 -0
  1728. package/vendor/rocksdb/util/work_queue.h +150 -0
  1729. package/vendor/rocksdb/util/work_queue_test.cc +272 -0
  1730. package/vendor/rocksdb/util/xxhash.cc +48 -0
  1731. package/vendor/rocksdb/util/xxhash.h +6360 -0
  1732. package/vendor/rocksdb/util/xxph3.h +1764 -0
  1733. package/vendor/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  1734. package/vendor/rocksdb/utilities/agg_merge/agg_merge_impl.h +49 -0
  1735. package/vendor/rocksdb/utilities/agg_merge/agg_merge_test.cc +135 -0
  1736. package/vendor/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  1737. package/vendor/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  1738. package/vendor/rocksdb/utilities/backup/backup_engine.cc +3355 -0
  1739. package/vendor/rocksdb/utilities/backup/backup_engine_impl.h +34 -0
  1740. package/vendor/rocksdb/utilities/backup/backup_engine_test.cc +4414 -0
  1741. package/vendor/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  1742. package/vendor/rocksdb/utilities/blob_db/blob_compaction_filter.h +202 -0
  1743. package/vendor/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  1744. package/vendor/rocksdb/utilities/blob_db/blob_db.h +264 -0
  1745. package/vendor/rocksdb/utilities/blob_db/blob_db_gc_stats.h +54 -0
  1746. package/vendor/rocksdb/utilities/blob_db/blob_db_impl.cc +2185 -0
  1747. package/vendor/rocksdb/utilities/blob_db/blob_db_impl.h +501 -0
  1748. package/vendor/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +111 -0
  1749. package/vendor/rocksdb/utilities/blob_db/blob_db_iterator.h +148 -0
  1750. package/vendor/rocksdb/utilities/blob_db/blob_db_listener.h +69 -0
  1751. package/vendor/rocksdb/utilities/blob_db/blob_db_test.cc +2430 -0
  1752. package/vendor/rocksdb/utilities/blob_db/blob_dump_tool.cc +280 -0
  1753. package/vendor/rocksdb/utilities/blob_db/blob_dump_tool.h +56 -0
  1754. package/vendor/rocksdb/utilities/blob_db/blob_file.cc +316 -0
  1755. package/vendor/rocksdb/utilities/blob_db/blob_file.h +244 -0
  1756. package/vendor/rocksdb/utilities/cache_dump_load.cc +67 -0
  1757. package/vendor/rocksdb/utilities/cache_dump_load_impl.cc +369 -0
  1758. package/vendor/rocksdb/utilities/cache_dump_load_impl.h +356 -0
  1759. package/vendor/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +106 -0
  1760. package/vendor/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +57 -0
  1761. package/vendor/rocksdb/utilities/cassandra/cassandra_format_test.cc +377 -0
  1762. package/vendor/rocksdb/utilities/cassandra/cassandra_functional_test.cc +444 -0
  1763. package/vendor/rocksdb/utilities/cassandra/cassandra_options.h +41 -0
  1764. package/vendor/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +98 -0
  1765. package/vendor/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +164 -0
  1766. package/vendor/rocksdb/utilities/cassandra/format.cc +367 -0
  1767. package/vendor/rocksdb/utilities/cassandra/format.h +183 -0
  1768. package/vendor/rocksdb/utilities/cassandra/merge_operator.cc +80 -0
  1769. package/vendor/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  1770. package/vendor/rocksdb/utilities/cassandra/serialize.h +81 -0
  1771. package/vendor/rocksdb/utilities/cassandra/test_utils.cc +69 -0
  1772. package/vendor/rocksdb/utilities/cassandra/test_utils.h +42 -0
  1773. package/vendor/rocksdb/utilities/checkpoint/checkpoint_impl.cc +470 -0
  1774. package/vendor/rocksdb/utilities/checkpoint/checkpoint_impl.h +64 -0
  1775. package/vendor/rocksdb/utilities/checkpoint/checkpoint_test.cc +988 -0
  1776. package/vendor/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +41 -0
  1777. package/vendor/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +24 -0
  1778. package/vendor/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +26 -0
  1779. package/vendor/rocksdb/utilities/compaction_filters.cc +52 -0
  1780. package/vendor/rocksdb/utilities/convenience/info_log_finder.cc +26 -0
  1781. package/vendor/rocksdb/utilities/counted_fs.cc +379 -0
  1782. package/vendor/rocksdb/utilities/counted_fs.h +158 -0
  1783. package/vendor/rocksdb/utilities/debug.cc +118 -0
  1784. package/vendor/rocksdb/utilities/env_mirror.cc +273 -0
  1785. package/vendor/rocksdb/utilities/env_mirror_test.cc +216 -0
  1786. package/vendor/rocksdb/utilities/env_timed.cc +181 -0
  1787. package/vendor/rocksdb/utilities/env_timed.h +95 -0
  1788. package/vendor/rocksdb/utilities/env_timed_test.cc +34 -0
  1789. package/vendor/rocksdb/utilities/fault_injection_env.cc +555 -0
  1790. package/vendor/rocksdb/utilities/fault_injection_env.h +258 -0
  1791. package/vendor/rocksdb/utilities/fault_injection_fs.cc +1071 -0
  1792. package/vendor/rocksdb/utilities/fault_injection_fs.h +593 -0
  1793. package/vendor/rocksdb/utilities/fault_injection_secondary_cache.cc +136 -0
  1794. package/vendor/rocksdb/utilities/fault_injection_secondary_cache.h +109 -0
  1795. package/vendor/rocksdb/utilities/leveldb_options/leveldb_options.cc +57 -0
  1796. package/vendor/rocksdb/utilities/memory/memory_test.cc +269 -0
  1797. package/vendor/rocksdb/utilities/memory/memory_util.cc +50 -0
  1798. package/vendor/rocksdb/utilities/memory_allocators.h +103 -0
  1799. package/vendor/rocksdb/utilities/merge_operators/bytesxor.cc +57 -0
  1800. package/vendor/rocksdb/utilities/merge_operators/bytesxor.h +40 -0
  1801. package/vendor/rocksdb/utilities/merge_operators/max.cc +64 -0
  1802. package/vendor/rocksdb/utilities/merge_operators/max_operator.h +35 -0
  1803. package/vendor/rocksdb/utilities/merge_operators/put.cc +74 -0
  1804. package/vendor/rocksdb/utilities/merge_operators/put_operator.h +56 -0
  1805. package/vendor/rocksdb/utilities/merge_operators/sortlist.cc +95 -0
  1806. package/vendor/rocksdb/utilities/merge_operators/sortlist.h +42 -0
  1807. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend.cc +76 -0
  1808. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend.h +32 -0
  1809. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +130 -0
  1810. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend2.h +52 -0
  1811. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +636 -0
  1812. package/vendor/rocksdb/utilities/merge_operators/uint64add.cc +56 -0
  1813. package/vendor/rocksdb/utilities/merge_operators/uint64add.h +35 -0
  1814. package/vendor/rocksdb/utilities/merge_operators.cc +115 -0
  1815. package/vendor/rocksdb/utilities/merge_operators.h +36 -0
  1816. package/vendor/rocksdb/utilities/object_registry.cc +381 -0
  1817. package/vendor/rocksdb/utilities/object_registry_test.cc +862 -0
  1818. package/vendor/rocksdb/utilities/option_change_migration/option_change_migration.cc +176 -0
  1819. package/vendor/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +548 -0
  1820. package/vendor/rocksdb/utilities/options/options_util.cc +117 -0
  1821. package/vendor/rocksdb/utilities/options/options_util_test.cc +782 -0
  1822. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier.cc +420 -0
  1823. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier.h +154 -0
  1824. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +608 -0
  1825. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +291 -0
  1826. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  1827. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +84 -0
  1828. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +122 -0
  1829. package/vendor/rocksdb/utilities/persistent_cache/hash_table.h +237 -0
  1830. package/vendor/rocksdb/utilities/persistent_cache/hash_table_bench.cc +310 -0
  1831. package/vendor/rocksdb/utilities/persistent_cache/hash_table_evictable.h +166 -0
  1832. package/vendor/rocksdb/utilities/persistent_cache/hash_table_test.cc +161 -0
  1833. package/vendor/rocksdb/utilities/persistent_cache/lrulist.h +172 -0
  1834. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +355 -0
  1835. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +413 -0
  1836. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_test.h +284 -0
  1837. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +165 -0
  1838. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +340 -0
  1839. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  1840. package/vendor/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +138 -0
  1841. package/vendor/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +139 -0
  1842. package/vendor/rocksdb/utilities/simulator_cache/cache_simulator.cc +287 -0
  1843. package/vendor/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  1844. package/vendor/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +497 -0
  1845. package/vendor/rocksdb/utilities/simulator_cache/sim_cache.cc +372 -0
  1846. package/vendor/rocksdb/utilities/simulator_cache/sim_cache_test.cc +226 -0
  1847. package/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +221 -0
  1848. package/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +68 -0
  1849. package/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +238 -0
  1850. package/vendor/rocksdb/utilities/trace/file_trace_reader_writer.cc +133 -0
  1851. package/vendor/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  1852. package/vendor/rocksdb/utilities/trace/replayer_impl.cc +314 -0
  1853. package/vendor/rocksdb/utilities/trace/replayer_impl.h +84 -0
  1854. package/vendor/rocksdb/utilities/transactions/lock/lock_manager.cc +27 -0
  1855. package/vendor/rocksdb/utilities/transactions/lock/lock_manager.h +80 -0
  1856. package/vendor/rocksdb/utilities/transactions/lock/lock_tracker.h +207 -0
  1857. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +719 -0
  1858. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +222 -0
  1859. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +170 -0
  1860. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +324 -0
  1861. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +255 -0
  1862. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +97 -0
  1863. package/vendor/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +34 -0
  1864. package/vendor/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +448 -0
  1865. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  1866. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  1867. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  1868. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
  1869. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  1870. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  1871. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  1872. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +137 -0
  1873. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  1874. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +220 -0
  1875. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  1876. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  1877. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +255 -0
  1878. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1021 -0
  1879. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +580 -0
  1880. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +525 -0
  1881. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +263 -0
  1882. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  1883. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +518 -0
  1884. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  1885. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +118 -0
  1886. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  1887. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +211 -0
  1888. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  1889. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  1890. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  1891. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  1892. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +83 -0
  1893. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1894. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1895. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1896. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1897. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +197 -0
  1898. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1899. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +130 -0
  1900. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +151 -0
  1901. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1902. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1903. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +199 -0
  1904. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1905. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1906. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1907. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1908. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1909. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +501 -0
  1910. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +135 -0
  1911. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +154 -0
  1912. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1913. package/vendor/rocksdb/utilities/transactions/optimistic_transaction.cc +194 -0
  1914. package/vendor/rocksdb/utilities/transactions/optimistic_transaction.h +99 -0
  1915. package/vendor/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +109 -0
  1916. package/vendor/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +86 -0
  1917. package/vendor/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1479 -0
  1918. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction.cc +1177 -0
  1919. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction.h +311 -0
  1920. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +780 -0
  1921. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.h +316 -0
  1922. package/vendor/rocksdb/utilities/transactions/snapshot_checker.cc +37 -0
  1923. package/vendor/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +457 -0
  1924. package/vendor/rocksdb/utilities/transactions/transaction_base.cc +757 -0
  1925. package/vendor/rocksdb/utilities/transactions/transaction_base.h +382 -0
  1926. package/vendor/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +133 -0
  1927. package/vendor/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +24 -0
  1928. package/vendor/rocksdb/utilities/transactions/transaction_test.cc +6751 -0
  1929. package/vendor/rocksdb/utilities/transactions/transaction_test.h +578 -0
  1930. package/vendor/rocksdb/utilities/transactions/transaction_util.cc +204 -0
  1931. package/vendor/rocksdb/utilities/transactions/transaction_util.h +83 -0
  1932. package/vendor/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +578 -0
  1933. package/vendor/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +4066 -0
  1934. package/vendor/rocksdb/utilities/transactions/write_prepared_txn.cc +515 -0
  1935. package/vendor/rocksdb/utilities/transactions/write_prepared_txn.h +117 -0
  1936. package/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.cc +1038 -0
  1937. package/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.h +1123 -0
  1938. package/vendor/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +779 -0
  1939. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn.cc +1056 -0
  1940. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn.h +339 -0
  1941. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +476 -0
  1942. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.h +106 -0
  1943. package/vendor/rocksdb/utilities/ttl/db_ttl_impl.cc +617 -0
  1944. package/vendor/rocksdb/utilities/ttl/db_ttl_impl.h +243 -0
  1945. package/vendor/rocksdb/utilities/ttl/ttl_test.cc +913 -0
  1946. package/vendor/rocksdb/utilities/util_merge_operators_test.cc +100 -0
  1947. package/vendor/rocksdb/utilities/wal_filter.cc +22 -0
  1948. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +694 -0
  1949. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +742 -0
  1950. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +342 -0
  1951. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +2409 -0
@@ -0,0 +1,3957 @@
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
+ // This file implements the "bridge" between Java and C++ and enables
7
+ // calling c++ ROCKSDB_NAMESPACE::DB methods from Java side.
8
+
9
+ #include <jni.h>
10
+ #include <stdio.h>
11
+ #include <stdlib.h>
12
+
13
+ #include <algorithm>
14
+ #include <functional>
15
+ #include <memory>
16
+ #include <string>
17
+ #include <tuple>
18
+ #include <vector>
19
+
20
+ #include "include/org_rocksdb_RocksDB.h"
21
+ #include "rocksdb/cache.h"
22
+ #include "rocksdb/convenience.h"
23
+ #include "rocksdb/db.h"
24
+ #include "rocksdb/options.h"
25
+ #include "rocksdb/types.h"
26
+ #include "rocksdb/version.h"
27
+ #include "rocksjni/cplusplus_to_java_convert.h"
28
+ #include "rocksjni/portal.h"
29
+
30
+ #ifdef min
31
+ #undef min
32
+ #endif
33
+
34
+ jlong rocksdb_open_helper(JNIEnv* env, jlong jopt_handle, jstring jdb_path,
35
+ std::function<ROCKSDB_NAMESPACE::Status(
36
+ const ROCKSDB_NAMESPACE::Options&,
37
+ const std::string&, ROCKSDB_NAMESPACE::DB**)>
38
+ open_fn) {
39
+ const char* db_path = env->GetStringUTFChars(jdb_path, nullptr);
40
+ if (db_path == nullptr) {
41
+ // exception thrown: OutOfMemoryError
42
+ return 0;
43
+ }
44
+
45
+ auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::Options*>(jopt_handle);
46
+ ROCKSDB_NAMESPACE::DB* db = nullptr;
47
+ ROCKSDB_NAMESPACE::Status s = open_fn(*opt, db_path, &db);
48
+
49
+ env->ReleaseStringUTFChars(jdb_path, db_path);
50
+
51
+ if (s.ok()) {
52
+ return GET_CPLUSPLUS_POINTER(db);
53
+ } else {
54
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
55
+ return 0;
56
+ }
57
+ }
58
+
59
+ /*
60
+ * Class: org_rocksdb_RocksDB
61
+ * Method: open
62
+ * Signature: (JLjava/lang/String;)J
63
+ */
64
+ jlong Java_org_rocksdb_RocksDB_open__JLjava_lang_String_2(JNIEnv* env, jclass,
65
+ jlong jopt_handle,
66
+ jstring jdb_path) {
67
+ return rocksdb_open_helper(env, jopt_handle, jdb_path,
68
+ (ROCKSDB_NAMESPACE::Status(*)(
69
+ const ROCKSDB_NAMESPACE::Options&,
70
+ const std::string&, ROCKSDB_NAMESPACE::DB**)) &
71
+ ROCKSDB_NAMESPACE::DB::Open);
72
+ }
73
+
74
+ /*
75
+ * Class: org_rocksdb_RocksDB
76
+ * Method: openROnly
77
+ * Signature: (JLjava/lang/String;Z)J
78
+ */
79
+ jlong Java_org_rocksdb_RocksDB_openROnly__JLjava_lang_String_2Z(
80
+ JNIEnv* env, jclass, jlong jopt_handle, jstring jdb_path,
81
+ jboolean jerror_if_wal_file_exists) {
82
+ const bool error_if_wal_file_exists = jerror_if_wal_file_exists == JNI_TRUE;
83
+ return rocksdb_open_helper(
84
+ env, jopt_handle, jdb_path,
85
+ [error_if_wal_file_exists](const ROCKSDB_NAMESPACE::Options& options,
86
+ const std::string& db_path,
87
+ ROCKSDB_NAMESPACE::DB** db) {
88
+ return ROCKSDB_NAMESPACE::DB::OpenForReadOnly(options, db_path, db,
89
+ error_if_wal_file_exists);
90
+ });
91
+ }
92
+
93
+ jlongArray rocksdb_open_helper(
94
+ JNIEnv* env, jlong jopt_handle, jstring jdb_path,
95
+ jobjectArray jcolumn_names, jlongArray jcolumn_options,
96
+ std::function<ROCKSDB_NAMESPACE::Status(
97
+ const ROCKSDB_NAMESPACE::DBOptions&, const std::string&,
98
+ const std::vector<ROCKSDB_NAMESPACE::ColumnFamilyDescriptor>&,
99
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>*,
100
+ ROCKSDB_NAMESPACE::DB**)>
101
+ open_fn) {
102
+ const char* db_path = env->GetStringUTFChars(jdb_path, nullptr);
103
+ if (db_path == nullptr) {
104
+ // exception thrown: OutOfMemoryError
105
+ return nullptr;
106
+ }
107
+
108
+ const jsize len_cols = env->GetArrayLength(jcolumn_names);
109
+ jlong* jco = env->GetLongArrayElements(jcolumn_options, nullptr);
110
+ if (jco == nullptr) {
111
+ // exception thrown: OutOfMemoryError
112
+ env->ReleaseStringUTFChars(jdb_path, db_path);
113
+ return nullptr;
114
+ }
115
+
116
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyDescriptor> column_families;
117
+ jboolean has_exception = JNI_FALSE;
118
+ ROCKSDB_NAMESPACE::JniUtil::byteStrings<std::string>(
119
+ env, jcolumn_names,
120
+ [](const char* str_data, const size_t str_len) {
121
+ return std::string(str_data, str_len);
122
+ },
123
+ [&jco, &column_families](size_t idx, std::string cf_name) {
124
+ ROCKSDB_NAMESPACE::ColumnFamilyOptions* cf_options =
125
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyOptions*>(jco[idx]);
126
+ column_families.push_back(
127
+ ROCKSDB_NAMESPACE::ColumnFamilyDescriptor(cf_name, *cf_options));
128
+ },
129
+ &has_exception);
130
+
131
+ env->ReleaseLongArrayElements(jcolumn_options, jco, JNI_ABORT);
132
+
133
+ if (has_exception == JNI_TRUE) {
134
+ // exception occurred
135
+ env->ReleaseStringUTFChars(jdb_path, db_path);
136
+ return nullptr;
137
+ }
138
+
139
+ auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::DBOptions*>(jopt_handle);
140
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
141
+ ROCKSDB_NAMESPACE::DB* db = nullptr;
142
+ ROCKSDB_NAMESPACE::Status s =
143
+ open_fn(*opt, db_path, column_families, &cf_handles, &db);
144
+
145
+ // we have now finished with db_path
146
+ env->ReleaseStringUTFChars(jdb_path, db_path);
147
+
148
+ // check if open operation was successful
149
+ if (!s.ok()) {
150
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
151
+ return nullptr;
152
+ }
153
+
154
+ const jsize resultsLen = 1 + len_cols; // db handle + column family handles
155
+ std::unique_ptr<jlong[]> results =
156
+ std::unique_ptr<jlong[]>(new jlong[resultsLen]);
157
+ results[0] = GET_CPLUSPLUS_POINTER(db);
158
+ for (int i = 1; i <= len_cols; i++) {
159
+ results[i] = GET_CPLUSPLUS_POINTER(cf_handles[i - 1]);
160
+ }
161
+
162
+ jlongArray jresults = env->NewLongArray(resultsLen);
163
+ if (jresults == nullptr) {
164
+ // exception thrown: OutOfMemoryError
165
+ return nullptr;
166
+ }
167
+
168
+ env->SetLongArrayRegion(jresults, 0, resultsLen, results.get());
169
+ if (env->ExceptionCheck()) {
170
+ // exception thrown: ArrayIndexOutOfBoundsException
171
+ env->DeleteLocalRef(jresults);
172
+ return nullptr;
173
+ }
174
+
175
+ return jresults;
176
+ }
177
+
178
+ /*
179
+ * Class: org_rocksdb_RocksDB
180
+ * Method: openROnly
181
+ * Signature: (JLjava/lang/String;[[B[JZ)[J
182
+ */
183
+ jlongArray Java_org_rocksdb_RocksDB_openROnly__JLjava_lang_String_2_3_3B_3JZ(
184
+ JNIEnv* env, jclass, jlong jopt_handle, jstring jdb_path,
185
+ jobjectArray jcolumn_names, jlongArray jcolumn_options,
186
+ jboolean jerror_if_wal_file_exists) {
187
+ const bool error_if_wal_file_exists = jerror_if_wal_file_exists == JNI_TRUE;
188
+ return rocksdb_open_helper(
189
+ env, jopt_handle, jdb_path, jcolumn_names, jcolumn_options,
190
+ [error_if_wal_file_exists](
191
+ const ROCKSDB_NAMESPACE::DBOptions& options,
192
+ const std::string& db_path,
193
+ const std::vector<ROCKSDB_NAMESPACE::ColumnFamilyDescriptor>&
194
+ column_families,
195
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>* handles,
196
+ ROCKSDB_NAMESPACE::DB** db) {
197
+ return ROCKSDB_NAMESPACE::DB::OpenForReadOnly(
198
+ options, db_path, column_families, handles, db,
199
+ error_if_wal_file_exists);
200
+ });
201
+ }
202
+
203
+ /*
204
+ * Class: org_rocksdb_RocksDB
205
+ * Method: open
206
+ * Signature: (JLjava/lang/String;[[B[J)[J
207
+ */
208
+ jlongArray Java_org_rocksdb_RocksDB_open__JLjava_lang_String_2_3_3B_3J(
209
+ JNIEnv* env, jclass, jlong jopt_handle, jstring jdb_path,
210
+ jobjectArray jcolumn_names, jlongArray jcolumn_options) {
211
+ return rocksdb_open_helper(
212
+ env, jopt_handle, jdb_path, jcolumn_names, jcolumn_options,
213
+ (ROCKSDB_NAMESPACE::Status(*)(
214
+ const ROCKSDB_NAMESPACE::DBOptions&, const std::string&,
215
+ const std::vector<ROCKSDB_NAMESPACE::ColumnFamilyDescriptor>&,
216
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>*,
217
+ ROCKSDB_NAMESPACE::DB**)) &
218
+ ROCKSDB_NAMESPACE::DB::Open);
219
+ }
220
+
221
+ /*
222
+ * Class: org_rocksdb_RocksDB
223
+ * Method: openAsSecondary
224
+ * Signature: (JLjava/lang/String;Ljava/lang/String;)J
225
+ */
226
+ jlong Java_org_rocksdb_RocksDB_openAsSecondary__JLjava_lang_String_2Ljava_lang_String_2(
227
+ JNIEnv* env, jclass, jlong jopt_handle, jstring jdb_path,
228
+ jstring jsecondary_db_path) {
229
+ const char* secondary_db_path =
230
+ env->GetStringUTFChars(jsecondary_db_path, nullptr);
231
+ if (secondary_db_path == nullptr) {
232
+ // exception thrown: OutOfMemoryError
233
+ return 0;
234
+ }
235
+
236
+ jlong db_handle = rocksdb_open_helper(
237
+ env, jopt_handle, jdb_path,
238
+ [secondary_db_path](const ROCKSDB_NAMESPACE::Options& options,
239
+ const std::string& db_path,
240
+ ROCKSDB_NAMESPACE::DB** db) {
241
+ return ROCKSDB_NAMESPACE::DB::OpenAsSecondary(options, db_path,
242
+ secondary_db_path, db);
243
+ });
244
+
245
+ // we have now finished with secondary_db_path
246
+ env->ReleaseStringUTFChars(jsecondary_db_path, secondary_db_path);
247
+
248
+ return db_handle;
249
+ }
250
+
251
+ /*
252
+ * Class: org_rocksdb_RocksDB
253
+ * Method: openAsSecondary
254
+ * Signature: (JLjava/lang/String;Ljava/lang/String;[[B[J)[J
255
+ */
256
+ jlongArray
257
+ Java_org_rocksdb_RocksDB_openAsSecondary__JLjava_lang_String_2Ljava_lang_String_2_3_3B_3J(
258
+ JNIEnv* env, jclass, jlong jopt_handle, jstring jdb_path,
259
+ jstring jsecondary_db_path, jobjectArray jcolumn_names,
260
+ jlongArray jcolumn_options) {
261
+ const char* secondary_db_path =
262
+ env->GetStringUTFChars(jsecondary_db_path, nullptr);
263
+ if (secondary_db_path == nullptr) {
264
+ // exception thrown: OutOfMemoryError
265
+ return nullptr;
266
+ }
267
+
268
+ jlongArray jhandles = rocksdb_open_helper(
269
+ env, jopt_handle, jdb_path, jcolumn_names, jcolumn_options,
270
+ [secondary_db_path](
271
+ const ROCKSDB_NAMESPACE::DBOptions& options,
272
+ const std::string& db_path,
273
+ const std::vector<ROCKSDB_NAMESPACE::ColumnFamilyDescriptor>&
274
+ column_families,
275
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>* handles,
276
+ ROCKSDB_NAMESPACE::DB** db) {
277
+ return ROCKSDB_NAMESPACE::DB::OpenAsSecondary(
278
+ options, db_path, secondary_db_path, column_families, handles, db);
279
+ });
280
+
281
+ // we have now finished with secondary_db_path
282
+ env->ReleaseStringUTFChars(jsecondary_db_path, secondary_db_path);
283
+
284
+ return jhandles;
285
+ }
286
+
287
+ /*
288
+ * Class: org_rocksdb_RocksDB
289
+ * Method: disposeInternal
290
+ * Signature: (J)V
291
+ */
292
+ void Java_org_rocksdb_RocksDB_disposeInternal(JNIEnv*, jobject, jlong jhandle) {
293
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jhandle);
294
+ assert(db != nullptr);
295
+ delete db;
296
+ }
297
+
298
+ /*
299
+ * Class: org_rocksdb_RocksDB
300
+ * Method: closeDatabase
301
+ * Signature: (J)V
302
+ */
303
+ void Java_org_rocksdb_RocksDB_closeDatabase(JNIEnv* env, jclass,
304
+ jlong jhandle) {
305
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jhandle);
306
+ assert(db != nullptr);
307
+ ROCKSDB_NAMESPACE::Status s = db->Close();
308
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
309
+ }
310
+
311
+ /*
312
+ * Class: org_rocksdb_RocksDB
313
+ * Method: listColumnFamilies
314
+ * Signature: (JLjava/lang/String;)[[B
315
+ */
316
+ jobjectArray Java_org_rocksdb_RocksDB_listColumnFamilies(JNIEnv* env, jclass,
317
+ jlong jopt_handle,
318
+ jstring jdb_path) {
319
+ std::vector<std::string> column_family_names;
320
+ const char* db_path = env->GetStringUTFChars(jdb_path, nullptr);
321
+ if (db_path == nullptr) {
322
+ // exception thrown: OutOfMemoryError
323
+ return nullptr;
324
+ }
325
+
326
+ auto* opt = reinterpret_cast<ROCKSDB_NAMESPACE::Options*>(jopt_handle);
327
+ ROCKSDB_NAMESPACE::Status s = ROCKSDB_NAMESPACE::DB::ListColumnFamilies(
328
+ *opt, db_path, &column_family_names);
329
+
330
+ env->ReleaseStringUTFChars(jdb_path, db_path);
331
+
332
+ jobjectArray jcolumn_family_names =
333
+ ROCKSDB_NAMESPACE::JniUtil::stringsBytes(env, column_family_names);
334
+
335
+ return jcolumn_family_names;
336
+ }
337
+
338
+ /*
339
+ * Class: org_rocksdb_RocksDB
340
+ * Method: createColumnFamily
341
+ * Signature: (J[BIJ)J
342
+ */
343
+ jlong Java_org_rocksdb_RocksDB_createColumnFamily(JNIEnv* env, jobject,
344
+ jlong jhandle,
345
+ jbyteArray jcf_name,
346
+ jint jcf_name_len,
347
+ jlong jcf_options_handle) {
348
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jhandle);
349
+ jboolean has_exception = JNI_FALSE;
350
+ const std::string cf_name =
351
+ ROCKSDB_NAMESPACE::JniUtil::byteString<std::string>(
352
+ env, jcf_name, jcf_name_len,
353
+ [](const char* str, const size_t len) {
354
+ return std::string(str, len);
355
+ },
356
+ &has_exception);
357
+ if (has_exception == JNI_TRUE) {
358
+ // exception occurred
359
+ return 0;
360
+ }
361
+ auto* cf_options = reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyOptions*>(
362
+ jcf_options_handle);
363
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
364
+ ROCKSDB_NAMESPACE::Status s =
365
+ db->CreateColumnFamily(*cf_options, cf_name, &cf_handle);
366
+ if (!s.ok()) {
367
+ // error occurred
368
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
369
+ return 0;
370
+ }
371
+ return GET_CPLUSPLUS_POINTER(cf_handle);
372
+ }
373
+
374
+ /*
375
+ * Class: org_rocksdb_RocksDB
376
+ * Method: createColumnFamilies
377
+ * Signature: (JJ[[B)[J
378
+ */
379
+ jlongArray Java_org_rocksdb_RocksDB_createColumnFamilies__JJ_3_3B(
380
+ JNIEnv* env, jobject, jlong jhandle, jlong jcf_options_handle,
381
+ jobjectArray jcf_names) {
382
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jhandle);
383
+ auto* cf_options = reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyOptions*>(
384
+ jcf_options_handle);
385
+ jboolean has_exception = JNI_FALSE;
386
+ std::vector<std::string> cf_names;
387
+ ROCKSDB_NAMESPACE::JniUtil::byteStrings<std::string>(
388
+ env, jcf_names,
389
+ [](const char* str, const size_t len) { return std::string(str, len); },
390
+ [&cf_names](const size_t, std::string str) { cf_names.push_back(str); },
391
+ &has_exception);
392
+ if (has_exception == JNI_TRUE) {
393
+ // exception occurred
394
+ return nullptr;
395
+ }
396
+
397
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
398
+ ROCKSDB_NAMESPACE::Status s =
399
+ db->CreateColumnFamilies(*cf_options, cf_names, &cf_handles);
400
+ if (!s.ok()) {
401
+ // error occurred
402
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
403
+ return nullptr;
404
+ }
405
+
406
+ jlongArray jcf_handles = ROCKSDB_NAMESPACE::JniUtil::toJPointers<
407
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle>(env, cf_handles, &has_exception);
408
+ if (has_exception == JNI_TRUE) {
409
+ // exception occurred
410
+ return nullptr;
411
+ }
412
+ return jcf_handles;
413
+ }
414
+
415
+ /*
416
+ * Class: org_rocksdb_RocksDB
417
+ * Method: createColumnFamilies
418
+ * Signature: (J[J[[B)[J
419
+ */
420
+ jlongArray Java_org_rocksdb_RocksDB_createColumnFamilies__J_3J_3_3B(
421
+ JNIEnv* env, jobject, jlong jhandle, jlongArray jcf_options_handles,
422
+ jobjectArray jcf_names) {
423
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jhandle);
424
+ const jsize jlen = env->GetArrayLength(jcf_options_handles);
425
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyDescriptor> cf_descriptors;
426
+ cf_descriptors.reserve(jlen);
427
+
428
+ jlong* jcf_options_handles_elems =
429
+ env->GetLongArrayElements(jcf_options_handles, nullptr);
430
+ if (jcf_options_handles_elems == nullptr) {
431
+ // exception thrown: OutOfMemoryError
432
+ return nullptr;
433
+ }
434
+
435
+ // extract the column family descriptors
436
+ jboolean has_exception = JNI_FALSE;
437
+ for (jsize i = 0; i < jlen; i++) {
438
+ auto* cf_options =
439
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyOptions*>(
440
+ jcf_options_handles_elems[i]);
441
+ jbyteArray jcf_name =
442
+ static_cast<jbyteArray>(env->GetObjectArrayElement(jcf_names, i));
443
+ if (env->ExceptionCheck()) {
444
+ // exception thrown: ArrayIndexOutOfBoundsException
445
+ env->ReleaseLongArrayElements(jcf_options_handles,
446
+ jcf_options_handles_elems, JNI_ABORT);
447
+ return nullptr;
448
+ }
449
+ const std::string cf_name =
450
+ ROCKSDB_NAMESPACE::JniUtil::byteString<std::string>(
451
+ env, jcf_name,
452
+ [](const char* str, const size_t len) {
453
+ return std::string(str, len);
454
+ },
455
+ &has_exception);
456
+ if (has_exception == JNI_TRUE) {
457
+ // exception occurred
458
+ env->DeleteLocalRef(jcf_name);
459
+ env->ReleaseLongArrayElements(jcf_options_handles,
460
+ jcf_options_handles_elems, JNI_ABORT);
461
+ return nullptr;
462
+ }
463
+
464
+ cf_descriptors.push_back(
465
+ ROCKSDB_NAMESPACE::ColumnFamilyDescriptor(cf_name, *cf_options));
466
+
467
+ env->DeleteLocalRef(jcf_name);
468
+ }
469
+
470
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
471
+ ROCKSDB_NAMESPACE::Status s =
472
+ db->CreateColumnFamilies(cf_descriptors, &cf_handles);
473
+
474
+ env->ReleaseLongArrayElements(jcf_options_handles, jcf_options_handles_elems,
475
+ JNI_ABORT);
476
+
477
+ if (!s.ok()) {
478
+ // error occurred
479
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
480
+ return nullptr;
481
+ }
482
+
483
+ jlongArray jcf_handles = ROCKSDB_NAMESPACE::JniUtil::toJPointers<
484
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle>(env, cf_handles, &has_exception);
485
+ if (has_exception == JNI_TRUE) {
486
+ // exception occurred
487
+ return nullptr;
488
+ }
489
+ return jcf_handles;
490
+ }
491
+
492
+ /*
493
+ * Class: org_rocksdb_RocksDB
494
+ * Method: dropColumnFamily
495
+ * Signature: (JJ)V;
496
+ */
497
+ void Java_org_rocksdb_RocksDB_dropColumnFamily(JNIEnv* env, jobject,
498
+ jlong jdb_handle,
499
+ jlong jcf_handle) {
500
+ auto* db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
501
+ auto* cf_handle =
502
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
503
+ ROCKSDB_NAMESPACE::Status s = db_handle->DropColumnFamily(cf_handle);
504
+ if (!s.ok()) {
505
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
506
+ }
507
+ }
508
+
509
+ /*
510
+ * Class: org_rocksdb_RocksDB
511
+ * Method: dropColumnFamilies
512
+ * Signature: (J[J)V
513
+ */
514
+ void Java_org_rocksdb_RocksDB_dropColumnFamilies(
515
+ JNIEnv* env, jobject, jlong jdb_handle, jlongArray jcolumn_family_handles) {
516
+ auto* db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
517
+
518
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
519
+ if (jcolumn_family_handles != nullptr) {
520
+ const jsize len_cols = env->GetArrayLength(jcolumn_family_handles);
521
+
522
+ jlong* jcfh = env->GetLongArrayElements(jcolumn_family_handles, nullptr);
523
+ if (jcfh == nullptr) {
524
+ // exception thrown: OutOfMemoryError
525
+ return;
526
+ }
527
+
528
+ for (jsize i = 0; i < len_cols; i++) {
529
+ auto* cf_handle =
530
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcfh[i]);
531
+ cf_handles.push_back(cf_handle);
532
+ }
533
+ env->ReleaseLongArrayElements(jcolumn_family_handles, jcfh, JNI_ABORT);
534
+ }
535
+
536
+ ROCKSDB_NAMESPACE::Status s = db_handle->DropColumnFamilies(cf_handles);
537
+ if (!s.ok()) {
538
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
539
+ }
540
+ }
541
+
542
+ //////////////////////////////////////////////////////////////////////////////
543
+ // ROCKSDB_NAMESPACE::DB::Put
544
+
545
+ /**
546
+ * @return true if the put succeeded, false if a Java Exception was thrown
547
+ */
548
+ bool rocksdb_put_helper(JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
549
+ const ROCKSDB_NAMESPACE::WriteOptions& write_options,
550
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle,
551
+ jbyteArray jkey, jint jkey_off, jint jkey_len,
552
+ jbyteArray jval, jint jval_off, jint jval_len) {
553
+ jbyte* key = new jbyte[jkey_len];
554
+ env->GetByteArrayRegion(jkey, jkey_off, jkey_len, key);
555
+ if (env->ExceptionCheck()) {
556
+ // exception thrown: ArrayIndexOutOfBoundsException
557
+ delete[] key;
558
+ return false;
559
+ }
560
+
561
+ jbyte* value = new jbyte[jval_len];
562
+ env->GetByteArrayRegion(jval, jval_off, jval_len, value);
563
+ if (env->ExceptionCheck()) {
564
+ // exception thrown: ArrayIndexOutOfBoundsException
565
+ delete[] value;
566
+ delete[] key;
567
+ return false;
568
+ }
569
+
570
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
571
+ ROCKSDB_NAMESPACE::Slice value_slice(reinterpret_cast<char*>(value),
572
+ jval_len);
573
+
574
+ ROCKSDB_NAMESPACE::Status s;
575
+ if (cf_handle != nullptr) {
576
+ s = db->Put(write_options, cf_handle, key_slice, value_slice);
577
+ } else {
578
+ // backwards compatibility
579
+ s = db->Put(write_options, key_slice, value_slice);
580
+ }
581
+
582
+ // cleanup
583
+ delete[] value;
584
+ delete[] key;
585
+
586
+ if (s.ok()) {
587
+ return true;
588
+ } else {
589
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
590
+ return false;
591
+ }
592
+ }
593
+
594
+ /*
595
+ * Class: org_rocksdb_RocksDB
596
+ * Method: put
597
+ * Signature: (J[BII[BII)V
598
+ */
599
+ void Java_org_rocksdb_RocksDB_put__J_3BII_3BII(JNIEnv* env, jobject,
600
+ jlong jdb_handle,
601
+ jbyteArray jkey, jint jkey_off,
602
+ jint jkey_len, jbyteArray jval,
603
+ jint jval_off, jint jval_len) {
604
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
605
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
606
+ ROCKSDB_NAMESPACE::WriteOptions();
607
+ rocksdb_put_helper(env, db, default_write_options, nullptr, jkey, jkey_off,
608
+ jkey_len, jval, jval_off, jval_len);
609
+ }
610
+
611
+ /*
612
+ * Class: org_rocksdb_RocksDB
613
+ * Method: put
614
+ * Signature: (J[BII[BIIJ)V
615
+ */
616
+ void Java_org_rocksdb_RocksDB_put__J_3BII_3BIIJ(JNIEnv* env, jobject,
617
+ jlong jdb_handle,
618
+ jbyteArray jkey, jint jkey_off,
619
+ jint jkey_len, jbyteArray jval,
620
+ jint jval_off, jint jval_len,
621
+ jlong jcf_handle) {
622
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
623
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
624
+ ROCKSDB_NAMESPACE::WriteOptions();
625
+ auto* cf_handle =
626
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
627
+ if (cf_handle != nullptr) {
628
+ rocksdb_put_helper(env, db, default_write_options, cf_handle, jkey,
629
+ jkey_off, jkey_len, jval, jval_off, jval_len);
630
+ } else {
631
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
632
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
633
+ "Invalid ColumnFamilyHandle."));
634
+ }
635
+ }
636
+
637
+ /*
638
+ * Class: org_rocksdb_RocksDB
639
+ * Method: put
640
+ * Signature: (JJ[BII[BII)V
641
+ */
642
+ void Java_org_rocksdb_RocksDB_put__JJ_3BII_3BII(JNIEnv* env, jobject,
643
+ jlong jdb_handle,
644
+ jlong jwrite_options_handle,
645
+ jbyteArray jkey, jint jkey_off,
646
+ jint jkey_len, jbyteArray jval,
647
+ jint jval_off, jint jval_len) {
648
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
649
+ auto* write_options =
650
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options_handle);
651
+ rocksdb_put_helper(env, db, *write_options, nullptr, jkey, jkey_off, jkey_len,
652
+ jval, jval_off, jval_len);
653
+ }
654
+
655
+ /*
656
+ * Class: org_rocksdb_RocksDB
657
+ * Method: put
658
+ * Signature: (JJ[BII[BIIJ)V
659
+ */
660
+ void Java_org_rocksdb_RocksDB_put__JJ_3BII_3BIIJ(
661
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jwrite_options_handle,
662
+ jbyteArray jkey, jint jkey_off, jint jkey_len, jbyteArray jval,
663
+ jint jval_off, jint jval_len, jlong jcf_handle) {
664
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
665
+ auto* write_options =
666
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options_handle);
667
+ auto* cf_handle =
668
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
669
+ if (cf_handle != nullptr) {
670
+ rocksdb_put_helper(env, db, *write_options, cf_handle, jkey, jkey_off,
671
+ jkey_len, jval, jval_off, jval_len);
672
+ } else {
673
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
674
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
675
+ "Invalid ColumnFamilyHandle."));
676
+ }
677
+ }
678
+
679
+ /*
680
+ * Class: org_rocksdb_RocksDB
681
+ * Method: putDirect
682
+ * Signature: (JJLjava/nio/ByteBuffer;IILjava/nio/ByteBuffer;IIJ)V
683
+ */
684
+ void Java_org_rocksdb_RocksDB_putDirect(
685
+ JNIEnv* env, jobject /*jdb*/, jlong jdb_handle, jlong jwrite_options_handle,
686
+ jobject jkey, jint jkey_off, jint jkey_len, jobject jval, jint jval_off,
687
+ jint jval_len, jlong jcf_handle) {
688
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
689
+ auto* write_options =
690
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options_handle);
691
+ auto* cf_handle =
692
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
693
+ auto put = [&env, &db, &cf_handle, &write_options](
694
+ ROCKSDB_NAMESPACE::Slice& key,
695
+ ROCKSDB_NAMESPACE::Slice& value) {
696
+ ROCKSDB_NAMESPACE::Status s;
697
+ if (cf_handle == nullptr) {
698
+ s = db->Put(*write_options, key, value);
699
+ } else {
700
+ s = db->Put(*write_options, cf_handle, key, value);
701
+ }
702
+ if (s.ok()) {
703
+ return;
704
+ }
705
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
706
+ };
707
+ ROCKSDB_NAMESPACE::JniUtil::kv_op_direct(put, env, jkey, jkey_off, jkey_len,
708
+ jval, jval_off, jval_len);
709
+ }
710
+
711
+ //////////////////////////////////////////////////////////////////////////////
712
+ // ROCKSDB_NAMESPACE::DB::Delete()
713
+
714
+ /**
715
+ * @return true if the delete succeeded, false if a Java Exception was thrown
716
+ */
717
+ bool rocksdb_delete_helper(JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
718
+ const ROCKSDB_NAMESPACE::WriteOptions& write_options,
719
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle,
720
+ jbyteArray jkey, jint jkey_off, jint jkey_len) {
721
+ jbyte* key = new jbyte[jkey_len];
722
+ env->GetByteArrayRegion(jkey, jkey_off, jkey_len, key);
723
+ if (env->ExceptionCheck()) {
724
+ // exception thrown: ArrayIndexOutOfBoundsException
725
+ delete[] key;
726
+ return false;
727
+ }
728
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
729
+
730
+ ROCKSDB_NAMESPACE::Status s;
731
+ if (cf_handle != nullptr) {
732
+ s = db->Delete(write_options, cf_handle, key_slice);
733
+ } else {
734
+ // backwards compatibility
735
+ s = db->Delete(write_options, key_slice);
736
+ }
737
+
738
+ // cleanup
739
+ delete[] key;
740
+
741
+ if (s.ok()) {
742
+ return true;
743
+ }
744
+
745
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
746
+ return false;
747
+ }
748
+
749
+ /*
750
+ * Class: org_rocksdb_RocksDB
751
+ * Method: delete
752
+ * Signature: (J[BII)V
753
+ */
754
+ void Java_org_rocksdb_RocksDB_delete__J_3BII(JNIEnv* env, jobject,
755
+ jlong jdb_handle, jbyteArray jkey,
756
+ jint jkey_off, jint jkey_len) {
757
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
758
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
759
+ ROCKSDB_NAMESPACE::WriteOptions();
760
+ rocksdb_delete_helper(env, db, default_write_options, nullptr, jkey, jkey_off,
761
+ jkey_len);
762
+ }
763
+
764
+ /*
765
+ * Class: org_rocksdb_RocksDB
766
+ * Method: delete
767
+ * Signature: (J[BIIJ)V
768
+ */
769
+ void Java_org_rocksdb_RocksDB_delete__J_3BIIJ(JNIEnv* env, jobject,
770
+ jlong jdb_handle, jbyteArray jkey,
771
+ jint jkey_off, jint jkey_len,
772
+ jlong jcf_handle) {
773
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
774
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
775
+ ROCKSDB_NAMESPACE::WriteOptions();
776
+ auto* cf_handle =
777
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
778
+ if (cf_handle != nullptr) {
779
+ rocksdb_delete_helper(env, db, default_write_options, cf_handle, jkey,
780
+ jkey_off, jkey_len);
781
+ } else {
782
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
783
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
784
+ "Invalid ColumnFamilyHandle."));
785
+ }
786
+ }
787
+
788
+ /*
789
+ * Class: org_rocksdb_RocksDB
790
+ * Method: delete
791
+ * Signature: (JJ[BII)V
792
+ */
793
+ void Java_org_rocksdb_RocksDB_delete__JJ_3BII(JNIEnv* env, jobject,
794
+ jlong jdb_handle,
795
+ jlong jwrite_options,
796
+ jbyteArray jkey, jint jkey_off,
797
+ jint jkey_len) {
798
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
799
+ auto* write_options =
800
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options);
801
+ rocksdb_delete_helper(env, db, *write_options, nullptr, jkey, jkey_off,
802
+ jkey_len);
803
+ }
804
+
805
+ /*
806
+ * Class: org_rocksdb_RocksDB
807
+ * Method: delete
808
+ * Signature: (JJ[BIIJ)V
809
+ */
810
+ void Java_org_rocksdb_RocksDB_delete__JJ_3BIIJ(
811
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jwrite_options,
812
+ jbyteArray jkey, jint jkey_off, jint jkey_len, jlong jcf_handle) {
813
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
814
+ auto* write_options =
815
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options);
816
+ auto* cf_handle =
817
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
818
+ if (cf_handle != nullptr) {
819
+ rocksdb_delete_helper(env, db, *write_options, cf_handle, jkey, jkey_off,
820
+ jkey_len);
821
+ } else {
822
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
823
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
824
+ "Invalid ColumnFamilyHandle."));
825
+ }
826
+ }
827
+
828
+ //////////////////////////////////////////////////////////////////////////////
829
+ // ROCKSDB_NAMESPACE::DB::SingleDelete()
830
+ /**
831
+ * @return true if the single delete succeeded, false if a Java Exception
832
+ * was thrown
833
+ */
834
+ bool rocksdb_single_delete_helper(
835
+ JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
836
+ const ROCKSDB_NAMESPACE::WriteOptions& write_options,
837
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle, jbyteArray jkey,
838
+ jint jkey_len) {
839
+ jbyte* key = new jbyte[jkey_len];
840
+ env->GetByteArrayRegion(jkey, 0, jkey_len, key);
841
+ if (env->ExceptionCheck()) {
842
+ // exception thrown: ArrayIndexOutOfBoundsException
843
+ delete[] key;
844
+ return false;
845
+ }
846
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
847
+
848
+ ROCKSDB_NAMESPACE::Status s;
849
+ if (cf_handle != nullptr) {
850
+ s = db->SingleDelete(write_options, cf_handle, key_slice);
851
+ } else {
852
+ // backwards compatibility
853
+ s = db->SingleDelete(write_options, key_slice);
854
+ }
855
+
856
+ delete[] key;
857
+
858
+ if (s.ok()) {
859
+ return true;
860
+ }
861
+
862
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
863
+ return false;
864
+ }
865
+
866
+ /*
867
+ * Class: org_rocksdb_RocksDB
868
+ * Method: singleDelete
869
+ * Signature: (J[BI)V
870
+ */
871
+ void Java_org_rocksdb_RocksDB_singleDelete__J_3BI(JNIEnv* env, jobject,
872
+ jlong jdb_handle,
873
+ jbyteArray jkey,
874
+ jint jkey_len) {
875
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
876
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
877
+ ROCKSDB_NAMESPACE::WriteOptions();
878
+ rocksdb_single_delete_helper(env, db, default_write_options, nullptr, jkey,
879
+ jkey_len);
880
+ }
881
+
882
+ /*
883
+ * Class: org_rocksdb_RocksDB
884
+ * Method: singleDelete
885
+ * Signature: (J[BIJ)V
886
+ */
887
+ void Java_org_rocksdb_RocksDB_singleDelete__J_3BIJ(JNIEnv* env, jobject,
888
+ jlong jdb_handle,
889
+ jbyteArray jkey,
890
+ jint jkey_len,
891
+ jlong jcf_handle) {
892
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
893
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
894
+ ROCKSDB_NAMESPACE::WriteOptions();
895
+ auto* cf_handle =
896
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
897
+ if (cf_handle != nullptr) {
898
+ rocksdb_single_delete_helper(env, db, default_write_options, cf_handle,
899
+ jkey, jkey_len);
900
+ } else {
901
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
902
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
903
+ "Invalid ColumnFamilyHandle."));
904
+ }
905
+ }
906
+
907
+ /*
908
+ * Class: org_rocksdb_RocksDB
909
+ * Method: singleDelete
910
+ * Signature: (JJ[BIJ)V
911
+ */
912
+ void Java_org_rocksdb_RocksDB_singleDelete__JJ_3BI(JNIEnv* env, jobject,
913
+ jlong jdb_handle,
914
+ jlong jwrite_options,
915
+ jbyteArray jkey,
916
+ jint jkey_len) {
917
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
918
+ auto* write_options =
919
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options);
920
+ rocksdb_single_delete_helper(env, db, *write_options, nullptr, jkey,
921
+ jkey_len);
922
+ }
923
+
924
+ /*
925
+ * Class: org_rocksdb_RocksDB
926
+ * Method: singleDelete
927
+ * Signature: (JJ[BIJ)V
928
+ */
929
+ void Java_org_rocksdb_RocksDB_singleDelete__JJ_3BIJ(
930
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jwrite_options,
931
+ jbyteArray jkey, jint jkey_len, jlong jcf_handle) {
932
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
933
+ auto* write_options =
934
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options);
935
+ auto* cf_handle =
936
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
937
+ if (cf_handle != nullptr) {
938
+ rocksdb_single_delete_helper(env, db, *write_options, cf_handle, jkey,
939
+ jkey_len);
940
+ } else {
941
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
942
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
943
+ "Invalid ColumnFamilyHandle."));
944
+ }
945
+ }
946
+
947
+ //////////////////////////////////////////////////////////////////////////////
948
+ // ROCKSDB_NAMESPACE::DB::DeleteRange()
949
+ /**
950
+ * @return true if the delete range succeeded, false if a Java Exception
951
+ * was thrown
952
+ */
953
+ bool rocksdb_delete_range_helper(
954
+ JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
955
+ const ROCKSDB_NAMESPACE::WriteOptions& write_options,
956
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle, jbyteArray jbegin_key,
957
+ jint jbegin_key_off, jint jbegin_key_len, jbyteArray jend_key,
958
+ jint jend_key_off, jint jend_key_len) {
959
+ jbyte* begin_key = new jbyte[jbegin_key_len];
960
+ env->GetByteArrayRegion(jbegin_key, jbegin_key_off, jbegin_key_len,
961
+ begin_key);
962
+ if (env->ExceptionCheck()) {
963
+ // exception thrown: ArrayIndexOutOfBoundsException
964
+ delete[] begin_key;
965
+ return false;
966
+ }
967
+ ROCKSDB_NAMESPACE::Slice begin_key_slice(reinterpret_cast<char*>(begin_key),
968
+ jbegin_key_len);
969
+
970
+ jbyte* end_key = new jbyte[jend_key_len];
971
+ env->GetByteArrayRegion(jend_key, jend_key_off, jend_key_len, end_key);
972
+ if (env->ExceptionCheck()) {
973
+ // exception thrown: ArrayIndexOutOfBoundsException
974
+ delete[] begin_key;
975
+ delete[] end_key;
976
+ return false;
977
+ }
978
+ ROCKSDB_NAMESPACE::Slice end_key_slice(reinterpret_cast<char*>(end_key),
979
+ jend_key_len);
980
+
981
+ ROCKSDB_NAMESPACE::Status s =
982
+ db->DeleteRange(write_options, cf_handle, begin_key_slice, end_key_slice);
983
+
984
+ // cleanup
985
+ delete[] begin_key;
986
+ delete[] end_key;
987
+
988
+ if (s.ok()) {
989
+ return true;
990
+ }
991
+
992
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
993
+ return false;
994
+ }
995
+
996
+ /*
997
+ * Class: org_rocksdb_RocksDB
998
+ * Method: deleteRange
999
+ * Signature: (J[BII[BII)V
1000
+ */
1001
+ void Java_org_rocksdb_RocksDB_deleteRange__J_3BII_3BII(
1002
+ JNIEnv* env, jobject, jlong jdb_handle, jbyteArray jbegin_key,
1003
+ jint jbegin_key_off, jint jbegin_key_len, jbyteArray jend_key,
1004
+ jint jend_key_off, jint jend_key_len) {
1005
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1006
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
1007
+ ROCKSDB_NAMESPACE::WriteOptions();
1008
+ rocksdb_delete_range_helper(env, db, default_write_options, nullptr,
1009
+ jbegin_key, jbegin_key_off, jbegin_key_len,
1010
+ jend_key, jend_key_off, jend_key_len);
1011
+ }
1012
+
1013
+ jint rocksdb_get_helper_direct(
1014
+ JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
1015
+ const ROCKSDB_NAMESPACE::ReadOptions& read_options,
1016
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* column_family_handle, jobject jkey,
1017
+ jint jkey_off, jint jkey_len, jobject jval, jint jval_off, jint jval_len,
1018
+ bool* has_exception) {
1019
+ static const int kNotFound = -1;
1020
+ static const int kStatusError = -2;
1021
+ static const int kArgumentError = -3;
1022
+
1023
+ char* key = reinterpret_cast<char*>(env->GetDirectBufferAddress(jkey));
1024
+ if (key == nullptr) {
1025
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1026
+ env,
1027
+ "Invalid key argument (argument is not a valid direct ByteBuffer)");
1028
+ *has_exception = true;
1029
+ return kArgumentError;
1030
+ }
1031
+ if (env->GetDirectBufferCapacity(jkey) < (jkey_off + jkey_len)) {
1032
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1033
+ env,
1034
+ "Invalid key argument. Capacity is less than requested region (offset "
1035
+ "+ length).");
1036
+ *has_exception = true;
1037
+ return kArgumentError;
1038
+ }
1039
+
1040
+ char* value = reinterpret_cast<char*>(env->GetDirectBufferAddress(jval));
1041
+ if (value == nullptr) {
1042
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1043
+ env,
1044
+ "Invalid value argument (argument is not a valid direct ByteBuffer)");
1045
+ *has_exception = true;
1046
+ return kArgumentError;
1047
+ }
1048
+
1049
+ if (env->GetDirectBufferCapacity(jval) < (jval_off + jval_len)) {
1050
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1051
+ env,
1052
+ "Invalid value argument. Capacity is less than requested region "
1053
+ "(offset + length).");
1054
+ *has_exception = true;
1055
+ return kArgumentError;
1056
+ }
1057
+
1058
+ key += jkey_off;
1059
+ value += jval_off;
1060
+
1061
+ ROCKSDB_NAMESPACE::Slice key_slice(key, jkey_len);
1062
+
1063
+ ROCKSDB_NAMESPACE::PinnableSlice pinnable_value;
1064
+ ROCKSDB_NAMESPACE::Status s;
1065
+ if (column_family_handle != nullptr) {
1066
+ s = db->Get(read_options, column_family_handle, key_slice, &pinnable_value);
1067
+ } else {
1068
+ // backwards compatibility
1069
+ s = db->Get(read_options, db->DefaultColumnFamily(), key_slice,
1070
+ &pinnable_value);
1071
+ }
1072
+
1073
+ if (s.IsNotFound()) {
1074
+ *has_exception = false;
1075
+ return kNotFound;
1076
+ } else if (!s.ok()) {
1077
+ *has_exception = true;
1078
+ // Here since we are throwing a Java exception from c++ side.
1079
+ // As a result, c++ does not know calling this function will in fact
1080
+ // throwing an exception. As a result, the execution flow will
1081
+ // not stop here, and codes after this throw will still be
1082
+ // executed.
1083
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
1084
+
1085
+ // Return a dummy const value to avoid compilation error, although
1086
+ // java side might not have a chance to get the return value :)
1087
+ return kStatusError;
1088
+ }
1089
+
1090
+ const jint pinnable_value_len = static_cast<jint>(pinnable_value.size());
1091
+ const jint length = std::min(jval_len, pinnable_value_len);
1092
+
1093
+ memcpy(value, pinnable_value.data(), length);
1094
+ pinnable_value.Reset();
1095
+
1096
+ *has_exception = false;
1097
+ return pinnable_value_len;
1098
+ }
1099
+
1100
+ /*
1101
+ * Class: org_rocksdb_RocksDB
1102
+ * Method: deleteRange
1103
+ * Signature: (J[BII[BIIJ)V
1104
+ */
1105
+ void Java_org_rocksdb_RocksDB_deleteRange__J_3BII_3BIIJ(
1106
+ JNIEnv* env, jobject, jlong jdb_handle, jbyteArray jbegin_key,
1107
+ jint jbegin_key_off, jint jbegin_key_len, jbyteArray jend_key,
1108
+ jint jend_key_off, jint jend_key_len, jlong jcf_handle) {
1109
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1110
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
1111
+ ROCKSDB_NAMESPACE::WriteOptions();
1112
+ auto* cf_handle =
1113
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1114
+ if (cf_handle != nullptr) {
1115
+ rocksdb_delete_range_helper(env, db, default_write_options, cf_handle,
1116
+ jbegin_key, jbegin_key_off, jbegin_key_len,
1117
+ jend_key, jend_key_off, jend_key_len);
1118
+ } else {
1119
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1120
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1121
+ "Invalid ColumnFamilyHandle."));
1122
+ }
1123
+ }
1124
+
1125
+ /*
1126
+ * Class: org_rocksdb_RocksDB
1127
+ * Method: deleteRange
1128
+ * Signature: (JJ[BII[BII)V
1129
+ */
1130
+ void Java_org_rocksdb_RocksDB_deleteRange__JJ_3BII_3BII(
1131
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jwrite_options,
1132
+ jbyteArray jbegin_key, jint jbegin_key_off, jint jbegin_key_len,
1133
+ jbyteArray jend_key, jint jend_key_off, jint jend_key_len) {
1134
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1135
+ auto* write_options =
1136
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options);
1137
+ rocksdb_delete_range_helper(env, db, *write_options, nullptr, jbegin_key,
1138
+ jbegin_key_off, jbegin_key_len, jend_key,
1139
+ jend_key_off, jend_key_len);
1140
+ }
1141
+
1142
+ /*
1143
+ * Class: org_rocksdb_RocksDB
1144
+ * Method: deleteRange
1145
+ * Signature: (JJ[BII[BIIJ)V
1146
+ */
1147
+ void Java_org_rocksdb_RocksDB_deleteRange__JJ_3BII_3BIIJ(
1148
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jwrite_options,
1149
+ jbyteArray jbegin_key, jint jbegin_key_off, jint jbegin_key_len,
1150
+ jbyteArray jend_key, jint jend_key_off, jint jend_key_len,
1151
+ jlong jcf_handle) {
1152
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1153
+ auto* write_options =
1154
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options);
1155
+ auto* cf_handle =
1156
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1157
+ if (cf_handle != nullptr) {
1158
+ rocksdb_delete_range_helper(env, db, *write_options, cf_handle, jbegin_key,
1159
+ jbegin_key_off, jbegin_key_len, jend_key,
1160
+ jend_key_off, jend_key_len);
1161
+ } else {
1162
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1163
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1164
+ "Invalid ColumnFamilyHandle."));
1165
+ }
1166
+ }
1167
+
1168
+ /*
1169
+ * Class: org_rocksdb_RocksDB
1170
+ * Method: getDirect
1171
+ * Signature: (JJLjava/nio/ByteBuffer;IILjava/nio/ByteBuffer;IIJ)I
1172
+ */
1173
+ jint Java_org_rocksdb_RocksDB_getDirect(JNIEnv* env, jobject /*jdb*/,
1174
+ jlong jdb_handle, jlong jropt_handle,
1175
+ jobject jkey, jint jkey_off,
1176
+ jint jkey_len, jobject jval,
1177
+ jint jval_off, jint jval_len,
1178
+ jlong jcf_handle) {
1179
+ auto* db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1180
+ auto* ro_opt =
1181
+ reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle);
1182
+ auto* cf_handle =
1183
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1184
+ bool has_exception = false;
1185
+ return rocksdb_get_helper_direct(
1186
+ env, db_handle,
1187
+ ro_opt == nullptr ? ROCKSDB_NAMESPACE::ReadOptions() : *ro_opt, cf_handle,
1188
+ jkey, jkey_off, jkey_len, jval, jval_off, jval_len, &has_exception);
1189
+ }
1190
+
1191
+ //////////////////////////////////////////////////////////////////////////////
1192
+ // ROCKSDB_NAMESPACE::DB::Merge
1193
+
1194
+ /**
1195
+ * @return true if the merge succeeded, false if a Java Exception was thrown
1196
+ */
1197
+ bool rocksdb_merge_helper(JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
1198
+ const ROCKSDB_NAMESPACE::WriteOptions& write_options,
1199
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle,
1200
+ jbyteArray jkey, jint jkey_off, jint jkey_len,
1201
+ jbyteArray jval, jint jval_off, jint jval_len) {
1202
+ jbyte* key = new jbyte[jkey_len];
1203
+ env->GetByteArrayRegion(jkey, jkey_off, jkey_len, key);
1204
+ if (env->ExceptionCheck()) {
1205
+ // exception thrown: ArrayIndexOutOfBoundsException
1206
+ delete[] key;
1207
+ return false;
1208
+ }
1209
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
1210
+
1211
+ jbyte* value = new jbyte[jval_len];
1212
+ env->GetByteArrayRegion(jval, jval_off, jval_len, value);
1213
+ if (env->ExceptionCheck()) {
1214
+ // exception thrown: ArrayIndexOutOfBoundsException
1215
+ delete[] value;
1216
+ delete[] key;
1217
+ return false;
1218
+ }
1219
+ ROCKSDB_NAMESPACE::Slice value_slice(reinterpret_cast<char*>(value),
1220
+ jval_len);
1221
+
1222
+ ROCKSDB_NAMESPACE::Status s;
1223
+ if (cf_handle != nullptr) {
1224
+ s = db->Merge(write_options, cf_handle, key_slice, value_slice);
1225
+ } else {
1226
+ s = db->Merge(write_options, key_slice, value_slice);
1227
+ }
1228
+
1229
+ // cleanup
1230
+ delete[] value;
1231
+ delete[] key;
1232
+
1233
+ if (s.ok()) {
1234
+ return true;
1235
+ }
1236
+
1237
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
1238
+ return false;
1239
+ }
1240
+
1241
+ /*
1242
+ * Class: org_rocksdb_RocksDB
1243
+ * Method: merge
1244
+ * Signature: (J[BII[BII)V
1245
+ */
1246
+ void Java_org_rocksdb_RocksDB_merge__J_3BII_3BII(JNIEnv* env, jobject,
1247
+ jlong jdb_handle,
1248
+ jbyteArray jkey, jint jkey_off,
1249
+ jint jkey_len, jbyteArray jval,
1250
+ jint jval_off, jint jval_len) {
1251
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1252
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
1253
+ ROCKSDB_NAMESPACE::WriteOptions();
1254
+ rocksdb_merge_helper(env, db, default_write_options, nullptr, jkey, jkey_off,
1255
+ jkey_len, jval, jval_off, jval_len);
1256
+ }
1257
+
1258
+ /*
1259
+ * Class: org_rocksdb_RocksDB
1260
+ * Method: merge
1261
+ * Signature: (J[BII[BIIJ)V
1262
+ */
1263
+ void Java_org_rocksdb_RocksDB_merge__J_3BII_3BIIJ(
1264
+ JNIEnv* env, jobject, jlong jdb_handle, jbyteArray jkey, jint jkey_off,
1265
+ jint jkey_len, jbyteArray jval, jint jval_off, jint jval_len,
1266
+ jlong jcf_handle) {
1267
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1268
+ static const ROCKSDB_NAMESPACE::WriteOptions default_write_options =
1269
+ ROCKSDB_NAMESPACE::WriteOptions();
1270
+ auto* cf_handle =
1271
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1272
+ if (cf_handle != nullptr) {
1273
+ rocksdb_merge_helper(env, db, default_write_options, cf_handle, jkey,
1274
+ jkey_off, jkey_len, jval, jval_off, jval_len);
1275
+ } else {
1276
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1277
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1278
+ "Invalid ColumnFamilyHandle."));
1279
+ }
1280
+ }
1281
+
1282
+ /*
1283
+ * Class: org_rocksdb_RocksDB
1284
+ * Method: merge
1285
+ * Signature: (JJ[BII[BII)V
1286
+ */
1287
+ void Java_org_rocksdb_RocksDB_merge__JJ_3BII_3BII(
1288
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jwrite_options_handle,
1289
+ jbyteArray jkey, jint jkey_off, jint jkey_len, jbyteArray jval,
1290
+ jint jval_off, jint jval_len) {
1291
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1292
+ auto* write_options =
1293
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options_handle);
1294
+ rocksdb_merge_helper(env, db, *write_options, nullptr, jkey, jkey_off,
1295
+ jkey_len, jval, jval_off, jval_len);
1296
+ }
1297
+
1298
+ /*
1299
+ * Class: org_rocksdb_RocksDB
1300
+ * Method: merge
1301
+ * Signature: (JJ[BII[BIIJ)V
1302
+ */
1303
+ void Java_org_rocksdb_RocksDB_merge__JJ_3BII_3BIIJ(
1304
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jwrite_options_handle,
1305
+ jbyteArray jkey, jint jkey_off, jint jkey_len, jbyteArray jval,
1306
+ jint jval_off, jint jval_len, jlong jcf_handle) {
1307
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1308
+ auto* write_options =
1309
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options_handle);
1310
+ auto* cf_handle =
1311
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1312
+ if (cf_handle != nullptr) {
1313
+ rocksdb_merge_helper(env, db, *write_options, cf_handle, jkey, jkey_off,
1314
+ jkey_len, jval, jval_off, jval_len);
1315
+ } else {
1316
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1317
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1318
+ "Invalid ColumnFamilyHandle."));
1319
+ }
1320
+ }
1321
+
1322
+ jlong rocksdb_iterator_helper(
1323
+ ROCKSDB_NAMESPACE::DB* db, ROCKSDB_NAMESPACE::ReadOptions read_options,
1324
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle) {
1325
+ ROCKSDB_NAMESPACE::Iterator* iterator = nullptr;
1326
+ if (cf_handle != nullptr) {
1327
+ iterator = db->NewIterator(read_options, cf_handle);
1328
+ } else {
1329
+ iterator = db->NewIterator(read_options);
1330
+ }
1331
+ return GET_CPLUSPLUS_POINTER(iterator);
1332
+ }
1333
+
1334
+ /*
1335
+ * Class: org_rocksdb_RocksDB
1336
+ * Method: deleteDirect
1337
+ * Signature: (JJLjava/nio/ByteBuffer;IIJ)V
1338
+ */
1339
+ void Java_org_rocksdb_RocksDB_deleteDirect(JNIEnv* env, jobject /*jdb*/,
1340
+ jlong jdb_handle,
1341
+ jlong jwrite_options, jobject jkey,
1342
+ jint jkey_offset, jint jkey_len,
1343
+ jlong jcf_handle) {
1344
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1345
+ auto* write_options =
1346
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options);
1347
+ auto* cf_handle =
1348
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1349
+ auto remove = [&env, &db, &write_options,
1350
+ &cf_handle](ROCKSDB_NAMESPACE::Slice& key) {
1351
+ ROCKSDB_NAMESPACE::Status s;
1352
+ if (cf_handle == nullptr) {
1353
+ s = db->Delete(*write_options, key);
1354
+ } else {
1355
+ s = db->Delete(*write_options, cf_handle, key);
1356
+ }
1357
+ if (s.ok()) {
1358
+ return;
1359
+ }
1360
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
1361
+ };
1362
+ ROCKSDB_NAMESPACE::JniUtil::k_op_direct(remove, env, jkey, jkey_offset,
1363
+ jkey_len);
1364
+ }
1365
+
1366
+ //////////////////////////////////////////////////////////////////////////////
1367
+ // ROCKSDB_NAMESPACE::DB::Write
1368
+ /*
1369
+ * Class: org_rocksdb_RocksDB
1370
+ * Method: write0
1371
+ * Signature: (JJJ)V
1372
+ */
1373
+ void Java_org_rocksdb_RocksDB_write0(JNIEnv* env, jobject, jlong jdb_handle,
1374
+ jlong jwrite_options_handle,
1375
+ jlong jwb_handle) {
1376
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1377
+ auto* write_options =
1378
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options_handle);
1379
+ auto* wb = reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatch*>(jwb_handle);
1380
+
1381
+ ROCKSDB_NAMESPACE::Status s = db->Write(*write_options, wb);
1382
+
1383
+ if (!s.ok()) {
1384
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
1385
+ }
1386
+ }
1387
+
1388
+ /*
1389
+ * Class: org_rocksdb_RocksDB
1390
+ * Method: write1
1391
+ * Signature: (JJJ)V
1392
+ */
1393
+ void Java_org_rocksdb_RocksDB_write1(JNIEnv* env, jobject, jlong jdb_handle,
1394
+ jlong jwrite_options_handle,
1395
+ jlong jwbwi_handle) {
1396
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1397
+ auto* write_options =
1398
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteOptions*>(jwrite_options_handle);
1399
+ auto* wbwi =
1400
+ reinterpret_cast<ROCKSDB_NAMESPACE::WriteBatchWithIndex*>(jwbwi_handle);
1401
+ auto* wb = wbwi->GetWriteBatch();
1402
+
1403
+ ROCKSDB_NAMESPACE::Status s = db->Write(*write_options, wb);
1404
+
1405
+ if (!s.ok()) {
1406
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
1407
+ }
1408
+ }
1409
+
1410
+ //////////////////////////////////////////////////////////////////////////////
1411
+ // ROCKSDB_NAMESPACE::DB::Get
1412
+
1413
+ jbyteArray rocksdb_get_helper(
1414
+ JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
1415
+ const ROCKSDB_NAMESPACE::ReadOptions& read_opt,
1416
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* column_family_handle,
1417
+ jbyteArray jkey, jint jkey_off, jint jkey_len) {
1418
+ jbyte* key = new jbyte[jkey_len];
1419
+ env->GetByteArrayRegion(jkey, jkey_off, jkey_len, key);
1420
+ if (env->ExceptionCheck()) {
1421
+ // exception thrown: ArrayIndexOutOfBoundsException
1422
+ delete[] key;
1423
+ return nullptr;
1424
+ }
1425
+
1426
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
1427
+
1428
+ ROCKSDB_NAMESPACE::PinnableSlice pinnable_value;
1429
+ ROCKSDB_NAMESPACE::Status s;
1430
+ if (column_family_handle != nullptr) {
1431
+ s = db->Get(read_opt, column_family_handle, key_slice, &pinnable_value);
1432
+ } else {
1433
+ s = db->Get(read_opt, db->DefaultColumnFamily(), key_slice,
1434
+ &pinnable_value);
1435
+ }
1436
+
1437
+ // cleanup
1438
+ delete[] key;
1439
+
1440
+ if (s.IsNotFound()) {
1441
+ return nullptr;
1442
+ }
1443
+
1444
+ if (s.ok()) {
1445
+ jbyteArray jret_value =
1446
+ ROCKSDB_NAMESPACE::JniUtil::copyBytes(env, pinnable_value);
1447
+ pinnable_value.Reset();
1448
+ if (jret_value == nullptr) {
1449
+ // exception occurred
1450
+ return nullptr;
1451
+ }
1452
+ return jret_value;
1453
+ }
1454
+
1455
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
1456
+ return nullptr;
1457
+ }
1458
+
1459
+ /*
1460
+ * Class: org_rocksdb_RocksDB
1461
+ * Method: get
1462
+ * Signature: (J[BII)[B
1463
+ */
1464
+ jbyteArray Java_org_rocksdb_RocksDB_get__J_3BII(JNIEnv* env, jobject,
1465
+ jlong jdb_handle,
1466
+ jbyteArray jkey, jint jkey_off,
1467
+ jint jkey_len) {
1468
+ return rocksdb_get_helper(
1469
+ env, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
1470
+ ROCKSDB_NAMESPACE::ReadOptions(), nullptr, jkey, jkey_off, jkey_len);
1471
+ }
1472
+
1473
+ /*
1474
+ * Class: org_rocksdb_RocksDB
1475
+ * Method: get
1476
+ * Signature: (J[BIIJ)[B
1477
+ */
1478
+ jbyteArray Java_org_rocksdb_RocksDB_get__J_3BIIJ(JNIEnv* env, jobject,
1479
+ jlong jdb_handle,
1480
+ jbyteArray jkey, jint jkey_off,
1481
+ jint jkey_len,
1482
+ jlong jcf_handle) {
1483
+ auto db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1484
+ auto cf_handle =
1485
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1486
+ if (cf_handle != nullptr) {
1487
+ return rocksdb_get_helper(env, db_handle, ROCKSDB_NAMESPACE::ReadOptions(),
1488
+ cf_handle, jkey, jkey_off, jkey_len);
1489
+ } else {
1490
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1491
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1492
+ "Invalid ColumnFamilyHandle."));
1493
+ return nullptr;
1494
+ }
1495
+ }
1496
+
1497
+ /*
1498
+ * Class: org_rocksdb_RocksDB
1499
+ * Method: get
1500
+ * Signature: (JJ[BII)[B
1501
+ */
1502
+ jbyteArray Java_org_rocksdb_RocksDB_get__JJ_3BII(JNIEnv* env, jobject,
1503
+ jlong jdb_handle,
1504
+ jlong jropt_handle,
1505
+ jbyteArray jkey, jint jkey_off,
1506
+ jint jkey_len) {
1507
+ return rocksdb_get_helper(
1508
+ env, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
1509
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle), nullptr,
1510
+ jkey, jkey_off, jkey_len);
1511
+ }
1512
+
1513
+ /*
1514
+ * Class: org_rocksdb_RocksDB
1515
+ * Method: get
1516
+ * Signature: (JJ[BIIJ)[B
1517
+ */
1518
+ jbyteArray Java_org_rocksdb_RocksDB_get__JJ_3BIIJ(
1519
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jropt_handle, jbyteArray jkey,
1520
+ jint jkey_off, jint jkey_len, jlong jcf_handle) {
1521
+ auto* db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1522
+ auto& ro_opt =
1523
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle);
1524
+ auto* cf_handle =
1525
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1526
+ if (cf_handle != nullptr) {
1527
+ return rocksdb_get_helper(env, db_handle, ro_opt, cf_handle, jkey, jkey_off,
1528
+ jkey_len);
1529
+ } else {
1530
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1531
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1532
+ "Invalid ColumnFamilyHandle."));
1533
+ return nullptr;
1534
+ }
1535
+ }
1536
+
1537
+ jint rocksdb_get_helper(
1538
+ JNIEnv* env, ROCKSDB_NAMESPACE::DB* db,
1539
+ const ROCKSDB_NAMESPACE::ReadOptions& read_options,
1540
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* column_family_handle,
1541
+ jbyteArray jkey, jint jkey_off, jint jkey_len, jbyteArray jval,
1542
+ jint jval_off, jint jval_len, bool* has_exception) {
1543
+ static const int kNotFound = -1;
1544
+ static const int kStatusError = -2;
1545
+
1546
+ jbyte* key = new jbyte[jkey_len];
1547
+ env->GetByteArrayRegion(jkey, jkey_off, jkey_len, key);
1548
+ if (env->ExceptionCheck()) {
1549
+ // exception thrown: OutOfMemoryError
1550
+ delete[] key;
1551
+ *has_exception = true;
1552
+ return kStatusError;
1553
+ }
1554
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
1555
+
1556
+ ROCKSDB_NAMESPACE::PinnableSlice pinnable_value;
1557
+ ROCKSDB_NAMESPACE::Status s;
1558
+ if (column_family_handle != nullptr) {
1559
+ s = db->Get(read_options, column_family_handle, key_slice, &pinnable_value);
1560
+ } else {
1561
+ s = db->Get(read_options, db->DefaultColumnFamily(), key_slice,
1562
+ &pinnable_value);
1563
+ }
1564
+
1565
+ // cleanup
1566
+ delete[] key;
1567
+
1568
+ if (s.IsNotFound()) {
1569
+ *has_exception = false;
1570
+ return kNotFound;
1571
+ } else if (!s.ok()) {
1572
+ *has_exception = true;
1573
+ // Here since we are throwing a Java exception from c++ side.
1574
+ // As a result, c++ does not know calling this function will in fact
1575
+ // throwing an exception. As a result, the execution flow will
1576
+ // not stop here, and codes after this throw will still be
1577
+ // executed.
1578
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
1579
+
1580
+ // Return a dummy const value to avoid compilation error, although
1581
+ // java side might not have a chance to get the return value :)
1582
+ return kStatusError;
1583
+ }
1584
+
1585
+ const jint pinnable_value_len = static_cast<jint>(pinnable_value.size());
1586
+ const jint length = std::min(jval_len, pinnable_value_len);
1587
+
1588
+ env->SetByteArrayRegion(jval, jval_off, length,
1589
+ const_cast<jbyte*>(reinterpret_cast<const jbyte*>(
1590
+ pinnable_value.data())));
1591
+ pinnable_value.Reset();
1592
+ if (env->ExceptionCheck()) {
1593
+ // exception thrown: OutOfMemoryError
1594
+ *has_exception = true;
1595
+ return kStatusError;
1596
+ }
1597
+
1598
+ *has_exception = false;
1599
+ return pinnable_value_len;
1600
+ }
1601
+
1602
+ /*
1603
+ * Class: org_rocksdb_RocksDB
1604
+ * Method: get
1605
+ * Signature: (J[BII[BII)I
1606
+ */
1607
+ jint Java_org_rocksdb_RocksDB_get__J_3BII_3BII(JNIEnv* env, jobject,
1608
+ jlong jdb_handle,
1609
+ jbyteArray jkey, jint jkey_off,
1610
+ jint jkey_len, jbyteArray jval,
1611
+ jint jval_off, jint jval_len) {
1612
+ bool has_exception = false;
1613
+ return rocksdb_get_helper(
1614
+ env, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
1615
+ ROCKSDB_NAMESPACE::ReadOptions(), nullptr, jkey, jkey_off, jkey_len, jval,
1616
+ jval_off, jval_len, &has_exception);
1617
+ }
1618
+
1619
+ /*
1620
+ * Class: org_rocksdb_RocksDB
1621
+ * Method: get
1622
+ * Signature: (J[BII[BIIJ)I
1623
+ */
1624
+ jint Java_org_rocksdb_RocksDB_get__J_3BII_3BIIJ(JNIEnv* env, jobject,
1625
+ jlong jdb_handle,
1626
+ jbyteArray jkey, jint jkey_off,
1627
+ jint jkey_len, jbyteArray jval,
1628
+ jint jval_off, jint jval_len,
1629
+ jlong jcf_handle) {
1630
+ auto* db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1631
+ auto* cf_handle =
1632
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1633
+ if (cf_handle != nullptr) {
1634
+ bool has_exception = false;
1635
+ return rocksdb_get_helper(env, db_handle, ROCKSDB_NAMESPACE::ReadOptions(),
1636
+ cf_handle, jkey, jkey_off, jkey_len, jval,
1637
+ jval_off, jval_len, &has_exception);
1638
+ } else {
1639
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1640
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1641
+ "Invalid ColumnFamilyHandle."));
1642
+ // will never be evaluated
1643
+ return 0;
1644
+ }
1645
+ }
1646
+
1647
+ /*
1648
+ * Class: org_rocksdb_RocksDB
1649
+ * Method: get
1650
+ * Signature: (JJ[BII[BII)I
1651
+ */
1652
+ jint Java_org_rocksdb_RocksDB_get__JJ_3BII_3BII(JNIEnv* env, jobject,
1653
+ jlong jdb_handle,
1654
+ jlong jropt_handle,
1655
+ jbyteArray jkey, jint jkey_off,
1656
+ jint jkey_len, jbyteArray jval,
1657
+ jint jval_off, jint jval_len) {
1658
+ bool has_exception = false;
1659
+ return rocksdb_get_helper(
1660
+ env, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
1661
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle), nullptr,
1662
+ jkey, jkey_off, jkey_len, jval, jval_off, jval_len, &has_exception);
1663
+ }
1664
+
1665
+ /*
1666
+ * Class: org_rocksdb_RocksDB
1667
+ * Method: get
1668
+ * Signature: (JJ[BII[BIIJ)I
1669
+ */
1670
+ jint Java_org_rocksdb_RocksDB_get__JJ_3BII_3BIIJ(
1671
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jropt_handle, jbyteArray jkey,
1672
+ jint jkey_off, jint jkey_len, jbyteArray jval, jint jval_off, jint jval_len,
1673
+ jlong jcf_handle) {
1674
+ auto* db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
1675
+ auto& ro_opt =
1676
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle);
1677
+ auto* cf_handle =
1678
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
1679
+ if (cf_handle != nullptr) {
1680
+ bool has_exception = false;
1681
+ return rocksdb_get_helper(env, db_handle, ro_opt, cf_handle, jkey, jkey_off,
1682
+ jkey_len, jval, jval_off, jval_len,
1683
+ &has_exception);
1684
+ } else {
1685
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
1686
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument(
1687
+ "Invalid ColumnFamilyHandle."));
1688
+ // will never be evaluated
1689
+ return 0;
1690
+ }
1691
+ }
1692
+
1693
+ inline void multi_get_helper_release_keys(std::vector<jbyte*>& keys_to_free) {
1694
+ auto end = keys_to_free.end();
1695
+ for (auto it = keys_to_free.begin(); it != end; ++it) {
1696
+ delete[] * it;
1697
+ }
1698
+ keys_to_free.clear();
1699
+ }
1700
+
1701
+ /**
1702
+ * @brief fill a native array of cf handles from java handles
1703
+ *
1704
+ * @param env
1705
+ * @param cf_handles to fill from the java variants
1706
+ * @param jcolumn_family_handles
1707
+ * @return true if the copy succeeds
1708
+ * @return false if a JNI exception is generated
1709
+ */
1710
+ inline bool cf_handles_from_jcf_handles(
1711
+ JNIEnv* env,
1712
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>& cf_handles,
1713
+ jlongArray jcolumn_family_handles) {
1714
+ if (jcolumn_family_handles != nullptr) {
1715
+ const jsize len_cols = env->GetArrayLength(jcolumn_family_handles);
1716
+
1717
+ jlong* jcfh = env->GetLongArrayElements(jcolumn_family_handles, nullptr);
1718
+ if (jcfh == nullptr) {
1719
+ // exception thrown: OutOfMemoryError
1720
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
1721
+ (env)->ThrowNew(exception_cls,
1722
+ "Insufficient Memory for CF handle array.");
1723
+ return false;
1724
+ }
1725
+
1726
+ for (jsize i = 0; i < len_cols; i++) {
1727
+ auto* cf_handle =
1728
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcfh[i]);
1729
+ cf_handles.push_back(cf_handle);
1730
+ }
1731
+ env->ReleaseLongArrayElements(jcolumn_family_handles, jcfh, JNI_ABORT);
1732
+ }
1733
+ return true;
1734
+ }
1735
+
1736
+ /**
1737
+ * @brief copy keys from JNI into vector of slices for Rocks API
1738
+ *
1739
+ * @param keys to instantiate
1740
+ * @param jkeys
1741
+ * @param jkey_offs
1742
+ * @param jkey_lens
1743
+ * @return true if the copy succeeds
1744
+ * @return false if a JNI exception is raised
1745
+ */
1746
+ inline bool keys_from_jkeys(JNIEnv* env,
1747
+ std::vector<ROCKSDB_NAMESPACE::Slice>& keys,
1748
+ std::vector<jbyte*>& keys_to_free,
1749
+ jobjectArray jkeys, jintArray jkey_offs,
1750
+ jintArray jkey_lens) {
1751
+ jint* jkey_off = env->GetIntArrayElements(jkey_offs, nullptr);
1752
+ if (jkey_off == nullptr) {
1753
+ // exception thrown: OutOfMemoryError
1754
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
1755
+ (env)->ThrowNew(exception_cls, "Insufficient Memory for key offset array.");
1756
+ return false;
1757
+ }
1758
+
1759
+ jint* jkey_len = env->GetIntArrayElements(jkey_lens, nullptr);
1760
+ if (jkey_len == nullptr) {
1761
+ // exception thrown: OutOfMemoryError
1762
+ env->ReleaseIntArrayElements(jkey_offs, jkey_off, JNI_ABORT);
1763
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
1764
+ (env)->ThrowNew(exception_cls, "Insufficient Memory for key length array.");
1765
+ return false;
1766
+ }
1767
+
1768
+ const jsize len_keys = env->GetArrayLength(jkeys);
1769
+ for (jsize i = 0; i < len_keys; i++) {
1770
+ jobject jkey = env->GetObjectArrayElement(jkeys, i);
1771
+ if (env->ExceptionCheck()) {
1772
+ // exception thrown: ArrayIndexOutOfBoundsException
1773
+ env->ReleaseIntArrayElements(jkey_lens, jkey_len, JNI_ABORT);
1774
+ env->ReleaseIntArrayElements(jkey_offs, jkey_off, JNI_ABORT);
1775
+ multi_get_helper_release_keys(keys_to_free);
1776
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
1777
+ (env)->ThrowNew(exception_cls,
1778
+ "Insufficient Memory for key object array.");
1779
+ return false;
1780
+ }
1781
+
1782
+ jbyteArray jkey_ba = reinterpret_cast<jbyteArray>(jkey);
1783
+
1784
+ const jint len_key = jkey_len[i];
1785
+ jbyte* key = new jbyte[len_key];
1786
+ env->GetByteArrayRegion(jkey_ba, jkey_off[i], len_key, key);
1787
+ if (env->ExceptionCheck()) {
1788
+ // exception thrown: ArrayIndexOutOfBoundsException
1789
+ delete[] key;
1790
+ env->DeleteLocalRef(jkey);
1791
+ env->ReleaseIntArrayElements(jkey_lens, jkey_len, JNI_ABORT);
1792
+ env->ReleaseIntArrayElements(jkey_offs, jkey_off, JNI_ABORT);
1793
+ multi_get_helper_release_keys(keys_to_free);
1794
+ jclass exception_cls =
1795
+ (env)->FindClass("java/lang/ArrayIndexOutOfBoundsException");
1796
+ (env)->ThrowNew(exception_cls, "Invalid byte array region index.");
1797
+ return false;
1798
+ }
1799
+
1800
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), len_key);
1801
+ keys.push_back(key_slice);
1802
+
1803
+ env->DeleteLocalRef(jkey);
1804
+ keys_to_free.push_back(key);
1805
+ }
1806
+
1807
+ // cleanup jkey_off and jken_len
1808
+ env->ReleaseIntArrayElements(jkey_lens, jkey_len, JNI_ABORT);
1809
+ env->ReleaseIntArrayElements(jkey_offs, jkey_off, JNI_ABORT);
1810
+
1811
+ return true;
1812
+ }
1813
+
1814
+ inline bool keys_from_bytebuffers(JNIEnv* env,
1815
+ std::vector<ROCKSDB_NAMESPACE::Slice>& keys,
1816
+ jobjectArray jkeys, jintArray jkey_offs,
1817
+ jintArray jkey_lens) {
1818
+ jint* jkey_off = env->GetIntArrayElements(jkey_offs, nullptr);
1819
+ if (jkey_off == nullptr) {
1820
+ // exception thrown: OutOfMemoryError
1821
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
1822
+ (env)->ThrowNew(exception_cls, "Insufficient Memory for key offset array.");
1823
+ return false;
1824
+ }
1825
+
1826
+ jint* jkey_len = env->GetIntArrayElements(jkey_lens, nullptr);
1827
+ if (jkey_len == nullptr) {
1828
+ // exception thrown: OutOfMemoryError
1829
+ env->ReleaseIntArrayElements(jkey_offs, jkey_off, JNI_ABORT);
1830
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
1831
+ (env)->ThrowNew(exception_cls, "Insufficient Memory for key length array.");
1832
+ return false;
1833
+ }
1834
+
1835
+ const jsize len_keys = env->GetArrayLength(jkeys);
1836
+ for (jsize i = 0; i < len_keys; i++) {
1837
+ jobject jkey = env->GetObjectArrayElement(jkeys, i);
1838
+ if (env->ExceptionCheck()) {
1839
+ // exception thrown: ArrayIndexOutOfBoundsException
1840
+ // cleanup jkey_off and jkey_len
1841
+ env->ReleaseIntArrayElements(jkey_lens, jkey_len, JNI_ABORT);
1842
+ env->ReleaseIntArrayElements(jkey_offs, jkey_off, JNI_ABORT);
1843
+
1844
+ return false;
1845
+ }
1846
+ char* key = reinterpret_cast<char*>(env->GetDirectBufferAddress(jkey));
1847
+ ROCKSDB_NAMESPACE::Slice key_slice(key + jkey_off[i], jkey_len[i]);
1848
+ keys.push_back(key_slice);
1849
+
1850
+ env->DeleteLocalRef(jkey);
1851
+ }
1852
+
1853
+ // cleanup jkey_off and jkey_len
1854
+ env->ReleaseIntArrayElements(jkey_lens, jkey_len, JNI_ABORT);
1855
+ env->ReleaseIntArrayElements(jkey_offs, jkey_off, JNI_ABORT);
1856
+
1857
+ return true;
1858
+ }
1859
+
1860
+ /**
1861
+ * cf multi get
1862
+ *
1863
+ * @return byte[][] of values or nullptr if an
1864
+ * exception occurs
1865
+ */
1866
+ jobjectArray multi_get_helper(JNIEnv* env, jobject, ROCKSDB_NAMESPACE::DB* db,
1867
+ const ROCKSDB_NAMESPACE::ReadOptions& rOpt,
1868
+ jobjectArray jkeys, jintArray jkey_offs,
1869
+ jintArray jkey_lens,
1870
+ jlongArray jcolumn_family_handles) {
1871
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
1872
+ if (!cf_handles_from_jcf_handles(env, cf_handles, jcolumn_family_handles)) {
1873
+ return nullptr;
1874
+ }
1875
+
1876
+ std::vector<ROCKSDB_NAMESPACE::Slice> keys;
1877
+ std::vector<jbyte*> keys_to_free;
1878
+ if (!keys_from_jkeys(env, keys, keys_to_free, jkeys, jkey_offs, jkey_lens)) {
1879
+ return nullptr;
1880
+ }
1881
+
1882
+ std::vector<std::string> values;
1883
+ std::vector<ROCKSDB_NAMESPACE::Status> s;
1884
+ if (cf_handles.size() == 0) {
1885
+ s = db->MultiGet(rOpt, keys, &values);
1886
+ } else {
1887
+ s = db->MultiGet(rOpt, cf_handles, keys, &values);
1888
+ }
1889
+
1890
+ // free up allocated byte arrays
1891
+ multi_get_helper_release_keys(keys_to_free);
1892
+
1893
+ // prepare the results
1894
+ jobjectArray jresults = ROCKSDB_NAMESPACE::ByteJni::new2dByteArray(
1895
+ env, static_cast<jsize>(s.size()));
1896
+ if (jresults == nullptr) {
1897
+ // exception occurred
1898
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
1899
+ (env)->ThrowNew(exception_cls, "Insufficient Memory for results.");
1900
+ return nullptr;
1901
+ }
1902
+
1903
+ // add to the jresults
1904
+ for (std::vector<ROCKSDB_NAMESPACE::Status>::size_type i = 0; i != s.size();
1905
+ i++) {
1906
+ if (s[i].ok()) {
1907
+ std::string* value = &values[i];
1908
+ const jsize jvalue_len = static_cast<jsize>(value->size());
1909
+ jbyteArray jentry_value = env->NewByteArray(jvalue_len);
1910
+ if (jentry_value == nullptr) {
1911
+ // exception thrown: OutOfMemoryError
1912
+ return nullptr;
1913
+ }
1914
+
1915
+ env->SetByteArrayRegion(
1916
+ jentry_value, 0, static_cast<jsize>(jvalue_len),
1917
+ const_cast<jbyte*>(reinterpret_cast<const jbyte*>(value->c_str())));
1918
+ if (env->ExceptionCheck()) {
1919
+ // exception thrown:
1920
+ // ArrayIndexOutOfBoundsException
1921
+ env->DeleteLocalRef(jentry_value);
1922
+ return nullptr;
1923
+ }
1924
+
1925
+ env->SetObjectArrayElement(jresults, static_cast<jsize>(i), jentry_value);
1926
+ if (env->ExceptionCheck()) {
1927
+ // exception thrown:
1928
+ // ArrayIndexOutOfBoundsException
1929
+ env->DeleteLocalRef(jentry_value);
1930
+ return nullptr;
1931
+ }
1932
+
1933
+ env->DeleteLocalRef(jentry_value);
1934
+ }
1935
+ }
1936
+
1937
+ return jresults;
1938
+ }
1939
+
1940
+ /**
1941
+ * cf multi get
1942
+ *
1943
+ * fill supplied native buffers, or raise JNI
1944
+ * exception on a problem
1945
+ */
1946
+
1947
+ /**
1948
+ * @brief multi_get_helper_direct for fast-path multiget (io_uring) on Linux
1949
+ *
1950
+ * @param env
1951
+ * @param db
1952
+ * @param rOpt read options
1953
+ * @param jcolumn_family_handles 0, 1, or n column family handles
1954
+ * @param jkeys
1955
+ * @param jkey_offsets
1956
+ * @param jkey_lengths
1957
+ * @param jvalues byte buffers to receive values
1958
+ * @param jvalue_sizes returned actual sizes of data values for keys
1959
+ * @param jstatuses returned java RocksDB status values for per key
1960
+ */
1961
+ void multi_get_helper_direct(JNIEnv* env, jobject, ROCKSDB_NAMESPACE::DB* db,
1962
+ const ROCKSDB_NAMESPACE::ReadOptions& rOpt,
1963
+ jlongArray jcolumn_family_handles,
1964
+ jobjectArray jkeys, jintArray jkey_offsets,
1965
+ jintArray jkey_lengths, jobjectArray jvalues,
1966
+ jintArray jvalue_sizes, jobjectArray jstatuses) {
1967
+ const jsize num_keys = env->GetArrayLength(jkeys);
1968
+
1969
+ std::vector<ROCKSDB_NAMESPACE::Slice> keys;
1970
+ if (!keys_from_bytebuffers(env, keys, jkeys, jkey_offsets, jkey_lengths)) {
1971
+ return;
1972
+ }
1973
+
1974
+ std::vector<ROCKSDB_NAMESPACE::PinnableSlice> values(num_keys);
1975
+
1976
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
1977
+ if (!cf_handles_from_jcf_handles(env, cf_handles, jcolumn_family_handles)) {
1978
+ return;
1979
+ }
1980
+
1981
+ std::vector<ROCKSDB_NAMESPACE::Status> s(num_keys);
1982
+ if (cf_handles.size() == 0) {
1983
+ // we can use the more efficient call here
1984
+ auto cf_handle = db->DefaultColumnFamily();
1985
+ db->MultiGet(rOpt, cf_handle, num_keys, keys.data(), values.data(),
1986
+ s.data());
1987
+ } else if (cf_handles.size() == 1) {
1988
+ // we can use the more efficient call here
1989
+ auto cf_handle = cf_handles[0];
1990
+ db->MultiGet(rOpt, cf_handle, num_keys, keys.data(), values.data(),
1991
+ s.data());
1992
+ } else {
1993
+ // multiple CFs version
1994
+ db->MultiGet(rOpt, num_keys, cf_handles.data(), keys.data(), values.data(),
1995
+ s.data());
1996
+ }
1997
+
1998
+ // prepare the results
1999
+ jobjectArray jresults = ROCKSDB_NAMESPACE::ByteJni::new2dByteArray(
2000
+ env, static_cast<jsize>(s.size()));
2001
+ if (jresults == nullptr) {
2002
+ // exception occurred
2003
+ jclass exception_cls = (env)->FindClass("java/lang/OutOfMemoryError");
2004
+ (env)->ThrowNew(exception_cls, "Insufficient Memory for results.");
2005
+ return;
2006
+ }
2007
+
2008
+ std::vector<jint> value_size;
2009
+ for (int i = 0; i < num_keys; i++) {
2010
+ auto jstatus = ROCKSDB_NAMESPACE::StatusJni::construct(env, s[i]);
2011
+ if (jstatus == nullptr) {
2012
+ // exception in context
2013
+ return;
2014
+ }
2015
+ env->SetObjectArrayElement(jstatuses, i, jstatus);
2016
+
2017
+ if (s[i].ok()) {
2018
+ jobject jvalue_bytebuf = env->GetObjectArrayElement(jvalues, i);
2019
+ if (env->ExceptionCheck()) {
2020
+ // ArrayIndexOutOfBoundsException is thrown
2021
+ return;
2022
+ }
2023
+ jlong jvalue_capacity = env->GetDirectBufferCapacity(jvalue_bytebuf);
2024
+ if (jvalue_capacity == -1) {
2025
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2026
+ env,
2027
+ "Invalid value(s) argument (argument is not a valid direct "
2028
+ "ByteBuffer)");
2029
+ return;
2030
+ }
2031
+ void* jvalue_address = env->GetDirectBufferAddress(jvalue_bytebuf);
2032
+ if (jvalue_address == nullptr) {
2033
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2034
+ env,
2035
+ "Invalid value(s) argument (argument is not a valid direct "
2036
+ "ByteBuffer)");
2037
+ return;
2038
+ }
2039
+
2040
+ // record num returned, push back that number, which may be bigger then
2041
+ // the ByteBuffer supplied. then copy as much as fits in the ByteBuffer.
2042
+ value_size.push_back(static_cast<jint>(values[i].size()));
2043
+ auto copy_bytes =
2044
+ std::min(static_cast<jlong>(values[i].size()), jvalue_capacity);
2045
+ memcpy(jvalue_address, values[i].data(), copy_bytes);
2046
+ } else {
2047
+ // bad status for this
2048
+ value_size.push_back(0);
2049
+ }
2050
+ }
2051
+
2052
+ env->SetIntArrayRegion(jvalue_sizes, 0, num_keys, value_size.data());
2053
+ }
2054
+
2055
+ /*
2056
+ * Class: org_rocksdb_RocksDB
2057
+ * Method: multiGet
2058
+ * Signature: (J[[B[I[I)[[B
2059
+ */
2060
+ jobjectArray Java_org_rocksdb_RocksDB_multiGet__J_3_3B_3I_3I(
2061
+ JNIEnv* env, jobject jdb, jlong jdb_handle, jobjectArray jkeys,
2062
+ jintArray jkey_offs, jintArray jkey_lens) {
2063
+ return multi_get_helper(
2064
+ env, jdb, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
2065
+ ROCKSDB_NAMESPACE::ReadOptions(), jkeys, jkey_offs, jkey_lens, nullptr);
2066
+ }
2067
+
2068
+ /*
2069
+ * Class: org_rocksdb_RocksDB
2070
+ * Method: multiGet
2071
+ * Signature: (J[[B[I[I[J)[[B
2072
+ */
2073
+ jobjectArray Java_org_rocksdb_RocksDB_multiGet__J_3_3B_3I_3I_3J(
2074
+ JNIEnv* env, jobject jdb, jlong jdb_handle, jobjectArray jkeys,
2075
+ jintArray jkey_offs, jintArray jkey_lens,
2076
+ jlongArray jcolumn_family_handles) {
2077
+ return multi_get_helper(env, jdb,
2078
+ reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
2079
+ ROCKSDB_NAMESPACE::ReadOptions(), jkeys, jkey_offs,
2080
+ jkey_lens, jcolumn_family_handles);
2081
+ }
2082
+
2083
+ /*
2084
+ * Class: org_rocksdb_RocksDB
2085
+ * Method: multiGet
2086
+ * Signature: (JJ[[B[I[I)[[B
2087
+ */
2088
+ jobjectArray Java_org_rocksdb_RocksDB_multiGet__JJ_3_3B_3I_3I(
2089
+ JNIEnv* env, jobject jdb, jlong jdb_handle, jlong jropt_handle,
2090
+ jobjectArray jkeys, jintArray jkey_offs, jintArray jkey_lens) {
2091
+ return multi_get_helper(
2092
+ env, jdb, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
2093
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle), jkeys,
2094
+ jkey_offs, jkey_lens, nullptr);
2095
+ }
2096
+
2097
+ /*
2098
+ * Class: org_rocksdb_RocksDB
2099
+ * Method: multiGet
2100
+ * Signature: (JJ[[B[I[I[J)[[B
2101
+ */
2102
+ jobjectArray Java_org_rocksdb_RocksDB_multiGet__JJ_3_3B_3I_3I_3J(
2103
+ JNIEnv* env, jobject jdb, jlong jdb_handle, jlong jropt_handle,
2104
+ jobjectArray jkeys, jintArray jkey_offs, jintArray jkey_lens,
2105
+ jlongArray jcolumn_family_handles) {
2106
+ return multi_get_helper(
2107
+ env, jdb, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
2108
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle), jkeys,
2109
+ jkey_offs, jkey_lens, jcolumn_family_handles);
2110
+ }
2111
+
2112
+ /*
2113
+ * Class: org_rocksdb_RocksDB
2114
+ * Method: multiGet
2115
+ * Signature:
2116
+ * (JJ[J[Ljava/nio/ByteBuffer;[I[I[Ljava/nio/ByteBuffer;[I[Lorg/rocksdb/Status;)V
2117
+ */
2118
+ void Java_org_rocksdb_RocksDB_multiGet__JJ_3J_3Ljava_nio_ByteBuffer_2_3I_3I_3Ljava_nio_ByteBuffer_2_3I_3Lorg_rocksdb_Status_2(
2119
+ JNIEnv* env, jobject jdb, jlong jdb_handle, jlong jropt_handle,
2120
+ jlongArray jcolumn_family_handles, jobjectArray jkeys,
2121
+ jintArray jkey_offsets, jintArray jkey_lengths, jobjectArray jvalues,
2122
+ jintArray jvalues_sizes, jobjectArray jstatus_objects) {
2123
+ return multi_get_helper_direct(
2124
+ env, jdb, reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle),
2125
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jropt_handle),
2126
+ jcolumn_family_handles, jkeys, jkey_offsets, jkey_lengths, jvalues,
2127
+ jvalues_sizes, jstatus_objects);
2128
+ }
2129
+ // private native void
2130
+ // multiGet(final long dbHandle, final long rOptHandle,
2131
+ // final long[] columnFamilyHandles, final ByteBuffer[] keysArray,
2132
+ // final ByteBuffer[] valuesArray);
2133
+
2134
+ //////////////////////////////////////////////////////////////////////////////
2135
+ // ROCKSDB_NAMESPACE::DB::KeyMayExist
2136
+ bool key_may_exist_helper(JNIEnv* env, jlong jdb_handle, jlong jcf_handle,
2137
+ jlong jread_opts_handle, jbyteArray jkey,
2138
+ jint jkey_offset, jint jkey_len, bool* has_exception,
2139
+ std::string* value, bool* value_found) {
2140
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2141
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2142
+ if (jcf_handle == 0) {
2143
+ cf_handle = db->DefaultColumnFamily();
2144
+ } else {
2145
+ cf_handle =
2146
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2147
+ }
2148
+ ROCKSDB_NAMESPACE::ReadOptions read_opts =
2149
+ jread_opts_handle == 0
2150
+ ? ROCKSDB_NAMESPACE::ReadOptions()
2151
+ : *(reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(
2152
+ jread_opts_handle));
2153
+
2154
+ jbyte* key = new jbyte[jkey_len];
2155
+ env->GetByteArrayRegion(jkey, jkey_offset, jkey_len, key);
2156
+ if (env->ExceptionCheck()) {
2157
+ // exception thrown: ArrayIndexOutOfBoundsException
2158
+ delete[] key;
2159
+ *has_exception = true;
2160
+ return false;
2161
+ }
2162
+ ROCKSDB_NAMESPACE::Slice key_slice(reinterpret_cast<char*>(key), jkey_len);
2163
+
2164
+ const bool exists =
2165
+ db->KeyMayExist(read_opts, cf_handle, key_slice, value, value_found);
2166
+
2167
+ // cleanup
2168
+ delete[] key;
2169
+
2170
+ return exists;
2171
+ }
2172
+
2173
+ bool key_may_exist_direct_helper(JNIEnv* env, jlong jdb_handle,
2174
+ jlong jcf_handle, jlong jread_opts_handle,
2175
+ jobject jkey, jint jkey_offset, jint jkey_len,
2176
+ bool* has_exception, std::string* value,
2177
+ bool* value_found) {
2178
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2179
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2180
+ if (jcf_handle == 0) {
2181
+ cf_handle = db->DefaultColumnFamily();
2182
+ } else {
2183
+ cf_handle =
2184
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2185
+ }
2186
+ ROCKSDB_NAMESPACE::ReadOptions read_opts =
2187
+ jread_opts_handle == 0
2188
+ ? ROCKSDB_NAMESPACE::ReadOptions()
2189
+ : *(reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(
2190
+ jread_opts_handle));
2191
+
2192
+ char* key = reinterpret_cast<char*>(env->GetDirectBufferAddress(jkey));
2193
+ if (key == nullptr) {
2194
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2195
+ env,
2196
+ "Invalid key argument (argument is not a valid direct ByteBuffer)");
2197
+ *has_exception = true;
2198
+ return false;
2199
+ }
2200
+ if (env->GetDirectBufferCapacity(jkey) < (jkey_offset + jkey_len)) {
2201
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2202
+ env,
2203
+ "Invalid key argument. Capacity is less than requested region (offset "
2204
+ "+ length).");
2205
+ *has_exception = true;
2206
+ return false;
2207
+ }
2208
+
2209
+ ROCKSDB_NAMESPACE::Slice key_slice(key, jkey_len);
2210
+
2211
+ const bool exists =
2212
+ db->KeyMayExist(read_opts, cf_handle, key_slice, value, value_found);
2213
+
2214
+ return exists;
2215
+ }
2216
+
2217
+ /*
2218
+ * Class: org_rocksdb_RocksDB
2219
+ * Method: keyMayExist
2220
+ * Signature: (JJJ[BII)Z
2221
+ */
2222
+ jboolean Java_org_rocksdb_RocksDB_keyMayExist(
2223
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
2224
+ jlong jread_opts_handle, jbyteArray jkey, jint jkey_offset, jint jkey_len) {
2225
+ bool has_exception = false;
2226
+ std::string value;
2227
+ bool value_found = false;
2228
+
2229
+ const bool exists = key_may_exist_helper(
2230
+ env, jdb_handle, jcf_handle, jread_opts_handle, jkey, jkey_offset,
2231
+ jkey_len, &has_exception, &value, &value_found);
2232
+
2233
+ if (has_exception) {
2234
+ // java exception already raised
2235
+ return false;
2236
+ }
2237
+
2238
+ return static_cast<jboolean>(exists);
2239
+ }
2240
+
2241
+ /*
2242
+ * Class: org_rocksdb_RocksDB
2243
+ * Method: keyMayExistDirect
2244
+ * Signature: (JJJLjava/nio/ByteBuffer;II)Z
2245
+ */
2246
+ jboolean Java_org_rocksdb_RocksDB_keyMayExistDirect(
2247
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
2248
+ jlong jread_opts_handle, jobject jkey, jint jkey_offset, jint jkey_len) {
2249
+ bool has_exception = false;
2250
+ std::string value;
2251
+ bool value_found = false;
2252
+
2253
+ const bool exists = key_may_exist_direct_helper(
2254
+ env, jdb_handle, jcf_handle, jread_opts_handle, jkey, jkey_offset,
2255
+ jkey_len, &has_exception, &value, &value_found);
2256
+ if (has_exception) {
2257
+ // java exception already raised
2258
+ return false;
2259
+ }
2260
+
2261
+ return static_cast<jboolean>(exists);
2262
+ }
2263
+
2264
+ /*
2265
+ * Class: org_rocksdb_RocksDB
2266
+ * Method: keyMayExistDirectFoundValue
2267
+ * Signature:
2268
+ * (JJJLjava/nio/ByteBuffer;IILjava/nio/ByteBuffer;II)[J
2269
+ */
2270
+ jintArray Java_org_rocksdb_RocksDB_keyMayExistDirectFoundValue(
2271
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
2272
+ jlong jread_opts_handle, jobject jkey, jint jkey_offset, jint jkey_len,
2273
+ jobject jval, jint jval_offset, jint jval_len) {
2274
+ char* val_buffer = reinterpret_cast<char*>(env->GetDirectBufferAddress(jval));
2275
+ if (val_buffer == nullptr) {
2276
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2277
+ env,
2278
+ "Invalid value argument (argument is not a valid direct ByteBuffer)");
2279
+ return nullptr;
2280
+ }
2281
+
2282
+ if (env->GetDirectBufferCapacity(jval) < (jval_offset + jval_len)) {
2283
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2284
+ env,
2285
+ "Invalid value argument. Capacity is less than requested region "
2286
+ "(offset + length).");
2287
+ return nullptr;
2288
+ }
2289
+
2290
+ bool has_exception = false;
2291
+ std::string cvalue;
2292
+ bool value_found = false;
2293
+
2294
+ const bool exists = key_may_exist_direct_helper(
2295
+ env, jdb_handle, jcf_handle, jread_opts_handle, jkey, jkey_offset,
2296
+ jkey_len, &has_exception, &cvalue, &value_found);
2297
+
2298
+ if (has_exception) {
2299
+ // java exception already raised
2300
+ return nullptr;
2301
+ }
2302
+
2303
+ const jint cvalue_len = static_cast<jint>(cvalue.size());
2304
+ const jint length = std::min(jval_len, cvalue_len);
2305
+ memcpy(val_buffer + jval_offset, cvalue.c_str(), length);
2306
+
2307
+ // keep consistent with java KeyMayExistEnum.values()
2308
+ const int kNotExist = 0;
2309
+ const int kExistsWithoutValue = 1;
2310
+ const int kExistsWithValue = 2;
2311
+
2312
+ // TODO fix return value/type
2313
+ // exists/value_found/neither
2314
+ // cvalue_len
2315
+ jintArray jresult = env->NewIntArray(2);
2316
+ const jint jexists =
2317
+ exists ? (value_found ? kExistsWithValue : kExistsWithoutValue)
2318
+ : kNotExist;
2319
+
2320
+ env->SetIntArrayRegion(jresult, 0, 1, &jexists);
2321
+ if (env->ExceptionCheck()) {
2322
+ // exception thrown: ArrayIndexOutOfBoundsException
2323
+ env->DeleteLocalRef(jresult);
2324
+ return nullptr;
2325
+ }
2326
+ env->SetIntArrayRegion(jresult, 1, 1, &cvalue_len);
2327
+ if (env->ExceptionCheck()) {
2328
+ // exception thrown: ArrayIndexOutOfBoundsException
2329
+ env->DeleteLocalRef(jresult);
2330
+ return nullptr;
2331
+ }
2332
+
2333
+ return jresult;
2334
+ }
2335
+
2336
+ /*
2337
+ * Class: org_rocksdb_RocksDB
2338
+ * Method: keyMayExistFoundValue
2339
+ * Signature: (JJJ[BII)[[B
2340
+ */
2341
+ jobjectArray Java_org_rocksdb_RocksDB_keyMayExistFoundValue(
2342
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
2343
+ jlong jread_opts_handle, jbyteArray jkey, jint jkey_offset, jint jkey_len) {
2344
+ bool has_exception = false;
2345
+ std::string value;
2346
+ bool value_found = false;
2347
+
2348
+ const bool exists = key_may_exist_helper(
2349
+ env, jdb_handle, jcf_handle, jread_opts_handle, jkey, jkey_offset,
2350
+ jkey_len, &has_exception, &value, &value_found);
2351
+
2352
+ if (has_exception) {
2353
+ // java exception already raised
2354
+ return nullptr;
2355
+ }
2356
+
2357
+ jbyte result_flags[1];
2358
+ if (!exists) {
2359
+ result_flags[0] = 0;
2360
+ } else if (!value_found) {
2361
+ result_flags[0] = 1;
2362
+ } else {
2363
+ // found
2364
+ result_flags[0] = 2;
2365
+ }
2366
+
2367
+ jobjectArray jresults = ROCKSDB_NAMESPACE::ByteJni::new2dByteArray(env, 2);
2368
+ if (jresults == nullptr) {
2369
+ // exception occurred
2370
+ return nullptr;
2371
+ }
2372
+
2373
+ // prepare the result flag
2374
+ jbyteArray jresult_flags = env->NewByteArray(1);
2375
+ if (jresult_flags == nullptr) {
2376
+ // exception thrown: OutOfMemoryError
2377
+ return nullptr;
2378
+ }
2379
+ env->SetByteArrayRegion(jresult_flags, 0, 1, result_flags);
2380
+ if (env->ExceptionCheck()) {
2381
+ // exception thrown: ArrayIndexOutOfBoundsException
2382
+ env->DeleteLocalRef(jresult_flags);
2383
+ return nullptr;
2384
+ }
2385
+
2386
+ env->SetObjectArrayElement(jresults, 0, jresult_flags);
2387
+ if (env->ExceptionCheck()) {
2388
+ // exception thrown: ArrayIndexOutOfBoundsException
2389
+ env->DeleteLocalRef(jresult_flags);
2390
+ return nullptr;
2391
+ }
2392
+
2393
+ env->DeleteLocalRef(jresult_flags);
2394
+
2395
+ if (result_flags[0] == 2) {
2396
+ // set the value
2397
+ const jsize jvalue_len = static_cast<jsize>(value.size());
2398
+ jbyteArray jresult_value = env->NewByteArray(jvalue_len);
2399
+ if (jresult_value == nullptr) {
2400
+ // exception thrown: OutOfMemoryError
2401
+ return nullptr;
2402
+ }
2403
+ env->SetByteArrayRegion(
2404
+ jresult_value, 0, jvalue_len,
2405
+ const_cast<jbyte*>(reinterpret_cast<const jbyte*>(value.data())));
2406
+ if (env->ExceptionCheck()) {
2407
+ // exception thrown: ArrayIndexOutOfBoundsException
2408
+ env->DeleteLocalRef(jresult_value);
2409
+ return nullptr;
2410
+ }
2411
+ env->SetObjectArrayElement(jresults, 1, jresult_value);
2412
+ if (env->ExceptionCheck()) {
2413
+ // exception thrown: ArrayIndexOutOfBoundsException
2414
+ env->DeleteLocalRef(jresult_value);
2415
+ return nullptr;
2416
+ }
2417
+
2418
+ env->DeleteLocalRef(jresult_value);
2419
+ }
2420
+
2421
+ return jresults;
2422
+ }
2423
+
2424
+ /*
2425
+ * Class: org_rocksdb_RocksDB
2426
+ * Method: iterator
2427
+ * Signature: (J)J
2428
+ */
2429
+ jlong Java_org_rocksdb_RocksDB_iterator__J(JNIEnv*, jobject, jlong db_handle) {
2430
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2431
+ return rocksdb_iterator_helper(db, ROCKSDB_NAMESPACE::ReadOptions(), nullptr);
2432
+ }
2433
+
2434
+ /*
2435
+ * Class: org_rocksdb_RocksDB
2436
+ * Method: iterator
2437
+ * Signature: (JJ)J
2438
+ */
2439
+ jlong Java_org_rocksdb_RocksDB_iterator__JJ(JNIEnv*, jobject, jlong db_handle,
2440
+ jlong jread_options_handle) {
2441
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2442
+ auto& read_options =
2443
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jread_options_handle);
2444
+ return rocksdb_iterator_helper(db, read_options, nullptr);
2445
+ }
2446
+
2447
+ /*
2448
+ * Class: org_rocksdb_RocksDB
2449
+ * Method: iteratorCF
2450
+ * Signature: (JJ)J
2451
+ */
2452
+ jlong Java_org_rocksdb_RocksDB_iteratorCF__JJ(JNIEnv*, jobject, jlong db_handle,
2453
+ jlong jcf_handle) {
2454
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2455
+ auto* cf_handle =
2456
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2457
+ return rocksdb_iterator_helper(db, ROCKSDB_NAMESPACE::ReadOptions(),
2458
+ cf_handle);
2459
+ }
2460
+
2461
+ /*
2462
+ * Class: org_rocksdb_RocksDB
2463
+ * Method: iteratorCF
2464
+ * Signature: (JJJ)J
2465
+ */
2466
+ jlong Java_org_rocksdb_RocksDB_iteratorCF__JJJ(JNIEnv*, jobject,
2467
+ jlong db_handle,
2468
+ jlong jcf_handle,
2469
+ jlong jread_options_handle) {
2470
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2471
+ auto* cf_handle =
2472
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2473
+ auto& read_options =
2474
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jread_options_handle);
2475
+ return rocksdb_iterator_helper(db, read_options, cf_handle);
2476
+ }
2477
+
2478
+ /*
2479
+ * Class: org_rocksdb_RocksDB
2480
+ * Method: iterators
2481
+ * Signature: (J[JJ)[J
2482
+ */
2483
+ jlongArray Java_org_rocksdb_RocksDB_iterators(JNIEnv* env, jobject,
2484
+ jlong db_handle,
2485
+ jlongArray jcolumn_family_handles,
2486
+ jlong jread_options_handle) {
2487
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2488
+ auto& read_options =
2489
+ *reinterpret_cast<ROCKSDB_NAMESPACE::ReadOptions*>(jread_options_handle);
2490
+
2491
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
2492
+ if (jcolumn_family_handles != nullptr) {
2493
+ const jsize len_cols = env->GetArrayLength(jcolumn_family_handles);
2494
+ jlong* jcfh = env->GetLongArrayElements(jcolumn_family_handles, nullptr);
2495
+ if (jcfh == nullptr) {
2496
+ // exception thrown: OutOfMemoryError
2497
+ return nullptr;
2498
+ }
2499
+
2500
+ for (jsize i = 0; i < len_cols; i++) {
2501
+ auto* cf_handle =
2502
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcfh[i]);
2503
+ cf_handles.push_back(cf_handle);
2504
+ }
2505
+
2506
+ env->ReleaseLongArrayElements(jcolumn_family_handles, jcfh, JNI_ABORT);
2507
+ }
2508
+
2509
+ std::vector<ROCKSDB_NAMESPACE::Iterator*> iterators;
2510
+ ROCKSDB_NAMESPACE::Status s =
2511
+ db->NewIterators(read_options, cf_handles, &iterators);
2512
+ if (s.ok()) {
2513
+ jlongArray jLongArray =
2514
+ env->NewLongArray(static_cast<jsize>(iterators.size()));
2515
+ if (jLongArray == nullptr) {
2516
+ // exception thrown: OutOfMemoryError
2517
+ return nullptr;
2518
+ }
2519
+
2520
+ for (std::vector<ROCKSDB_NAMESPACE::Iterator*>::size_type i = 0;
2521
+ i < iterators.size(); i++) {
2522
+ env->SetLongArrayRegion(
2523
+ jLongArray, static_cast<jsize>(i), 1,
2524
+ const_cast<jlong*>(reinterpret_cast<const jlong*>(&iterators[i])));
2525
+ if (env->ExceptionCheck()) {
2526
+ // exception thrown: ArrayIndexOutOfBoundsException
2527
+ env->DeleteLocalRef(jLongArray);
2528
+ return nullptr;
2529
+ }
2530
+ }
2531
+
2532
+ return jLongArray;
2533
+ } else {
2534
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
2535
+ return nullptr;
2536
+ }
2537
+ }
2538
+
2539
+ /*
2540
+ * Method: getSnapshot
2541
+ * Signature: (J)J
2542
+ */
2543
+ jlong Java_org_rocksdb_RocksDB_getSnapshot(JNIEnv*, jobject, jlong db_handle) {
2544
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2545
+ const ROCKSDB_NAMESPACE::Snapshot* snapshot = db->GetSnapshot();
2546
+ return GET_CPLUSPLUS_POINTER(snapshot);
2547
+ }
2548
+
2549
+ /*
2550
+ * Method: releaseSnapshot
2551
+ * Signature: (JJ)V
2552
+ */
2553
+ void Java_org_rocksdb_RocksDB_releaseSnapshot(JNIEnv*, jobject, jlong db_handle,
2554
+ jlong snapshot_handle) {
2555
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2556
+ auto* snapshot =
2557
+ reinterpret_cast<ROCKSDB_NAMESPACE::Snapshot*>(snapshot_handle);
2558
+ db->ReleaseSnapshot(snapshot);
2559
+ }
2560
+
2561
+ /*
2562
+ * Class: org_rocksdb_RocksDB
2563
+ * Method: getProperty
2564
+ * Signature: (JJLjava/lang/String;I)Ljava/lang/String;
2565
+ */
2566
+ jstring Java_org_rocksdb_RocksDB_getProperty(JNIEnv* env, jobject,
2567
+ jlong jdb_handle, jlong jcf_handle,
2568
+ jstring jproperty,
2569
+ jint jproperty_len) {
2570
+ const char* property = env->GetStringUTFChars(jproperty, nullptr);
2571
+ if (property == nullptr) {
2572
+ // exception thrown: OutOfMemoryError
2573
+ return nullptr;
2574
+ }
2575
+ ROCKSDB_NAMESPACE::Slice property_name(property, jproperty_len);
2576
+
2577
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2578
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2579
+ if (jcf_handle == 0) {
2580
+ cf_handle = db->DefaultColumnFamily();
2581
+ } else {
2582
+ cf_handle =
2583
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2584
+ }
2585
+
2586
+ std::string property_value;
2587
+ bool retCode = db->GetProperty(cf_handle, property_name, &property_value);
2588
+ env->ReleaseStringUTFChars(jproperty, property);
2589
+
2590
+ if (retCode) {
2591
+ return env->NewStringUTF(property_value.c_str());
2592
+ }
2593
+
2594
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2595
+ env, ROCKSDB_NAMESPACE::Status::NotFound());
2596
+ return nullptr;
2597
+ }
2598
+
2599
+ /*
2600
+ * Class: org_rocksdb_RocksDB
2601
+ * Method: getMapProperty
2602
+ * Signature: (JJLjava/lang/String;I)Ljava/util/Map;
2603
+ */
2604
+ jobject Java_org_rocksdb_RocksDB_getMapProperty(JNIEnv* env, jobject,
2605
+ jlong jdb_handle,
2606
+ jlong jcf_handle,
2607
+ jstring jproperty,
2608
+ jint jproperty_len) {
2609
+ const char* property = env->GetStringUTFChars(jproperty, nullptr);
2610
+ if (property == nullptr) {
2611
+ // exception thrown: OutOfMemoryError
2612
+ return nullptr;
2613
+ }
2614
+ ROCKSDB_NAMESPACE::Slice property_name(property, jproperty_len);
2615
+
2616
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2617
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2618
+ if (jcf_handle == 0) {
2619
+ cf_handle = db->DefaultColumnFamily();
2620
+ } else {
2621
+ cf_handle =
2622
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2623
+ }
2624
+
2625
+ std::map<std::string, std::string> property_value;
2626
+ bool retCode = db->GetMapProperty(cf_handle, property_name, &property_value);
2627
+ env->ReleaseStringUTFChars(jproperty, property);
2628
+
2629
+ if (retCode) {
2630
+ return ROCKSDB_NAMESPACE::HashMapJni::fromCppMap(env, &property_value);
2631
+ }
2632
+
2633
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2634
+ env, ROCKSDB_NAMESPACE::Status::NotFound());
2635
+ return nullptr;
2636
+ }
2637
+
2638
+ /*
2639
+ * Class: org_rocksdb_RocksDB
2640
+ * Method: getLongProperty
2641
+ * Signature: (JJLjava/lang/String;I)J
2642
+ */
2643
+ jlong Java_org_rocksdb_RocksDB_getLongProperty(JNIEnv* env, jobject,
2644
+ jlong jdb_handle,
2645
+ jlong jcf_handle,
2646
+ jstring jproperty,
2647
+ jint jproperty_len) {
2648
+ const char* property = env->GetStringUTFChars(jproperty, nullptr);
2649
+ if (property == nullptr) {
2650
+ // exception thrown: OutOfMemoryError
2651
+ return 0;
2652
+ }
2653
+ ROCKSDB_NAMESPACE::Slice property_name(property, jproperty_len);
2654
+
2655
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2656
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2657
+ if (jcf_handle == 0) {
2658
+ cf_handle = db->DefaultColumnFamily();
2659
+ } else {
2660
+ cf_handle =
2661
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2662
+ }
2663
+
2664
+ uint64_t property_value;
2665
+ bool retCode = db->GetIntProperty(cf_handle, property_name, &property_value);
2666
+ env->ReleaseStringUTFChars(jproperty, property);
2667
+
2668
+ if (retCode) {
2669
+ return property_value;
2670
+ }
2671
+
2672
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2673
+ env, ROCKSDB_NAMESPACE::Status::NotFound());
2674
+ return 0;
2675
+ }
2676
+
2677
+ /*
2678
+ * Class: org_rocksdb_RocksDB
2679
+ * Method: resetStats
2680
+ * Signature: (J)V
2681
+ */
2682
+ void Java_org_rocksdb_RocksDB_resetStats(JNIEnv*, jobject, jlong jdb_handle) {
2683
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2684
+ db->ResetStats();
2685
+ }
2686
+
2687
+ /*
2688
+ * Class: org_rocksdb_RocksDB
2689
+ * Method: getAggregatedLongProperty
2690
+ * Signature: (JLjava/lang/String;I)J
2691
+ */
2692
+ jlong Java_org_rocksdb_RocksDB_getAggregatedLongProperty(JNIEnv* env, jobject,
2693
+ jlong db_handle,
2694
+ jstring jproperty,
2695
+ jint jproperty_len) {
2696
+ const char* property = env->GetStringUTFChars(jproperty, nullptr);
2697
+ if (property == nullptr) {
2698
+ return 0;
2699
+ }
2700
+ ROCKSDB_NAMESPACE::Slice property_name(property, jproperty_len);
2701
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(db_handle);
2702
+ uint64_t property_value = 0;
2703
+ bool retCode = db->GetAggregatedIntProperty(property_name, &property_value);
2704
+ env->ReleaseStringUTFChars(jproperty, property);
2705
+
2706
+ if (retCode) {
2707
+ return property_value;
2708
+ }
2709
+
2710
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
2711
+ env, ROCKSDB_NAMESPACE::Status::NotFound());
2712
+ return 0;
2713
+ }
2714
+
2715
+ /*
2716
+ * Class: org_rocksdb_RocksDB
2717
+ * Method: getApproximateSizes
2718
+ * Signature: (JJ[JB)[J
2719
+ */
2720
+ jlongArray Java_org_rocksdb_RocksDB_getApproximateSizes(
2721
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
2722
+ jlongArray jrange_slice_handles, jbyte jinclude_flags) {
2723
+ const jsize jlen = env->GetArrayLength(jrange_slice_handles);
2724
+ const size_t range_count = jlen / 2;
2725
+
2726
+ jlong* jranges = env->GetLongArrayElements(jrange_slice_handles, nullptr);
2727
+ if (jranges == nullptr) {
2728
+ // exception thrown: OutOfMemoryError
2729
+ return nullptr;
2730
+ }
2731
+
2732
+ auto ranges = std::unique_ptr<ROCKSDB_NAMESPACE::Range[]>(
2733
+ new ROCKSDB_NAMESPACE::Range[range_count]);
2734
+ size_t range_offset = 0;
2735
+ for (jsize i = 0; i < jlen; ++i) {
2736
+ auto* start = reinterpret_cast<ROCKSDB_NAMESPACE::Slice*>(jranges[i]);
2737
+ auto* limit = reinterpret_cast<ROCKSDB_NAMESPACE::Slice*>(jranges[++i]);
2738
+ ranges.get()[range_offset++] = ROCKSDB_NAMESPACE::Range(*start, *limit);
2739
+ }
2740
+
2741
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2742
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2743
+ if (jcf_handle == 0) {
2744
+ cf_handle = db->DefaultColumnFamily();
2745
+ } else {
2746
+ cf_handle =
2747
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2748
+ }
2749
+
2750
+ auto sizes = std::unique_ptr<uint64_t[]>(new uint64_t[range_count]);
2751
+
2752
+ ROCKSDB_NAMESPACE::DB::SizeApproximationFlags include_flags =
2753
+ ROCKSDB_NAMESPACE::DB::SizeApproximationFlags::NONE;
2754
+ if (jinclude_flags & 1) {
2755
+ include_flags =
2756
+ ROCKSDB_NAMESPACE::DB::SizeApproximationFlags::INCLUDE_MEMTABLES;
2757
+ }
2758
+ if (jinclude_flags & 2) {
2759
+ include_flags =
2760
+ (include_flags |
2761
+ ROCKSDB_NAMESPACE::DB::SizeApproximationFlags::INCLUDE_FILES);
2762
+ }
2763
+
2764
+ db->GetApproximateSizes(cf_handle, ranges.get(),
2765
+ static_cast<int>(range_count), sizes.get(),
2766
+ include_flags);
2767
+
2768
+ // release LongArrayElements
2769
+ env->ReleaseLongArrayElements(jrange_slice_handles, jranges, JNI_ABORT);
2770
+
2771
+ // prepare results
2772
+ auto results = std::unique_ptr<jlong[]>(new jlong[range_count]);
2773
+ for (size_t i = 0; i < range_count; ++i) {
2774
+ results.get()[i] = static_cast<jlong>(sizes.get()[i]);
2775
+ }
2776
+
2777
+ const jsize jrange_count = jlen / 2;
2778
+ jlongArray jresults = env->NewLongArray(jrange_count);
2779
+ if (jresults == nullptr) {
2780
+ // exception thrown: OutOfMemoryError
2781
+ return nullptr;
2782
+ }
2783
+
2784
+ env->SetLongArrayRegion(jresults, 0, jrange_count, results.get());
2785
+ if (env->ExceptionCheck()) {
2786
+ // exception thrown: ArrayIndexOutOfBoundsException
2787
+ env->DeleteLocalRef(jresults);
2788
+ return nullptr;
2789
+ }
2790
+
2791
+ return jresults;
2792
+ }
2793
+
2794
+ /*
2795
+ * Class: org_rocksdb_RocksDB
2796
+ * Method: getApproximateMemTableStats
2797
+ * Signature: (JJJJ)[J
2798
+ */
2799
+ jlongArray Java_org_rocksdb_RocksDB_getApproximateMemTableStats(
2800
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
2801
+ jlong jstartHandle, jlong jlimitHandle) {
2802
+ auto* start = reinterpret_cast<ROCKSDB_NAMESPACE::Slice*>(jstartHandle);
2803
+ auto* limit = reinterpret_cast<ROCKSDB_NAMESPACE::Slice*>(jlimitHandle);
2804
+ const ROCKSDB_NAMESPACE::Range range(*start, *limit);
2805
+
2806
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2807
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2808
+ if (jcf_handle == 0) {
2809
+ cf_handle = db->DefaultColumnFamily();
2810
+ } else {
2811
+ cf_handle =
2812
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2813
+ }
2814
+
2815
+ uint64_t count = 0;
2816
+ uint64_t sizes = 0;
2817
+ db->GetApproximateMemTableStats(cf_handle, range, &count, &sizes);
2818
+
2819
+ // prepare results
2820
+ jlong results[2] = {static_cast<jlong>(count), static_cast<jlong>(sizes)};
2821
+
2822
+ jlongArray jsizes = env->NewLongArray(2);
2823
+ if (jsizes == nullptr) {
2824
+ // exception thrown: OutOfMemoryError
2825
+ return nullptr;
2826
+ }
2827
+
2828
+ env->SetLongArrayRegion(jsizes, 0, 2, results);
2829
+ if (env->ExceptionCheck()) {
2830
+ // exception thrown: ArrayIndexOutOfBoundsException
2831
+ env->DeleteLocalRef(jsizes);
2832
+ return nullptr;
2833
+ }
2834
+
2835
+ return jsizes;
2836
+ }
2837
+
2838
+ /*
2839
+ * Class: org_rocksdb_RocksDB
2840
+ * Method: compactRange
2841
+ * Signature: (J[BI[BIJJ)V
2842
+ */
2843
+ void Java_org_rocksdb_RocksDB_compactRange(JNIEnv* env, jobject,
2844
+ jlong jdb_handle, jbyteArray jbegin,
2845
+ jint jbegin_len, jbyteArray jend,
2846
+ jint jend_len,
2847
+ jlong jcompact_range_opts_handle,
2848
+ jlong jcf_handle) {
2849
+ jboolean has_exception = JNI_FALSE;
2850
+
2851
+ std::string str_begin;
2852
+ if (jbegin_len > 0) {
2853
+ str_begin = ROCKSDB_NAMESPACE::JniUtil::byteString<std::string>(
2854
+ env, jbegin, jbegin_len,
2855
+ [](const char* str, const size_t len) { return std::string(str, len); },
2856
+ &has_exception);
2857
+ if (has_exception == JNI_TRUE) {
2858
+ // exception occurred
2859
+ return;
2860
+ }
2861
+ }
2862
+
2863
+ std::string str_end;
2864
+ if (jend_len > 0) {
2865
+ str_end = ROCKSDB_NAMESPACE::JniUtil::byteString<std::string>(
2866
+ env, jend, jend_len,
2867
+ [](const char* str, const size_t len) { return std::string(str, len); },
2868
+ &has_exception);
2869
+ if (has_exception == JNI_TRUE) {
2870
+ // exception occurred
2871
+ return;
2872
+ }
2873
+ }
2874
+
2875
+ ROCKSDB_NAMESPACE::CompactRangeOptions* compact_range_opts = nullptr;
2876
+ if (jcompact_range_opts_handle == 0) {
2877
+ // NOTE: we DO own the pointer!
2878
+ compact_range_opts = new ROCKSDB_NAMESPACE::CompactRangeOptions();
2879
+ } else {
2880
+ // NOTE: we do NOT own the pointer!
2881
+ compact_range_opts =
2882
+ reinterpret_cast<ROCKSDB_NAMESPACE::CompactRangeOptions*>(
2883
+ jcompact_range_opts_handle);
2884
+ }
2885
+
2886
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2887
+
2888
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
2889
+ if (jcf_handle == 0) {
2890
+ cf_handle = db->DefaultColumnFamily();
2891
+ } else {
2892
+ cf_handle =
2893
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2894
+ }
2895
+
2896
+ ROCKSDB_NAMESPACE::Status s;
2897
+ if (jbegin_len > 0 || jend_len > 0) {
2898
+ const ROCKSDB_NAMESPACE::Slice begin(str_begin);
2899
+ const ROCKSDB_NAMESPACE::Slice end(str_end);
2900
+ s = db->CompactRange(*compact_range_opts, cf_handle, &begin, &end);
2901
+ } else {
2902
+ s = db->CompactRange(*compact_range_opts, cf_handle, nullptr, nullptr);
2903
+ }
2904
+
2905
+ if (jcompact_range_opts_handle == 0) {
2906
+ delete compact_range_opts;
2907
+ }
2908
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
2909
+ }
2910
+
2911
+ /*
2912
+ * Class: org_rocksdb_RocksDB
2913
+ * Method: setOptions
2914
+ * Signature: (JJ[Ljava/lang/String;[Ljava/lang/String;)V
2915
+ */
2916
+ void Java_org_rocksdb_RocksDB_setOptions(JNIEnv* env, jobject, jlong jdb_handle,
2917
+ jlong jcf_handle, jobjectArray jkeys,
2918
+ jobjectArray jvalues) {
2919
+ const jsize len = env->GetArrayLength(jkeys);
2920
+ assert(len == env->GetArrayLength(jvalues));
2921
+
2922
+ std::unordered_map<std::string, std::string> options_map;
2923
+ for (jsize i = 0; i < len; i++) {
2924
+ jobject jobj_key = env->GetObjectArrayElement(jkeys, i);
2925
+ if (env->ExceptionCheck()) {
2926
+ // exception thrown: ArrayIndexOutOfBoundsException
2927
+ return;
2928
+ }
2929
+
2930
+ jobject jobj_value = env->GetObjectArrayElement(jvalues, i);
2931
+ if (env->ExceptionCheck()) {
2932
+ // exception thrown: ArrayIndexOutOfBoundsException
2933
+ env->DeleteLocalRef(jobj_key);
2934
+ return;
2935
+ }
2936
+
2937
+ jboolean has_exception = JNI_FALSE;
2938
+ std::string s_key = ROCKSDB_NAMESPACE::JniUtil::copyStdString(
2939
+ env, reinterpret_cast<jstring>(jobj_key), &has_exception);
2940
+ if (has_exception == JNI_TRUE) {
2941
+ // exception occurred
2942
+ env->DeleteLocalRef(jobj_value);
2943
+ env->DeleteLocalRef(jobj_key);
2944
+ return;
2945
+ }
2946
+
2947
+ std::string s_value = ROCKSDB_NAMESPACE::JniUtil::copyStdString(
2948
+ env, reinterpret_cast<jstring>(jobj_value), &has_exception);
2949
+ if (has_exception == JNI_TRUE) {
2950
+ // exception occurred
2951
+ env->DeleteLocalRef(jobj_value);
2952
+ env->DeleteLocalRef(jobj_key);
2953
+ return;
2954
+ }
2955
+
2956
+ options_map[s_key] = s_value;
2957
+
2958
+ env->DeleteLocalRef(jobj_key);
2959
+ env->DeleteLocalRef(jobj_value);
2960
+ }
2961
+
2962
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
2963
+ auto* cf_handle =
2964
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
2965
+ if (cf_handle == nullptr) {
2966
+ cf_handle = db->DefaultColumnFamily();
2967
+ }
2968
+ auto s = db->SetOptions(cf_handle, options_map);
2969
+ if (!s.ok()) {
2970
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
2971
+ }
2972
+ }
2973
+
2974
+ /*
2975
+ * Class: org_rocksdb_RocksDB
2976
+ * Method: setDBOptions
2977
+ * Signature: (J[Ljava/lang/String;[Ljava/lang/String;)V
2978
+ */
2979
+ void Java_org_rocksdb_RocksDB_setDBOptions(JNIEnv* env, jobject,
2980
+ jlong jdb_handle, jobjectArray jkeys,
2981
+ jobjectArray jvalues) {
2982
+ const jsize len = env->GetArrayLength(jkeys);
2983
+ assert(len == env->GetArrayLength(jvalues));
2984
+
2985
+ std::unordered_map<std::string, std::string> options_map;
2986
+ for (jsize i = 0; i < len; i++) {
2987
+ jobject jobj_key = env->GetObjectArrayElement(jkeys, i);
2988
+ if (env->ExceptionCheck()) {
2989
+ // exception thrown: ArrayIndexOutOfBoundsException
2990
+ return;
2991
+ }
2992
+
2993
+ jobject jobj_value = env->GetObjectArrayElement(jvalues, i);
2994
+ if (env->ExceptionCheck()) {
2995
+ // exception thrown: ArrayIndexOutOfBoundsException
2996
+ env->DeleteLocalRef(jobj_key);
2997
+ return;
2998
+ }
2999
+
3000
+ jboolean has_exception = JNI_FALSE;
3001
+ std::string s_key = ROCKSDB_NAMESPACE::JniUtil::copyStdString(
3002
+ env, reinterpret_cast<jstring>(jobj_key), &has_exception);
3003
+ if (has_exception == JNI_TRUE) {
3004
+ // exception occurred
3005
+ env->DeleteLocalRef(jobj_value);
3006
+ env->DeleteLocalRef(jobj_key);
3007
+ return;
3008
+ }
3009
+
3010
+ std::string s_value = ROCKSDB_NAMESPACE::JniUtil::copyStdString(
3011
+ env, reinterpret_cast<jstring>(jobj_value), &has_exception);
3012
+ if (has_exception == JNI_TRUE) {
3013
+ // exception occurred
3014
+ env->DeleteLocalRef(jobj_value);
3015
+ env->DeleteLocalRef(jobj_key);
3016
+ return;
3017
+ }
3018
+
3019
+ options_map[s_key] = s_value;
3020
+
3021
+ env->DeleteLocalRef(jobj_key);
3022
+ env->DeleteLocalRef(jobj_value);
3023
+ }
3024
+
3025
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3026
+ auto s = db->SetDBOptions(options_map);
3027
+ if (!s.ok()) {
3028
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3029
+ }
3030
+ }
3031
+
3032
+ /*
3033
+ * Class: org_rocksdb_RocksDB
3034
+ * Method: getOptions
3035
+ * Signature: (JJ)Ljava/lang/String;
3036
+ */
3037
+ jstring Java_org_rocksdb_RocksDB_getOptions(JNIEnv* env, jobject,
3038
+ jlong jdb_handle,
3039
+ jlong jcf_handle) {
3040
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3041
+
3042
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3043
+ if (jcf_handle == 0) {
3044
+ cf_handle = db->DefaultColumnFamily();
3045
+ } else {
3046
+ cf_handle =
3047
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3048
+ }
3049
+
3050
+ auto options = db->GetOptions(cf_handle);
3051
+ std::string options_as_string;
3052
+ ROCKSDB_NAMESPACE::Status s =
3053
+ GetStringFromColumnFamilyOptions(&options_as_string, options);
3054
+ if (!s.ok()) {
3055
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3056
+ return nullptr;
3057
+ }
3058
+ return env->NewStringUTF(options_as_string.c_str());
3059
+ }
3060
+
3061
+ /*
3062
+ * Class: org_rocksdb_RocksDB
3063
+ * Method: getDBOptions
3064
+ * Signature: (J)Ljava/lang/String;
3065
+ */
3066
+ jstring Java_org_rocksdb_RocksDB_getDBOptions(JNIEnv* env, jobject,
3067
+ jlong jdb_handle) {
3068
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3069
+
3070
+ auto options = db->GetDBOptions();
3071
+ std::string options_as_string;
3072
+ ROCKSDB_NAMESPACE::Status s =
3073
+ GetStringFromDBOptions(&options_as_string, options);
3074
+ if (!s.ok()) {
3075
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3076
+ return nullptr;
3077
+ }
3078
+ return env->NewStringUTF(options_as_string.c_str());
3079
+ }
3080
+
3081
+ /*
3082
+ * Class: org_rocksdb_RocksDB
3083
+ * Method: compactFiles
3084
+ * Signature: (JJJ[Ljava/lang/String;IIJ)[Ljava/lang/String;
3085
+ */
3086
+ jobjectArray Java_org_rocksdb_RocksDB_compactFiles(
3087
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcompaction_opts_handle,
3088
+ jlong jcf_handle, jobjectArray jinput_file_names, jint joutput_level,
3089
+ jint joutput_path_id, jlong jcompaction_job_info_handle) {
3090
+ jboolean has_exception = JNI_FALSE;
3091
+ const std::vector<std::string> input_file_names =
3092
+ ROCKSDB_NAMESPACE::JniUtil::copyStrings(env, jinput_file_names,
3093
+ &has_exception);
3094
+ if (has_exception == JNI_TRUE) {
3095
+ // exception occurred
3096
+ return nullptr;
3097
+ }
3098
+
3099
+ auto* compaction_opts =
3100
+ reinterpret_cast<ROCKSDB_NAMESPACE::CompactionOptions*>(
3101
+ jcompaction_opts_handle);
3102
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3103
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3104
+ if (jcf_handle == 0) {
3105
+ cf_handle = db->DefaultColumnFamily();
3106
+ } else {
3107
+ cf_handle =
3108
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3109
+ }
3110
+
3111
+ ROCKSDB_NAMESPACE::CompactionJobInfo* compaction_job_info = nullptr;
3112
+ if (jcompaction_job_info_handle != 0) {
3113
+ compaction_job_info =
3114
+ reinterpret_cast<ROCKSDB_NAMESPACE::CompactionJobInfo*>(
3115
+ jcompaction_job_info_handle);
3116
+ }
3117
+
3118
+ std::vector<std::string> output_file_names;
3119
+ auto s = db->CompactFiles(*compaction_opts, cf_handle, input_file_names,
3120
+ static_cast<int>(joutput_level),
3121
+ static_cast<int>(joutput_path_id),
3122
+ &output_file_names, compaction_job_info);
3123
+ if (!s.ok()) {
3124
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3125
+ return nullptr;
3126
+ }
3127
+
3128
+ return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(env, &output_file_names);
3129
+ }
3130
+
3131
+ /*
3132
+ * Class: org_rocksdb_RocksDB
3133
+ * Method: cancelAllBackgroundWork
3134
+ * Signature: (JZ)V
3135
+ */
3136
+ void Java_org_rocksdb_RocksDB_cancelAllBackgroundWork(JNIEnv*, jobject,
3137
+ jlong jdb_handle,
3138
+ jboolean jwait) {
3139
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3140
+ ROCKSDB_NAMESPACE::CancelAllBackgroundWork(db, jwait);
3141
+ }
3142
+
3143
+ /*
3144
+ * Class: org_rocksdb_RocksDB
3145
+ * Method: pauseBackgroundWork
3146
+ * Signature: (J)V
3147
+ */
3148
+ void Java_org_rocksdb_RocksDB_pauseBackgroundWork(JNIEnv* env, jobject,
3149
+ jlong jdb_handle) {
3150
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3151
+ auto s = db->PauseBackgroundWork();
3152
+ if (!s.ok()) {
3153
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3154
+ }
3155
+ }
3156
+
3157
+ /*
3158
+ * Class: org_rocksdb_RocksDB
3159
+ * Method: continueBackgroundWork
3160
+ * Signature: (J)V
3161
+ */
3162
+ void Java_org_rocksdb_RocksDB_continueBackgroundWork(JNIEnv* env, jobject,
3163
+ jlong jdb_handle) {
3164
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3165
+ auto s = db->ContinueBackgroundWork();
3166
+ if (!s.ok()) {
3167
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3168
+ }
3169
+ }
3170
+
3171
+ /*
3172
+ * Class: org_rocksdb_RocksDB
3173
+ * Method: enableAutoCompaction
3174
+ * Signature: (J[J)V
3175
+ */
3176
+ void Java_org_rocksdb_RocksDB_enableAutoCompaction(JNIEnv* env, jobject,
3177
+ jlong jdb_handle,
3178
+ jlongArray jcf_handles) {
3179
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3180
+ jboolean has_exception = JNI_FALSE;
3181
+ const std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles =
3182
+ ROCKSDB_NAMESPACE::JniUtil::fromJPointers<
3183
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle>(env, jcf_handles,
3184
+ &has_exception);
3185
+ if (has_exception == JNI_TRUE) {
3186
+ // exception occurred
3187
+ return;
3188
+ }
3189
+ db->EnableAutoCompaction(cf_handles);
3190
+ }
3191
+
3192
+ /*
3193
+ * Class: org_rocksdb_RocksDB
3194
+ * Method: numberLevels
3195
+ * Signature: (JJ)I
3196
+ */
3197
+ jint Java_org_rocksdb_RocksDB_numberLevels(JNIEnv*, jobject, jlong jdb_handle,
3198
+ jlong jcf_handle) {
3199
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3200
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3201
+ if (jcf_handle == 0) {
3202
+ cf_handle = db->DefaultColumnFamily();
3203
+ } else {
3204
+ cf_handle =
3205
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3206
+ }
3207
+ return static_cast<jint>(db->NumberLevels(cf_handle));
3208
+ }
3209
+
3210
+ /*
3211
+ * Class: org_rocksdb_RocksDB
3212
+ * Method: maxMemCompactionLevel
3213
+ * Signature: (JJ)I
3214
+ */
3215
+ jint Java_org_rocksdb_RocksDB_maxMemCompactionLevel(JNIEnv*, jobject,
3216
+ jlong jdb_handle,
3217
+ jlong jcf_handle) {
3218
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3219
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3220
+ if (jcf_handle == 0) {
3221
+ cf_handle = db->DefaultColumnFamily();
3222
+ } else {
3223
+ cf_handle =
3224
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3225
+ }
3226
+ return static_cast<jint>(db->MaxMemCompactionLevel(cf_handle));
3227
+ }
3228
+
3229
+ /*
3230
+ * Class: org_rocksdb_RocksDB
3231
+ * Method: level0StopWriteTrigger
3232
+ * Signature: (JJ)I
3233
+ */
3234
+ jint Java_org_rocksdb_RocksDB_level0StopWriteTrigger(JNIEnv*, jobject,
3235
+ jlong jdb_handle,
3236
+ jlong jcf_handle) {
3237
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3238
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3239
+ if (jcf_handle == 0) {
3240
+ cf_handle = db->DefaultColumnFamily();
3241
+ } else {
3242
+ cf_handle =
3243
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3244
+ }
3245
+ return static_cast<jint>(db->Level0StopWriteTrigger(cf_handle));
3246
+ }
3247
+
3248
+ /*
3249
+ * Class: org_rocksdb_RocksDB
3250
+ * Method: getName
3251
+ * Signature: (J)Ljava/lang/String;
3252
+ */
3253
+ jstring Java_org_rocksdb_RocksDB_getName(JNIEnv* env, jobject,
3254
+ jlong jdb_handle) {
3255
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3256
+ std::string name = db->GetName();
3257
+ return ROCKSDB_NAMESPACE::JniUtil::toJavaString(env, &name, false);
3258
+ }
3259
+
3260
+ /*
3261
+ * Class: org_rocksdb_RocksDB
3262
+ * Method: getEnv
3263
+ * Signature: (J)J
3264
+ */
3265
+ jlong Java_org_rocksdb_RocksDB_getEnv(JNIEnv*, jobject, jlong jdb_handle) {
3266
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3267
+ return GET_CPLUSPLUS_POINTER(db->GetEnv());
3268
+ }
3269
+
3270
+ /*
3271
+ * Class: org_rocksdb_RocksDB
3272
+ * Method: flush
3273
+ * Signature: (JJ[J)V
3274
+ */
3275
+ void Java_org_rocksdb_RocksDB_flush(JNIEnv* env, jobject, jlong jdb_handle,
3276
+ jlong jflush_opts_handle,
3277
+ jlongArray jcf_handles) {
3278
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3279
+ auto* flush_opts =
3280
+ reinterpret_cast<ROCKSDB_NAMESPACE::FlushOptions*>(jflush_opts_handle);
3281
+ std::vector<ROCKSDB_NAMESPACE::ColumnFamilyHandle*> cf_handles;
3282
+ if (jcf_handles == nullptr) {
3283
+ cf_handles.push_back(db->DefaultColumnFamily());
3284
+ } else {
3285
+ jboolean has_exception = JNI_FALSE;
3286
+ cf_handles = ROCKSDB_NAMESPACE::JniUtil::fromJPointers<
3287
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle>(env, jcf_handles,
3288
+ &has_exception);
3289
+ if (has_exception) {
3290
+ // exception occurred
3291
+ return;
3292
+ }
3293
+ }
3294
+ auto s = db->Flush(*flush_opts, cf_handles);
3295
+ if (!s.ok()) {
3296
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3297
+ }
3298
+ }
3299
+
3300
+ /*
3301
+ * Class: org_rocksdb_RocksDB
3302
+ * Method: flushWal
3303
+ * Signature: (JZ)V
3304
+ */
3305
+ void Java_org_rocksdb_RocksDB_flushWal(JNIEnv* env, jobject, jlong jdb_handle,
3306
+ jboolean jsync) {
3307
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3308
+ auto s = db->FlushWAL(jsync == JNI_TRUE);
3309
+ if (!s.ok()) {
3310
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3311
+ }
3312
+ }
3313
+
3314
+ /*
3315
+ * Class: org_rocksdb_RocksDB
3316
+ * Method: syncWal
3317
+ * Signature: (J)V
3318
+ */
3319
+ void Java_org_rocksdb_RocksDB_syncWal(JNIEnv* env, jobject, jlong jdb_handle) {
3320
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3321
+ auto s = db->SyncWAL();
3322
+ if (!s.ok()) {
3323
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3324
+ }
3325
+ }
3326
+
3327
+ /*
3328
+ * Class: org_rocksdb_RocksDB
3329
+ * Method: getLatestSequenceNumber
3330
+ * Signature: (J)V
3331
+ */
3332
+ jlong Java_org_rocksdb_RocksDB_getLatestSequenceNumber(JNIEnv*, jobject,
3333
+ jlong jdb_handle) {
3334
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3335
+ return db->GetLatestSequenceNumber();
3336
+ }
3337
+
3338
+ /*
3339
+ * Class: org_rocksdb_RocksDB
3340
+ * Method: disableFileDeletions
3341
+ * Signature: (J)V
3342
+ */
3343
+ void Java_org_rocksdb_RocksDB_disableFileDeletions(JNIEnv* env, jobject,
3344
+ jlong jdb_handle) {
3345
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3346
+ ROCKSDB_NAMESPACE::Status s = db->DisableFileDeletions();
3347
+ if (!s.ok()) {
3348
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3349
+ }
3350
+ }
3351
+
3352
+ /*
3353
+ * Class: org_rocksdb_RocksDB
3354
+ * Method: enableFileDeletions
3355
+ * Signature: (JZ)V
3356
+ */
3357
+ void Java_org_rocksdb_RocksDB_enableFileDeletions(JNIEnv* env, jobject,
3358
+ jlong jdb_handle,
3359
+ jboolean jforce) {
3360
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3361
+ ROCKSDB_NAMESPACE::Status s = db->EnableFileDeletions(jforce);
3362
+ if (!s.ok()) {
3363
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3364
+ }
3365
+ }
3366
+
3367
+ /*
3368
+ * Class: org_rocksdb_RocksDB
3369
+ * Method: getLiveFiles
3370
+ * Signature: (JZ)[Ljava/lang/String;
3371
+ */
3372
+ jobjectArray Java_org_rocksdb_RocksDB_getLiveFiles(JNIEnv* env, jobject,
3373
+ jlong jdb_handle,
3374
+ jboolean jflush_memtable) {
3375
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3376
+ std::vector<std::string> live_files;
3377
+ uint64_t manifest_file_size = 0;
3378
+ auto s = db->GetLiveFiles(live_files, &manifest_file_size,
3379
+ jflush_memtable == JNI_TRUE);
3380
+ if (!s.ok()) {
3381
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3382
+ return nullptr;
3383
+ }
3384
+
3385
+ // append the manifest_file_size to the vector
3386
+ // for passing back to java
3387
+ live_files.push_back(std::to_string(manifest_file_size));
3388
+
3389
+ return ROCKSDB_NAMESPACE::JniUtil::toJavaStrings(env, &live_files);
3390
+ }
3391
+
3392
+ /*
3393
+ * Class: org_rocksdb_RocksDB
3394
+ * Method: getSortedWalFiles
3395
+ * Signature: (J)[Lorg/rocksdb/LogFile;
3396
+ */
3397
+ jobjectArray Java_org_rocksdb_RocksDB_getSortedWalFiles(JNIEnv* env, jobject,
3398
+ jlong jdb_handle) {
3399
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3400
+ std::vector<std::unique_ptr<ROCKSDB_NAMESPACE::LogFile>> sorted_wal_files;
3401
+ auto s = db->GetSortedWalFiles(sorted_wal_files);
3402
+ if (!s.ok()) {
3403
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3404
+ return nullptr;
3405
+ }
3406
+
3407
+ // convert to Java type
3408
+ const jsize jlen = static_cast<jsize>(sorted_wal_files.size());
3409
+ jobjectArray jsorted_wal_files = env->NewObjectArray(
3410
+ jlen, ROCKSDB_NAMESPACE::LogFileJni::getJClass(env), nullptr);
3411
+ if (jsorted_wal_files == nullptr) {
3412
+ // exception thrown: OutOfMemoryError
3413
+ return nullptr;
3414
+ }
3415
+
3416
+ jsize i = 0;
3417
+ for (auto it = sorted_wal_files.begin(); it != sorted_wal_files.end(); ++it) {
3418
+ jobject jlog_file =
3419
+ ROCKSDB_NAMESPACE::LogFileJni::fromCppLogFile(env, it->get());
3420
+ if (jlog_file == nullptr) {
3421
+ // exception occurred
3422
+ env->DeleteLocalRef(jsorted_wal_files);
3423
+ return nullptr;
3424
+ }
3425
+
3426
+ env->SetObjectArrayElement(jsorted_wal_files, i++, jlog_file);
3427
+ if (env->ExceptionCheck()) {
3428
+ // exception occurred
3429
+ env->DeleteLocalRef(jlog_file);
3430
+ env->DeleteLocalRef(jsorted_wal_files);
3431
+ return nullptr;
3432
+ }
3433
+
3434
+ env->DeleteLocalRef(jlog_file);
3435
+ }
3436
+
3437
+ return jsorted_wal_files;
3438
+ }
3439
+
3440
+ /*
3441
+ * Class: org_rocksdb_RocksDB
3442
+ * Method: getUpdatesSince
3443
+ * Signature: (JJ)J
3444
+ */
3445
+ jlong Java_org_rocksdb_RocksDB_getUpdatesSince(JNIEnv* env, jobject,
3446
+ jlong jdb_handle,
3447
+ jlong jsequence_number) {
3448
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3449
+ ROCKSDB_NAMESPACE::SequenceNumber sequence_number =
3450
+ static_cast<ROCKSDB_NAMESPACE::SequenceNumber>(jsequence_number);
3451
+ std::unique_ptr<ROCKSDB_NAMESPACE::TransactionLogIterator> iter;
3452
+ ROCKSDB_NAMESPACE::Status s = db->GetUpdatesSince(sequence_number, &iter);
3453
+ if (s.ok()) {
3454
+ return GET_CPLUSPLUS_POINTER(iter.release());
3455
+ }
3456
+
3457
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3458
+ return 0;
3459
+ }
3460
+
3461
+ /*
3462
+ * Class: org_rocksdb_RocksDB
3463
+ * Method: deleteFile
3464
+ * Signature: (JLjava/lang/String;)V
3465
+ */
3466
+ void Java_org_rocksdb_RocksDB_deleteFile(JNIEnv* env, jobject, jlong jdb_handle,
3467
+ jstring jname) {
3468
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3469
+ jboolean has_exception = JNI_FALSE;
3470
+ std::string name =
3471
+ ROCKSDB_NAMESPACE::JniUtil::copyStdString(env, jname, &has_exception);
3472
+ if (has_exception == JNI_TRUE) {
3473
+ // exception occurred
3474
+ return;
3475
+ }
3476
+ db->DeleteFile(name);
3477
+ }
3478
+
3479
+ /*
3480
+ * Class: org_rocksdb_RocksDB
3481
+ * Method: getLiveFilesMetaData
3482
+ * Signature: (J)[Lorg/rocksdb/LiveFileMetaData;
3483
+ */
3484
+ jobjectArray Java_org_rocksdb_RocksDB_getLiveFilesMetaData(JNIEnv* env, jobject,
3485
+ jlong jdb_handle) {
3486
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3487
+ std::vector<ROCKSDB_NAMESPACE::LiveFileMetaData> live_files_meta_data;
3488
+ db->GetLiveFilesMetaData(&live_files_meta_data);
3489
+
3490
+ // convert to Java type
3491
+ const jsize jlen = static_cast<jsize>(live_files_meta_data.size());
3492
+ jobjectArray jlive_files_meta_data = env->NewObjectArray(
3493
+ jlen, ROCKSDB_NAMESPACE::LiveFileMetaDataJni::getJClass(env), nullptr);
3494
+ if (jlive_files_meta_data == nullptr) {
3495
+ // exception thrown: OutOfMemoryError
3496
+ return nullptr;
3497
+ }
3498
+
3499
+ jsize i = 0;
3500
+ for (auto it = live_files_meta_data.begin(); it != live_files_meta_data.end();
3501
+ ++it) {
3502
+ jobject jlive_file_meta_data =
3503
+ ROCKSDB_NAMESPACE::LiveFileMetaDataJni::fromCppLiveFileMetaData(env,
3504
+ &(*it));
3505
+ if (jlive_file_meta_data == nullptr) {
3506
+ // exception occurred
3507
+ env->DeleteLocalRef(jlive_files_meta_data);
3508
+ return nullptr;
3509
+ }
3510
+
3511
+ env->SetObjectArrayElement(jlive_files_meta_data, i++,
3512
+ jlive_file_meta_data);
3513
+ if (env->ExceptionCheck()) {
3514
+ // exception occurred
3515
+ env->DeleteLocalRef(jlive_file_meta_data);
3516
+ env->DeleteLocalRef(jlive_files_meta_data);
3517
+ return nullptr;
3518
+ }
3519
+
3520
+ env->DeleteLocalRef(jlive_file_meta_data);
3521
+ }
3522
+
3523
+ return jlive_files_meta_data;
3524
+ }
3525
+
3526
+ /*
3527
+ * Class: org_rocksdb_RocksDB
3528
+ * Method: getColumnFamilyMetaData
3529
+ * Signature: (JJ)Lorg/rocksdb/ColumnFamilyMetaData;
3530
+ */
3531
+ jobject Java_org_rocksdb_RocksDB_getColumnFamilyMetaData(JNIEnv* env, jobject,
3532
+ jlong jdb_handle,
3533
+ jlong jcf_handle) {
3534
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3535
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3536
+ if (jcf_handle == 0) {
3537
+ cf_handle = db->DefaultColumnFamily();
3538
+ } else {
3539
+ cf_handle =
3540
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3541
+ }
3542
+ ROCKSDB_NAMESPACE::ColumnFamilyMetaData cf_metadata;
3543
+ db->GetColumnFamilyMetaData(cf_handle, &cf_metadata);
3544
+ return ROCKSDB_NAMESPACE::ColumnFamilyMetaDataJni::
3545
+ fromCppColumnFamilyMetaData(env, &cf_metadata);
3546
+ }
3547
+
3548
+ /*
3549
+ * Class: org_rocksdb_RocksDB
3550
+ * Method: ingestExternalFile
3551
+ * Signature: (JJ[Ljava/lang/String;IJ)V
3552
+ */
3553
+ void Java_org_rocksdb_RocksDB_ingestExternalFile(
3554
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
3555
+ jobjectArray jfile_path_list, jint jfile_path_list_len,
3556
+ jlong jingest_external_file_options_handle) {
3557
+ jboolean has_exception = JNI_FALSE;
3558
+ std::vector<std::string> file_path_list =
3559
+ ROCKSDB_NAMESPACE::JniUtil::copyStrings(
3560
+ env, jfile_path_list, jfile_path_list_len, &has_exception);
3561
+ if (has_exception == JNI_TRUE) {
3562
+ // exception occurred
3563
+ return;
3564
+ }
3565
+
3566
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3567
+ auto* column_family =
3568
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3569
+ auto* ifo = reinterpret_cast<ROCKSDB_NAMESPACE::IngestExternalFileOptions*>(
3570
+ jingest_external_file_options_handle);
3571
+ ROCKSDB_NAMESPACE::Status s =
3572
+ db->IngestExternalFile(column_family, file_path_list, *ifo);
3573
+ if (!s.ok()) {
3574
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3575
+ }
3576
+ }
3577
+
3578
+ /*
3579
+ * Class: org_rocksdb_RocksDB
3580
+ * Method: verifyChecksum
3581
+ * Signature: (J)V
3582
+ */
3583
+ void Java_org_rocksdb_RocksDB_verifyChecksum(JNIEnv* env, jobject,
3584
+ jlong jdb_handle) {
3585
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3586
+ auto s = db->VerifyChecksum();
3587
+ if (!s.ok()) {
3588
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3589
+ }
3590
+ }
3591
+
3592
+ /*
3593
+ * Class: org_rocksdb_RocksDB
3594
+ * Method: getDefaultColumnFamily
3595
+ * Signature: (J)J
3596
+ */
3597
+ jlong Java_org_rocksdb_RocksDB_getDefaultColumnFamily(JNIEnv*, jobject,
3598
+ jlong jdb_handle) {
3599
+ auto* db_handle = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3600
+ auto* cf_handle = db_handle->DefaultColumnFamily();
3601
+ return GET_CPLUSPLUS_POINTER(cf_handle);
3602
+ }
3603
+
3604
+ /*
3605
+ * Class: org_rocksdb_RocksDB
3606
+ * Method: getPropertiesOfAllTables
3607
+ * Signature: (JJ)Ljava/util/Map;
3608
+ */
3609
+ jobject Java_org_rocksdb_RocksDB_getPropertiesOfAllTables(JNIEnv* env, jobject,
3610
+ jlong jdb_handle,
3611
+ jlong jcf_handle) {
3612
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3613
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3614
+ if (jcf_handle == 0) {
3615
+ cf_handle = db->DefaultColumnFamily();
3616
+ } else {
3617
+ cf_handle =
3618
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3619
+ }
3620
+ ROCKSDB_NAMESPACE::TablePropertiesCollection table_properties_collection;
3621
+ auto s =
3622
+ db->GetPropertiesOfAllTables(cf_handle, &table_properties_collection);
3623
+ if (!s.ok()) {
3624
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3625
+ }
3626
+
3627
+ // convert to Java type
3628
+ jobject jhash_map = ROCKSDB_NAMESPACE::HashMapJni::construct(
3629
+ env, static_cast<uint32_t>(table_properties_collection.size()));
3630
+ if (jhash_map == nullptr) {
3631
+ // exception occurred
3632
+ return nullptr;
3633
+ }
3634
+
3635
+ const ROCKSDB_NAMESPACE::HashMapJni::FnMapKV<
3636
+ const std::string,
3637
+ const std::shared_ptr<const ROCKSDB_NAMESPACE::TableProperties>, jobject,
3638
+ jobject>
3639
+ fn_map_kv =
3640
+ [env](const std::pair<const std::string,
3641
+ const std::shared_ptr<
3642
+ const ROCKSDB_NAMESPACE::TableProperties>>&
3643
+ kv) {
3644
+ jstring jkey = ROCKSDB_NAMESPACE::JniUtil::toJavaString(
3645
+ env, &(kv.first), false);
3646
+ if (env->ExceptionCheck()) {
3647
+ // an error occurred
3648
+ return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
3649
+ }
3650
+
3651
+ jobject jtable_properties =
3652
+ ROCKSDB_NAMESPACE::TablePropertiesJni::fromCppTableProperties(
3653
+ env, *(kv.second.get()));
3654
+ if (jtable_properties == nullptr) {
3655
+ // an error occurred
3656
+ env->DeleteLocalRef(jkey);
3657
+ return std::unique_ptr<std::pair<jobject, jobject>>(nullptr);
3658
+ }
3659
+
3660
+ return std::unique_ptr<std::pair<jobject, jobject>>(
3661
+ new std::pair<jobject, jobject>(
3662
+ static_cast<jobject>(jkey),
3663
+ static_cast<jobject>(jtable_properties)));
3664
+ };
3665
+
3666
+ if (!ROCKSDB_NAMESPACE::HashMapJni::putAll(
3667
+ env, jhash_map, table_properties_collection.begin(),
3668
+ table_properties_collection.end(), fn_map_kv)) {
3669
+ // exception occurred
3670
+ return nullptr;
3671
+ }
3672
+
3673
+ return jhash_map;
3674
+ }
3675
+
3676
+ /*
3677
+ * Class: org_rocksdb_RocksDB
3678
+ * Method: getPropertiesOfTablesInRange
3679
+ * Signature: (JJ[J)Ljava/util/Map;
3680
+ */
3681
+ jobject Java_org_rocksdb_RocksDB_getPropertiesOfTablesInRange(
3682
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jcf_handle,
3683
+ jlongArray jrange_slice_handles) {
3684
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3685
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3686
+ if (jcf_handle == 0) {
3687
+ cf_handle = db->DefaultColumnFamily();
3688
+ } else {
3689
+ cf_handle =
3690
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3691
+ }
3692
+ const jsize jlen = env->GetArrayLength(jrange_slice_handles);
3693
+ jlong* jrange_slice_handle =
3694
+ env->GetLongArrayElements(jrange_slice_handles, nullptr);
3695
+ if (jrange_slice_handle == nullptr) {
3696
+ // exception occurred
3697
+ return nullptr;
3698
+ }
3699
+
3700
+ const size_t ranges_len = static_cast<size_t>(jlen / 2);
3701
+ auto ranges = std::unique_ptr<ROCKSDB_NAMESPACE::Range[]>(
3702
+ new ROCKSDB_NAMESPACE::Range[ranges_len]);
3703
+ for (jsize i = 0, j = 0; i < jlen; ++i) {
3704
+ auto* start =
3705
+ reinterpret_cast<ROCKSDB_NAMESPACE::Slice*>(jrange_slice_handle[i]);
3706
+ auto* limit =
3707
+ reinterpret_cast<ROCKSDB_NAMESPACE::Slice*>(jrange_slice_handle[++i]);
3708
+ ranges[j++] = ROCKSDB_NAMESPACE::Range(*start, *limit);
3709
+ }
3710
+
3711
+ ROCKSDB_NAMESPACE::TablePropertiesCollection table_properties_collection;
3712
+ auto s = db->GetPropertiesOfTablesInRange(cf_handle, ranges.get(), ranges_len,
3713
+ &table_properties_collection);
3714
+ if (!s.ok()) {
3715
+ // error occurred
3716
+ env->ReleaseLongArrayElements(jrange_slice_handles, jrange_slice_handle,
3717
+ JNI_ABORT);
3718
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3719
+ return nullptr;
3720
+ }
3721
+
3722
+ // cleanup
3723
+ env->ReleaseLongArrayElements(jrange_slice_handles, jrange_slice_handle,
3724
+ JNI_ABORT);
3725
+
3726
+ return jrange_slice_handles;
3727
+ }
3728
+
3729
+ /*
3730
+ * Class: org_rocksdb_RocksDB
3731
+ * Method: suggestCompactRange
3732
+ * Signature: (JJ)[J
3733
+ */
3734
+ jlongArray Java_org_rocksdb_RocksDB_suggestCompactRange(JNIEnv* env, jobject,
3735
+ jlong jdb_handle,
3736
+ jlong jcf_handle) {
3737
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3738
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3739
+ if (jcf_handle == 0) {
3740
+ cf_handle = db->DefaultColumnFamily();
3741
+ } else {
3742
+ cf_handle =
3743
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3744
+ }
3745
+ auto* begin = new ROCKSDB_NAMESPACE::Slice();
3746
+ auto* end = new ROCKSDB_NAMESPACE::Slice();
3747
+ auto s = db->SuggestCompactRange(cf_handle, begin, end);
3748
+ if (!s.ok()) {
3749
+ // error occurred
3750
+ delete begin;
3751
+ delete end;
3752
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3753
+ return nullptr;
3754
+ }
3755
+
3756
+ jlongArray jslice_handles = env->NewLongArray(2);
3757
+ if (jslice_handles == nullptr) {
3758
+ // exception thrown: OutOfMemoryError
3759
+ delete begin;
3760
+ delete end;
3761
+ return nullptr;
3762
+ }
3763
+
3764
+ jlong slice_handles[2];
3765
+ slice_handles[0] = GET_CPLUSPLUS_POINTER(begin);
3766
+ slice_handles[1] = GET_CPLUSPLUS_POINTER(end);
3767
+ env->SetLongArrayRegion(jslice_handles, 0, 2, slice_handles);
3768
+ if (env->ExceptionCheck()) {
3769
+ // exception thrown: ArrayIndexOutOfBoundsException
3770
+ delete begin;
3771
+ delete end;
3772
+ env->DeleteLocalRef(jslice_handles);
3773
+ return nullptr;
3774
+ }
3775
+
3776
+ return jslice_handles;
3777
+ }
3778
+
3779
+ /*
3780
+ * Class: org_rocksdb_RocksDB
3781
+ * Method: promoteL0
3782
+ * Signature: (JJI)V
3783
+ */
3784
+ void Java_org_rocksdb_RocksDB_promoteL0(JNIEnv*, jobject, jlong jdb_handle,
3785
+ jlong jcf_handle, jint jtarget_level) {
3786
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3787
+ ROCKSDB_NAMESPACE::ColumnFamilyHandle* cf_handle;
3788
+ if (jcf_handle == 0) {
3789
+ cf_handle = db->DefaultColumnFamily();
3790
+ } else {
3791
+ cf_handle =
3792
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3793
+ }
3794
+ db->PromoteL0(cf_handle, static_cast<int>(jtarget_level));
3795
+ }
3796
+
3797
+ /*
3798
+ * Class: org_rocksdb_RocksDB
3799
+ * Method: startTrace
3800
+ * Signature: (JJJ)V
3801
+ */
3802
+ void Java_org_rocksdb_RocksDB_startTrace(
3803
+ JNIEnv* env, jobject, jlong jdb_handle, jlong jmax_trace_file_size,
3804
+ jlong jtrace_writer_jnicallback_handle) {
3805
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3806
+ ROCKSDB_NAMESPACE::TraceOptions trace_options;
3807
+ trace_options.max_trace_file_size =
3808
+ static_cast<uint64_t>(jmax_trace_file_size);
3809
+ // transfer ownership of trace writer from Java to C++
3810
+ auto trace_writer =
3811
+ std::unique_ptr<ROCKSDB_NAMESPACE::TraceWriterJniCallback>(
3812
+ reinterpret_cast<ROCKSDB_NAMESPACE::TraceWriterJniCallback*>(
3813
+ jtrace_writer_jnicallback_handle));
3814
+ auto s = db->StartTrace(trace_options, std::move(trace_writer));
3815
+ if (!s.ok()) {
3816
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3817
+ }
3818
+ }
3819
+
3820
+ /*
3821
+ * Class: org_rocksdb_RocksDB
3822
+ * Method: endTrace
3823
+ * Signature: (J)V
3824
+ */
3825
+ void Java_org_rocksdb_RocksDB_endTrace(JNIEnv* env, jobject, jlong jdb_handle) {
3826
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3827
+ auto s = db->EndTrace();
3828
+ if (!s.ok()) {
3829
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3830
+ }
3831
+ }
3832
+
3833
+ /*
3834
+ * Class: org_rocksdb_RocksDB
3835
+ * Method: tryCatchUpWithPrimary
3836
+ * Signature: (J)V
3837
+ */
3838
+ void Java_org_rocksdb_RocksDB_tryCatchUpWithPrimary(JNIEnv* env, jobject,
3839
+ jlong jdb_handle) {
3840
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3841
+ auto s = db->TryCatchUpWithPrimary();
3842
+ if (!s.ok()) {
3843
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3844
+ }
3845
+ }
3846
+
3847
+ /*
3848
+ * Class: org_rocksdb_RocksDB
3849
+ * Method: destroyDB
3850
+ * Signature: (Ljava/lang/String;J)V
3851
+ */
3852
+ void Java_org_rocksdb_RocksDB_destroyDB(JNIEnv* env, jclass, jstring jdb_path,
3853
+ jlong joptions_handle) {
3854
+ const char* db_path = env->GetStringUTFChars(jdb_path, nullptr);
3855
+ if (db_path == nullptr) {
3856
+ // exception thrown: OutOfMemoryError
3857
+ return;
3858
+ }
3859
+
3860
+ auto* options =
3861
+ reinterpret_cast<ROCKSDB_NAMESPACE::Options*>(joptions_handle);
3862
+ if (options == nullptr) {
3863
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(
3864
+ env, ROCKSDB_NAMESPACE::Status::InvalidArgument("Invalid Options."));
3865
+ }
3866
+
3867
+ ROCKSDB_NAMESPACE::Status s = ROCKSDB_NAMESPACE::DestroyDB(db_path, *options);
3868
+ env->ReleaseStringUTFChars(jdb_path, db_path);
3869
+
3870
+ if (!s.ok()) {
3871
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3872
+ }
3873
+ }
3874
+
3875
+ bool get_slice_helper(JNIEnv* env, jobjectArray ranges, jsize index,
3876
+ std::unique_ptr<ROCKSDB_NAMESPACE::Slice>& slice,
3877
+ std::vector<std::unique_ptr<jbyte[]>>& ranges_to_free) {
3878
+ jobject jArray = env->GetObjectArrayElement(ranges, index);
3879
+ if (env->ExceptionCheck()) {
3880
+ // exception thrown: ArrayIndexOutOfBoundsException
3881
+ return false;
3882
+ }
3883
+
3884
+ if (jArray == nullptr) {
3885
+ return true;
3886
+ }
3887
+
3888
+ jbyteArray jba = reinterpret_cast<jbyteArray>(jArray);
3889
+ jsize len_ba = env->GetArrayLength(jba);
3890
+ ranges_to_free.push_back(std::unique_ptr<jbyte[]>(new jbyte[len_ba]));
3891
+ env->GetByteArrayRegion(jba, 0, len_ba, ranges_to_free.back().get());
3892
+ if (env->ExceptionCheck()) {
3893
+ // exception thrown: ArrayIndexOutOfBoundsException
3894
+ env->DeleteLocalRef(jArray);
3895
+ return false;
3896
+ }
3897
+ env->DeleteLocalRef(jArray);
3898
+ slice.reset(new ROCKSDB_NAMESPACE::Slice(
3899
+ reinterpret_cast<char*>(ranges_to_free.back().get()), len_ba));
3900
+ return true;
3901
+ }
3902
+ /*
3903
+ * Class: org_rocksdb_RocksDB
3904
+ * Method: deleteFilesInRanges
3905
+ * Signature: (JJLjava/util/List;Z)V
3906
+ */
3907
+ void Java_org_rocksdb_RocksDB_deleteFilesInRanges(JNIEnv* env, jobject /*jdb*/,
3908
+ jlong jdb_handle,
3909
+ jlong jcf_handle,
3910
+ jobjectArray ranges,
3911
+ jboolean include_end) {
3912
+ jsize length = env->GetArrayLength(ranges);
3913
+
3914
+ std::vector<ROCKSDB_NAMESPACE::RangePtr> rangesVector;
3915
+ std::vector<std::unique_ptr<ROCKSDB_NAMESPACE::Slice>> slices;
3916
+ std::vector<std::unique_ptr<jbyte[]>> ranges_to_free;
3917
+ for (jsize i = 0; (i + 1) < length; i += 2) {
3918
+ slices.push_back(std::unique_ptr<ROCKSDB_NAMESPACE::Slice>());
3919
+ if (!get_slice_helper(env, ranges, i, slices.back(), ranges_to_free)) {
3920
+ // exception thrown
3921
+ return;
3922
+ }
3923
+
3924
+ slices.push_back(std::unique_ptr<ROCKSDB_NAMESPACE::Slice>());
3925
+ if (!get_slice_helper(env, ranges, i + 1, slices.back(), ranges_to_free)) {
3926
+ // exception thrown
3927
+ return;
3928
+ }
3929
+
3930
+ rangesVector.push_back(ROCKSDB_NAMESPACE::RangePtr(
3931
+ slices[slices.size() - 2].get(), slices[slices.size() - 1].get()));
3932
+ }
3933
+
3934
+ auto* db = reinterpret_cast<ROCKSDB_NAMESPACE::DB*>(jdb_handle);
3935
+ auto* column_family =
3936
+ reinterpret_cast<ROCKSDB_NAMESPACE::ColumnFamilyHandle*>(jcf_handle);
3937
+
3938
+ ROCKSDB_NAMESPACE::Status s = ROCKSDB_NAMESPACE::DeleteFilesInRanges(
3939
+ db, column_family == nullptr ? db->DefaultColumnFamily() : column_family,
3940
+ rangesVector.data(), rangesVector.size(), include_end);
3941
+
3942
+ if (!s.ok()) {
3943
+ ROCKSDB_NAMESPACE::RocksDBExceptionJni::ThrowNew(env, s);
3944
+ }
3945
+ }
3946
+
3947
+ /*
3948
+ * Class: org_rocksdb_RocksDB
3949
+ * Method: version
3950
+ * Signature: ()I
3951
+ */
3952
+ jint Java_org_rocksdb_RocksDB_version(JNIEnv*, jclass) {
3953
+ uint32_t encodedVersion = (ROCKSDB_MAJOR & 0xff) << 16;
3954
+ encodedVersion |= (ROCKSDB_MINOR & 0xff) << 8;
3955
+ encodedVersion |= (ROCKSDB_PATCH & 0xff);
3956
+ return static_cast<jint>(encodedVersion);
3957
+ }