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,1966 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Copyright (c) 2012 The LevelDB Authors. All rights reserved.
7
+ // Use of this source code is governed by a BSD-style license that can be
8
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
+
10
+ #include "rocksdb/filter_policy.h"
11
+
12
+ #include <array>
13
+ #include <climits>
14
+ #include <cstring>
15
+ #include <deque>
16
+ #include <limits>
17
+ #include <memory>
18
+
19
+ #include "cache/cache_entry_roles.h"
20
+ #include "cache/cache_reservation_manager.h"
21
+ #include "logging/logging.h"
22
+ #include "port/lang.h"
23
+ #include "rocksdb/convenience.h"
24
+ #include "rocksdb/rocksdb_namespace.h"
25
+ #include "rocksdb/slice.h"
26
+ #include "rocksdb/utilities/object_registry.h"
27
+ #include "table/block_based/block_based_table_reader.h"
28
+ #include "table/block_based/filter_policy_internal.h"
29
+ #include "table/block_based/full_filter_block.h"
30
+ #include "util/bloom_impl.h"
31
+ #include "util/coding.h"
32
+ #include "util/hash.h"
33
+ #include "util/math.h"
34
+ #include "util/ribbon_config.h"
35
+ #include "util/ribbon_impl.h"
36
+ #include "util/string_util.h"
37
+
38
+ namespace ROCKSDB_NAMESPACE {
39
+
40
+ namespace {
41
+
42
+ // Metadata trailer size for built-in filters. (This is separate from
43
+ // block-based table block trailer.)
44
+ //
45
+ // Originally this was 1 byte for num_probes and 4 bytes for number of
46
+ // cache lines in the Bloom filter, but now the first trailer byte is
47
+ // usually an implementation marker and remaining 4 bytes have various
48
+ // meanings.
49
+ static constexpr uint32_t kMetadataLen = 5;
50
+
51
+ Slice FinishAlwaysFalse(std::unique_ptr<const char[]>* /*buf*/) {
52
+ // Missing metadata, treated as zero entries
53
+ return Slice(nullptr, 0);
54
+ }
55
+
56
+ Slice FinishAlwaysTrue(std::unique_ptr<const char[]>* /*buf*/) {
57
+ return Slice("\0\0\0\0\0\0", 6);
58
+ }
59
+
60
+ // Base class for filter builders using the XXH3 preview hash,
61
+ // also known as Hash64 or GetSliceHash64.
62
+ class XXPH3FilterBitsBuilder : public BuiltinFilterBitsBuilder {
63
+ public:
64
+ explicit XXPH3FilterBitsBuilder(
65
+ std::atomic<int64_t>* aggregate_rounding_balance,
66
+ std::shared_ptr<CacheReservationManager> cache_res_mgr,
67
+ bool detect_filter_construct_corruption)
68
+ : aggregate_rounding_balance_(aggregate_rounding_balance),
69
+ cache_res_mgr_(cache_res_mgr),
70
+ detect_filter_construct_corruption_(
71
+ detect_filter_construct_corruption) {}
72
+
73
+ ~XXPH3FilterBitsBuilder() override {}
74
+
75
+ virtual void AddKey(const Slice& key) override {
76
+ uint64_t hash = GetSliceHash64(key);
77
+ // Especially with prefixes, it is common to have repetition,
78
+ // though only adjacent repetition, which we want to immediately
79
+ // recognize and collapse for estimating true filter space
80
+ // requirements.
81
+ if (hash_entries_info_.entries.empty() ||
82
+ hash != hash_entries_info_.entries.back()) {
83
+ if (detect_filter_construct_corruption_) {
84
+ hash_entries_info_.xor_checksum ^= hash;
85
+ }
86
+ hash_entries_info_.entries.push_back(hash);
87
+ if (cache_res_mgr_ &&
88
+ // Traditional rounding to whole bucket size
89
+ ((hash_entries_info_.entries.size() %
90
+ kUint64tHashEntryCacheResBucketSize) ==
91
+ kUint64tHashEntryCacheResBucketSize / 2)) {
92
+ hash_entries_info_.cache_res_bucket_handles.emplace_back(nullptr);
93
+ Status s = cache_res_mgr_->MakeCacheReservation(
94
+ kUint64tHashEntryCacheResBucketSize * sizeof(hash),
95
+ &hash_entries_info_.cache_res_bucket_handles.back());
96
+ s.PermitUncheckedError();
97
+ }
98
+ }
99
+ }
100
+
101
+ virtual size_t EstimateEntriesAdded() override {
102
+ return hash_entries_info_.entries.size();
103
+ }
104
+
105
+ virtual Status MaybePostVerify(const Slice& filter_content) override;
106
+
107
+ protected:
108
+ static constexpr uint32_t kMetadataLen = 5;
109
+
110
+ // Number of hash entries to accumulate before charging their memory usage to
111
+ // the cache when cache charging is available
112
+ static const std::size_t kUint64tHashEntryCacheResBucketSize =
113
+ CacheReservationManagerImpl<
114
+ CacheEntryRole::kFilterConstruction>::GetDummyEntrySize() /
115
+ sizeof(uint64_t);
116
+
117
+ // For delegating between XXPH3FilterBitsBuilders
118
+ void SwapEntriesWith(XXPH3FilterBitsBuilder* other) {
119
+ assert(other != nullptr);
120
+ hash_entries_info_.Swap(&(other->hash_entries_info_));
121
+ }
122
+
123
+ void ResetEntries() { hash_entries_info_.Reset(); }
124
+
125
+ virtual size_t RoundDownUsableSpace(size_t available_size) = 0;
126
+
127
+ // To choose size using malloc_usable_size, we have to actually allocate.
128
+ size_t AllocateMaybeRounding(size_t target_len_with_metadata,
129
+ size_t num_entries,
130
+ std::unique_ptr<char[]>* buf) {
131
+ // Return value set to a default; overwritten in some cases
132
+ size_t rv = target_len_with_metadata;
133
+ #ifdef ROCKSDB_MALLOC_USABLE_SIZE
134
+ if (aggregate_rounding_balance_ != nullptr) {
135
+ // Do optimize_filters_for_memory, using malloc_usable_size.
136
+ // Approach: try to keep FP rate balance better than or on
137
+ // target (negative aggregate_rounding_balance_). We can then select a
138
+ // lower bound filter size (within reasonable limits) that gets us as
139
+ // close to on target as possible. We request allocation for that filter
140
+ // size and use malloc_usable_size to "round up" to the actual
141
+ // allocation size.
142
+
143
+ // Although it can be considered bad practice to use malloc_usable_size
144
+ // to access an object beyond its original size, this approach should be
145
+ // quite general: working for all allocators that properly support
146
+ // malloc_usable_size.
147
+
148
+ // Race condition on balance is OK because it can only cause temporary
149
+ // skew in rounding up vs. rounding down, as long as updates are atomic
150
+ // and relative.
151
+ int64_t balance = aggregate_rounding_balance_->load();
152
+
153
+ double target_fp_rate =
154
+ EstimatedFpRate(num_entries, target_len_with_metadata);
155
+ double rv_fp_rate = target_fp_rate;
156
+
157
+ if (balance < 0) {
158
+ // See formula for BloomFilterPolicy::aggregate_rounding_balance_
159
+ double for_balance_fp_rate =
160
+ -balance / double{0x100000000} + target_fp_rate;
161
+
162
+ // To simplify, we just try a few modified smaller sizes. This also
163
+ // caps how much we vary filter size vs. target, to avoid outlier
164
+ // behavior from excessive variance.
165
+ size_t target_len = target_len_with_metadata - kMetadataLen;
166
+ assert(target_len < target_len_with_metadata); // check underflow
167
+ for (uint64_t maybe_len_rough :
168
+ {uint64_t{3} * target_len / 4, uint64_t{13} * target_len / 16,
169
+ uint64_t{7} * target_len / 8, uint64_t{15} * target_len / 16}) {
170
+ size_t maybe_len_with_metadata =
171
+ RoundDownUsableSpace(maybe_len_rough + kMetadataLen);
172
+ double maybe_fp_rate =
173
+ EstimatedFpRate(num_entries, maybe_len_with_metadata);
174
+ if (maybe_fp_rate <= for_balance_fp_rate) {
175
+ rv = maybe_len_with_metadata;
176
+ rv_fp_rate = maybe_fp_rate;
177
+ break;
178
+ }
179
+ }
180
+ }
181
+
182
+ // Filter blocks are loaded into block cache with their block trailer.
183
+ // We need to make sure that's accounted for in choosing a
184
+ // fragmentation-friendly size.
185
+ const size_t kExtraPadding = BlockBasedTable::kBlockTrailerSize;
186
+ size_t requested = rv + kExtraPadding;
187
+
188
+ // Allocate and get usable size
189
+ buf->reset(new char[requested]);
190
+ size_t usable = malloc_usable_size(buf->get());
191
+
192
+ if (usable - usable / 4 > requested) {
193
+ // Ratio greater than 4/3 is too much for utilizing, if it's
194
+ // not a buggy or mislinked malloc_usable_size implementation.
195
+ // Non-linearity of FP rates with bits/key means rapidly
196
+ // diminishing returns in overall accuracy for additional
197
+ // storage on disk.
198
+ // Nothing to do, except assert that the result is accurate about
199
+ // the usable size. (Assignment never used.)
200
+ assert(((*buf)[usable - 1] = 'x'));
201
+ } else if (usable > requested) {
202
+ rv = RoundDownUsableSpace(usable - kExtraPadding);
203
+ assert(rv <= usable - kExtraPadding);
204
+ rv_fp_rate = EstimatedFpRate(num_entries, rv);
205
+ } else {
206
+ // Too small means bad malloc_usable_size
207
+ assert(usable == requested);
208
+ }
209
+ memset(buf->get(), 0, rv);
210
+
211
+ // Update balance
212
+ int64_t diff = static_cast<int64_t>((rv_fp_rate - target_fp_rate) *
213
+ double{0x100000000});
214
+ *aggregate_rounding_balance_ += diff;
215
+ } else {
216
+ buf->reset(new char[rv]());
217
+ }
218
+ #else
219
+ (void)num_entries;
220
+ buf->reset(new char[rv]());
221
+ #endif // ROCKSDB_MALLOC_USABLE_SIZE
222
+ return rv;
223
+ }
224
+
225
+ // TODO: Ideally we want to verify the hash entry
226
+ // as it is added to the filter and eliminate this function
227
+ // for speeding up and leaving fewer spaces for undetected memory/CPU
228
+ // corruption. For Ribbon Filter, it's bit harder.
229
+ // Possible solution:
230
+ // pass a custom iterator that tracks the xor checksum as
231
+ // it iterates to ResetAndFindSeedToSolve
232
+ Status MaybeVerifyHashEntriesChecksum() {
233
+ if (!detect_filter_construct_corruption_) {
234
+ return Status::OK();
235
+ }
236
+
237
+ uint64_t actual_hash_entries_xor_checksum = 0;
238
+ for (uint64_t h : hash_entries_info_.entries) {
239
+ actual_hash_entries_xor_checksum ^= h;
240
+ }
241
+
242
+ if (actual_hash_entries_xor_checksum == hash_entries_info_.xor_checksum) {
243
+ return Status::OK();
244
+ } else {
245
+ // Since these hash entries are corrupted and they will not be used
246
+ // anymore, we can reset them and release memory.
247
+ ResetEntries();
248
+ return Status::Corruption("Filter's hash entries checksum mismatched");
249
+ }
250
+ }
251
+
252
+ // See BloomFilterPolicy::aggregate_rounding_balance_. If nullptr,
253
+ // always "round up" like historic behavior.
254
+ std::atomic<int64_t>* aggregate_rounding_balance_;
255
+
256
+ // For reserving memory used in (new) Bloom and Ribbon Filter construction
257
+ std::shared_ptr<CacheReservationManager> cache_res_mgr_;
258
+
259
+ // For managing cache charge for final filter in (new) Bloom and Ribbon
260
+ // Filter construction
261
+ std::deque<std::unique_ptr<CacheReservationManager::CacheReservationHandle>>
262
+ final_filter_cache_res_handles_;
263
+
264
+ bool detect_filter_construct_corruption_;
265
+
266
+ struct HashEntriesInfo {
267
+ // A deque avoids unnecessary copying of already-saved values
268
+ // and has near-minimal peak memory use.
269
+ std::deque<uint64_t> entries;
270
+
271
+ // If cache_res_mgr_ != nullptr,
272
+ // it manages cache charge for buckets of hash entries in (new) Bloom
273
+ // or Ribbon Filter construction.
274
+ // Otherwise, it is empty.
275
+ std::deque<std::unique_ptr<CacheReservationManager::CacheReservationHandle>>
276
+ cache_res_bucket_handles;
277
+
278
+ // If detect_filter_construct_corruption_ == true,
279
+ // it records the xor checksum of hash entries.
280
+ // Otherwise, it is 0.
281
+ uint64_t xor_checksum = 0;
282
+
283
+ void Swap(HashEntriesInfo* other) {
284
+ assert(other != nullptr);
285
+ std::swap(entries, other->entries);
286
+ std::swap(cache_res_bucket_handles, other->cache_res_bucket_handles);
287
+ std::swap(xor_checksum, other->xor_checksum);
288
+ }
289
+
290
+ void Reset() {
291
+ entries.clear();
292
+ cache_res_bucket_handles.clear();
293
+ xor_checksum = 0;
294
+ }
295
+ };
296
+
297
+ HashEntriesInfo hash_entries_info_;
298
+ };
299
+
300
+ // #################### FastLocalBloom implementation ################## //
301
+ // ############## also known as format_version=5 Bloom filter ########## //
302
+
303
+ // See description in FastLocalBloomImpl
304
+ class FastLocalBloomBitsBuilder : public XXPH3FilterBitsBuilder {
305
+ public:
306
+ // Non-null aggregate_rounding_balance implies optimize_filters_for_memory
307
+ explicit FastLocalBloomBitsBuilder(
308
+ const int millibits_per_key,
309
+ std::atomic<int64_t>* aggregate_rounding_balance,
310
+ std::shared_ptr<CacheReservationManager> cache_res_mgr,
311
+ bool detect_filter_construct_corruption)
312
+ : XXPH3FilterBitsBuilder(aggregate_rounding_balance, cache_res_mgr,
313
+ detect_filter_construct_corruption),
314
+ millibits_per_key_(millibits_per_key) {
315
+ assert(millibits_per_key >= 1000);
316
+ }
317
+
318
+ // No Copy allowed
319
+ FastLocalBloomBitsBuilder(const FastLocalBloomBitsBuilder&) = delete;
320
+ void operator=(const FastLocalBloomBitsBuilder&) = delete;
321
+
322
+ ~FastLocalBloomBitsBuilder() override {}
323
+
324
+ using FilterBitsBuilder::Finish;
325
+
326
+ virtual Slice Finish(std::unique_ptr<const char[]>* buf) override {
327
+ return Finish(buf, nullptr);
328
+ }
329
+
330
+ virtual Slice Finish(std::unique_ptr<const char[]>* buf,
331
+ Status* status) override {
332
+ size_t num_entries = hash_entries_info_.entries.size();
333
+ size_t len_with_metadata = CalculateSpace(num_entries);
334
+
335
+ std::unique_ptr<char[]> mutable_buf;
336
+ std::unique_ptr<CacheReservationManager::CacheReservationHandle>
337
+ final_filter_cache_res_handle;
338
+ len_with_metadata =
339
+ AllocateMaybeRounding(len_with_metadata, num_entries, &mutable_buf);
340
+ // Cache charging for mutable_buf
341
+ if (cache_res_mgr_) {
342
+ Status s = cache_res_mgr_->MakeCacheReservation(
343
+ len_with_metadata * sizeof(char), &final_filter_cache_res_handle);
344
+ s.PermitUncheckedError();
345
+ }
346
+
347
+ assert(mutable_buf);
348
+ assert(len_with_metadata >= kMetadataLen);
349
+
350
+ // Max size supported by implementation
351
+ assert(len_with_metadata <= 0xffffffffU);
352
+
353
+ // Compute num_probes after any rounding / adjustments
354
+ int num_probes = GetNumProbes(num_entries, len_with_metadata);
355
+
356
+ uint32_t len = static_cast<uint32_t>(len_with_metadata - kMetadataLen);
357
+ if (len > 0) {
358
+ TEST_SYNC_POINT_CALLBACK(
359
+ "XXPH3FilterBitsBuilder::Finish::"
360
+ "TamperHashEntries",
361
+ &hash_entries_info_.entries);
362
+ AddAllEntries(mutable_buf.get(), len, num_probes);
363
+ Status verify_hash_entries_checksum_status =
364
+ MaybeVerifyHashEntriesChecksum();
365
+ if (!verify_hash_entries_checksum_status.ok()) {
366
+ if (status) {
367
+ *status = verify_hash_entries_checksum_status;
368
+ }
369
+ return FinishAlwaysTrue(buf);
370
+ }
371
+ }
372
+
373
+ bool keep_entries_for_postverify = detect_filter_construct_corruption_;
374
+ if (!keep_entries_for_postverify) {
375
+ ResetEntries();
376
+ }
377
+
378
+ // See BloomFilterPolicy::GetBloomBitsReader re: metadata
379
+ // -1 = Marker for newer Bloom implementations
380
+ mutable_buf[len] = static_cast<char>(-1);
381
+ // 0 = Marker for this sub-implementation
382
+ mutable_buf[len + 1] = static_cast<char>(0);
383
+ // num_probes (and 0 in upper bits for 64-byte block size)
384
+ mutable_buf[len + 2] = static_cast<char>(num_probes);
385
+ // rest of metadata stays zero
386
+
387
+ auto TEST_arg_pair __attribute__((__unused__)) =
388
+ std::make_pair(&mutable_buf, len_with_metadata);
389
+ TEST_SYNC_POINT_CALLBACK("XXPH3FilterBitsBuilder::Finish::TamperFilter",
390
+ &TEST_arg_pair);
391
+
392
+ Slice rv(mutable_buf.get(), len_with_metadata);
393
+ *buf = std::move(mutable_buf);
394
+ final_filter_cache_res_handles_.push_back(
395
+ std::move(final_filter_cache_res_handle));
396
+ if (status) {
397
+ *status = Status::OK();
398
+ }
399
+ return rv;
400
+ }
401
+
402
+ size_t ApproximateNumEntries(size_t bytes) override {
403
+ size_t bytes_no_meta =
404
+ bytes >= kMetadataLen ? RoundDownUsableSpace(bytes) - kMetadataLen : 0;
405
+ return static_cast<size_t>(uint64_t{8000} * bytes_no_meta /
406
+ millibits_per_key_);
407
+ }
408
+
409
+ size_t CalculateSpace(size_t num_entries) override {
410
+ // If not for cache line blocks in the filter, what would the target
411
+ // length in bytes be?
412
+ size_t raw_target_len = static_cast<size_t>(
413
+ (uint64_t{num_entries} * millibits_per_key_ + 7999) / 8000);
414
+
415
+ if (raw_target_len >= size_t{0xffffffc0}) {
416
+ // Max supported for this data structure implementation
417
+ raw_target_len = size_t{0xffffffc0};
418
+ }
419
+
420
+ // Round up to nearest multiple of 64 (block size). This adjustment is
421
+ // used for target FP rate only so that we don't receive complaints about
422
+ // lower FP rate vs. historic Bloom filter behavior.
423
+ return ((raw_target_len + 63) & ~size_t{63}) + kMetadataLen;
424
+ }
425
+
426
+ double EstimatedFpRate(size_t keys, size_t len_with_metadata) override {
427
+ int num_probes = GetNumProbes(keys, len_with_metadata);
428
+ return FastLocalBloomImpl::EstimatedFpRate(
429
+ keys, len_with_metadata - kMetadataLen, num_probes, /*hash bits*/ 64);
430
+ }
431
+
432
+ protected:
433
+ size_t RoundDownUsableSpace(size_t available_size) override {
434
+ size_t rv = available_size - kMetadataLen;
435
+
436
+ if (rv >= size_t{0xffffffc0}) {
437
+ // Max supported for this data structure implementation
438
+ rv = size_t{0xffffffc0};
439
+ }
440
+
441
+ // round down to multiple of 64 (block size)
442
+ rv &= ~size_t{63};
443
+
444
+ return rv + kMetadataLen;
445
+ }
446
+
447
+ private:
448
+ // Compute num_probes after any rounding / adjustments
449
+ int GetNumProbes(size_t keys, size_t len_with_metadata) {
450
+ uint64_t millibits = uint64_t{len_with_metadata - kMetadataLen} * 8000;
451
+ int actual_millibits_per_key =
452
+ static_cast<int>(millibits / std::max(keys, size_t{1}));
453
+ // BEGIN XXX/TODO(peterd): preserving old/default behavior for now to
454
+ // minimize unit test churn. Remove this some time.
455
+ if (!aggregate_rounding_balance_) {
456
+ actual_millibits_per_key = millibits_per_key_;
457
+ }
458
+ // END XXX/TODO
459
+ return FastLocalBloomImpl::ChooseNumProbes(actual_millibits_per_key);
460
+ }
461
+
462
+ void AddAllEntries(char* data, uint32_t len, int num_probes) {
463
+ // Simple version without prefetching:
464
+ //
465
+ // for (auto h : hash_entries_info_.entries) {
466
+ // FastLocalBloomImpl::AddHash(Lower32of64(h), Upper32of64(h), len,
467
+ // num_probes, data);
468
+ // }
469
+
470
+ const size_t num_entries = hash_entries_info_.entries.size();
471
+ constexpr size_t kBufferMask = 7;
472
+ static_assert(((kBufferMask + 1) & kBufferMask) == 0,
473
+ "Must be power of 2 minus 1");
474
+
475
+ std::array<uint32_t, kBufferMask + 1> hashes;
476
+ std::array<uint32_t, kBufferMask + 1> byte_offsets;
477
+
478
+ // Prime the buffer
479
+ size_t i = 0;
480
+ std::deque<uint64_t>::iterator hash_entries_it =
481
+ hash_entries_info_.entries.begin();
482
+ for (; i <= kBufferMask && i < num_entries; ++i) {
483
+ uint64_t h = *hash_entries_it;
484
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len, data,
485
+ /*out*/ &byte_offsets[i]);
486
+ hashes[i] = Upper32of64(h);
487
+ ++hash_entries_it;
488
+ }
489
+
490
+ // Process and buffer
491
+ for (; i < num_entries; ++i) {
492
+ uint32_t& hash_ref = hashes[i & kBufferMask];
493
+ uint32_t& byte_offset_ref = byte_offsets[i & kBufferMask];
494
+ // Process (add)
495
+ FastLocalBloomImpl::AddHashPrepared(hash_ref, num_probes,
496
+ data + byte_offset_ref);
497
+ // And buffer
498
+ uint64_t h = *hash_entries_it;
499
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len, data,
500
+ /*out*/ &byte_offset_ref);
501
+ hash_ref = Upper32of64(h);
502
+ ++hash_entries_it;
503
+ }
504
+
505
+ // Finish processing
506
+ for (i = 0; i <= kBufferMask && i < num_entries; ++i) {
507
+ FastLocalBloomImpl::AddHashPrepared(hashes[i], num_probes,
508
+ data + byte_offsets[i]);
509
+ }
510
+ }
511
+
512
+ // Target allocation per added key, in thousandths of a bit.
513
+ int millibits_per_key_;
514
+ };
515
+
516
+ // See description in FastLocalBloomImpl
517
+ class FastLocalBloomBitsReader : public BuiltinFilterBitsReader {
518
+ public:
519
+ FastLocalBloomBitsReader(const char* data, int num_probes, uint32_t len_bytes)
520
+ : data_(data), num_probes_(num_probes), len_bytes_(len_bytes) {}
521
+
522
+ // No Copy allowed
523
+ FastLocalBloomBitsReader(const FastLocalBloomBitsReader&) = delete;
524
+ void operator=(const FastLocalBloomBitsReader&) = delete;
525
+
526
+ ~FastLocalBloomBitsReader() override {}
527
+
528
+ bool MayMatch(const Slice& key) override {
529
+ uint64_t h = GetSliceHash64(key);
530
+ uint32_t byte_offset;
531
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len_bytes_, data_,
532
+ /*out*/ &byte_offset);
533
+ return FastLocalBloomImpl::HashMayMatchPrepared(Upper32of64(h), num_probes_,
534
+ data_ + byte_offset);
535
+ }
536
+
537
+ virtual void MayMatch(int num_keys, Slice** keys, bool* may_match) override {
538
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> hashes;
539
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> byte_offsets;
540
+ for (int i = 0; i < num_keys; ++i) {
541
+ uint64_t h = GetSliceHash64(*keys[i]);
542
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len_bytes_, data_,
543
+ /*out*/ &byte_offsets[i]);
544
+ hashes[i] = Upper32of64(h);
545
+ }
546
+ for (int i = 0; i < num_keys; ++i) {
547
+ may_match[i] = FastLocalBloomImpl::HashMayMatchPrepared(
548
+ hashes[i], num_probes_, data_ + byte_offsets[i]);
549
+ }
550
+ }
551
+
552
+ bool HashMayMatch(const uint64_t h) override {
553
+ return FastLocalBloomImpl::HashMayMatch(Lower32of64(h), Upper32of64(h),
554
+ len_bytes_, num_probes_, data_);
555
+ }
556
+
557
+ private:
558
+ const char* data_;
559
+ const int num_probes_;
560
+ const uint32_t len_bytes_;
561
+ };
562
+
563
+ // ##################### Ribbon filter implementation ################### //
564
+
565
+ // Implements concept RehasherTypesAndSettings in ribbon_impl.h
566
+ struct Standard128RibbonRehasherTypesAndSettings {
567
+ // These are schema-critical. Any change almost certainly changes
568
+ // underlying data.
569
+ static constexpr bool kIsFilter = true;
570
+ static constexpr bool kHomogeneous = false;
571
+ static constexpr bool kFirstCoeffAlwaysOne = true;
572
+ static constexpr bool kUseSmash = false;
573
+ using CoeffRow = ROCKSDB_NAMESPACE::Unsigned128;
574
+ using Hash = uint64_t;
575
+ using Seed = uint32_t;
576
+ // Changing these doesn't necessarily change underlying data,
577
+ // but might affect supported scalability of those dimensions.
578
+ using Index = uint32_t;
579
+ using ResultRow = uint32_t;
580
+ // Save a conditional in Ribbon queries
581
+ static constexpr bool kAllowZeroStarts = false;
582
+ };
583
+
584
+ using Standard128RibbonTypesAndSettings =
585
+ ribbon::StandardRehasherAdapter<Standard128RibbonRehasherTypesAndSettings>;
586
+
587
+ class Standard128RibbonBitsBuilder : public XXPH3FilterBitsBuilder {
588
+ public:
589
+ explicit Standard128RibbonBitsBuilder(
590
+ double desired_one_in_fp_rate, int bloom_millibits_per_key,
591
+ std::atomic<int64_t>* aggregate_rounding_balance,
592
+ std::shared_ptr<CacheReservationManager> cache_res_mgr,
593
+ bool detect_filter_construct_corruption, Logger* info_log)
594
+ : XXPH3FilterBitsBuilder(aggregate_rounding_balance, cache_res_mgr,
595
+ detect_filter_construct_corruption),
596
+ desired_one_in_fp_rate_(desired_one_in_fp_rate),
597
+ info_log_(info_log),
598
+ bloom_fallback_(bloom_millibits_per_key, aggregate_rounding_balance,
599
+ cache_res_mgr, detect_filter_construct_corruption) {
600
+ assert(desired_one_in_fp_rate >= 1.0);
601
+ }
602
+
603
+ // No Copy allowed
604
+ Standard128RibbonBitsBuilder(const Standard128RibbonBitsBuilder&) = delete;
605
+ void operator=(const Standard128RibbonBitsBuilder&) = delete;
606
+
607
+ ~Standard128RibbonBitsBuilder() override {}
608
+
609
+ using FilterBitsBuilder::Finish;
610
+
611
+ virtual Slice Finish(std::unique_ptr<const char[]>* buf) override {
612
+ return Finish(buf, nullptr);
613
+ }
614
+
615
+ virtual Slice Finish(std::unique_ptr<const char[]>* buf,
616
+ Status* status) override {
617
+ if (hash_entries_info_.entries.size() > kMaxRibbonEntries) {
618
+ ROCKS_LOG_WARN(
619
+ info_log_, "Too many keys for Ribbon filter: %llu",
620
+ static_cast<unsigned long long>(hash_entries_info_.entries.size()));
621
+ SwapEntriesWith(&bloom_fallback_);
622
+ assert(hash_entries_info_.entries.empty());
623
+ return bloom_fallback_.Finish(buf, status);
624
+ }
625
+ if (hash_entries_info_.entries.size() == 0) {
626
+ // Save a conditional in Ribbon queries by using alternate reader
627
+ // for zero entries added.
628
+ if (status) {
629
+ *status = Status::OK();
630
+ }
631
+ return FinishAlwaysFalse(buf);
632
+ }
633
+ uint32_t num_entries =
634
+ static_cast<uint32_t>(hash_entries_info_.entries.size());
635
+ uint32_t num_slots;
636
+ size_t len_with_metadata;
637
+
638
+ CalculateSpaceAndSlots(num_entries, &len_with_metadata, &num_slots);
639
+
640
+ // Bloom fall-back indicator
641
+ if (num_slots == 0) {
642
+ SwapEntriesWith(&bloom_fallback_);
643
+ assert(hash_entries_info_.entries.empty());
644
+ return bloom_fallback_.Finish(buf, status);
645
+ }
646
+
647
+ uint32_t entropy = 0;
648
+ if (!hash_entries_info_.entries.empty()) {
649
+ entropy = Lower32of64(hash_entries_info_.entries.front());
650
+ }
651
+
652
+ BandingType banding;
653
+ std::size_t bytes_banding = ribbon::StandardBanding<
654
+ Standard128RibbonTypesAndSettings>::EstimateMemoryUsage(num_slots);
655
+ Status status_banding_cache_res = Status::OK();
656
+
657
+ // Cache charging for banding
658
+ std::unique_ptr<CacheReservationManager::CacheReservationHandle>
659
+ banding_res_handle;
660
+ if (cache_res_mgr_) {
661
+ status_banding_cache_res = cache_res_mgr_->MakeCacheReservation(
662
+ bytes_banding, &banding_res_handle);
663
+ }
664
+
665
+ if (status_banding_cache_res.IsMemoryLimit()) {
666
+ ROCKS_LOG_WARN(info_log_,
667
+ "Cache charging for Ribbon filter banding failed due "
668
+ "to cache full");
669
+ SwapEntriesWith(&bloom_fallback_);
670
+ assert(hash_entries_info_.entries.empty());
671
+ // Release cache for banding since the banding won't be allocated
672
+ banding_res_handle.reset();
673
+ return bloom_fallback_.Finish(buf, status);
674
+ }
675
+
676
+ TEST_SYNC_POINT_CALLBACK(
677
+ "XXPH3FilterBitsBuilder::Finish::"
678
+ "TamperHashEntries",
679
+ &hash_entries_info_.entries);
680
+
681
+ bool success = banding.ResetAndFindSeedToSolve(
682
+ num_slots, hash_entries_info_.entries.begin(),
683
+ hash_entries_info_.entries.end(),
684
+ /*starting seed*/ entropy & 255, /*seed mask*/ 255);
685
+ if (!success) {
686
+ ROCKS_LOG_WARN(
687
+ info_log_, "Too many re-seeds (256) for Ribbon filter, %llu / %llu",
688
+ static_cast<unsigned long long>(hash_entries_info_.entries.size()),
689
+ static_cast<unsigned long long>(num_slots));
690
+ SwapEntriesWith(&bloom_fallback_);
691
+ assert(hash_entries_info_.entries.empty());
692
+ return bloom_fallback_.Finish(buf, status);
693
+ }
694
+
695
+ Status verify_hash_entries_checksum_status =
696
+ MaybeVerifyHashEntriesChecksum();
697
+ if (!verify_hash_entries_checksum_status.ok()) {
698
+ ROCKS_LOG_WARN(info_log_, "Verify hash entries checksum error: %s",
699
+ verify_hash_entries_checksum_status.getState());
700
+ if (status) {
701
+ *status = verify_hash_entries_checksum_status;
702
+ }
703
+ return FinishAlwaysTrue(buf);
704
+ }
705
+
706
+ bool keep_entries_for_postverify = detect_filter_construct_corruption_;
707
+ if (!keep_entries_for_postverify) {
708
+ ResetEntries();
709
+ }
710
+
711
+ uint32_t seed = banding.GetOrdinalSeed();
712
+ assert(seed < 256);
713
+
714
+ std::unique_ptr<char[]> mutable_buf;
715
+ std::unique_ptr<CacheReservationManager::CacheReservationHandle>
716
+ final_filter_cache_res_handle;
717
+ len_with_metadata =
718
+ AllocateMaybeRounding(len_with_metadata, num_entries, &mutable_buf);
719
+ // Cache charging for mutable_buf
720
+ if (cache_res_mgr_) {
721
+ Status s = cache_res_mgr_->MakeCacheReservation(
722
+ len_with_metadata * sizeof(char), &final_filter_cache_res_handle);
723
+ s.PermitUncheckedError();
724
+ }
725
+
726
+ SolnType soln(mutable_buf.get(), len_with_metadata);
727
+ soln.BackSubstFrom(banding);
728
+ uint32_t num_blocks = soln.GetNumBlocks();
729
+ // This should be guaranteed:
730
+ // num_entries < 2^30
731
+ // => (overhead_factor < 2.0)
732
+ // num_entries * overhead_factor == num_slots < 2^31
733
+ // => (num_blocks = num_slots / 128)
734
+ // num_blocks < 2^24
735
+ assert(num_blocks < 0x1000000U);
736
+
737
+ // See BloomFilterPolicy::GetBloomBitsReader re: metadata
738
+ // -2 = Marker for Standard128 Ribbon
739
+ mutable_buf[len_with_metadata - 5] = static_cast<char>(-2);
740
+ // Hash seed
741
+ mutable_buf[len_with_metadata - 4] = static_cast<char>(seed);
742
+ // Number of blocks, in 24 bits
743
+ // (Along with bytes, we can derive other settings)
744
+ mutable_buf[len_with_metadata - 3] = static_cast<char>(num_blocks & 255);
745
+ mutable_buf[len_with_metadata - 2] =
746
+ static_cast<char>((num_blocks >> 8) & 255);
747
+ mutable_buf[len_with_metadata - 1] =
748
+ static_cast<char>((num_blocks >> 16) & 255);
749
+
750
+ auto TEST_arg_pair __attribute__((__unused__)) =
751
+ std::make_pair(&mutable_buf, len_with_metadata);
752
+ TEST_SYNC_POINT_CALLBACK("XXPH3FilterBitsBuilder::Finish::TamperFilter",
753
+ &TEST_arg_pair);
754
+
755
+ Slice rv(mutable_buf.get(), len_with_metadata);
756
+ *buf = std::move(mutable_buf);
757
+ final_filter_cache_res_handles_.push_back(
758
+ std::move(final_filter_cache_res_handle));
759
+ if (status) {
760
+ *status = Status::OK();
761
+ }
762
+ return rv;
763
+ }
764
+
765
+ // Setting num_slots to 0 means "fall back on Bloom filter."
766
+ // And note this implementation does not support num_entries or num_slots
767
+ // beyond uint32_t; see kMaxRibbonEntries.
768
+ void CalculateSpaceAndSlots(size_t num_entries,
769
+ size_t* target_len_with_metadata,
770
+ uint32_t* num_slots) {
771
+ if (num_entries > kMaxRibbonEntries) {
772
+ // More entries than supported by this Ribbon
773
+ *num_slots = 0; // use Bloom
774
+ *target_len_with_metadata = bloom_fallback_.CalculateSpace(num_entries);
775
+ return;
776
+ }
777
+ uint32_t entropy = 0;
778
+ if (!hash_entries_info_.entries.empty()) {
779
+ entropy = Upper32of64(hash_entries_info_.entries.front());
780
+ }
781
+
782
+ *num_slots = NumEntriesToNumSlots(static_cast<uint32_t>(num_entries));
783
+ *target_len_with_metadata =
784
+ SolnType::GetBytesForOneInFpRate(*num_slots, desired_one_in_fp_rate_,
785
+ /*rounding*/ entropy) +
786
+ kMetadataLen;
787
+
788
+ // Consider possible Bloom fallback for small filters
789
+ if (*num_slots < 1024) {
790
+ size_t bloom = bloom_fallback_.CalculateSpace(num_entries);
791
+ if (bloom < *target_len_with_metadata) {
792
+ *num_slots = 0; // use Bloom
793
+ *target_len_with_metadata = bloom;
794
+ return;
795
+ }
796
+ }
797
+ }
798
+
799
+ size_t CalculateSpace(size_t num_entries) override {
800
+ if (num_entries == 0) {
801
+ // See FinishAlwaysFalse
802
+ return 0;
803
+ }
804
+ size_t target_len_with_metadata;
805
+ uint32_t num_slots;
806
+ CalculateSpaceAndSlots(num_entries, &target_len_with_metadata, &num_slots);
807
+ (void)num_slots;
808
+ return target_len_with_metadata;
809
+ }
810
+
811
+ // This is a somewhat ugly but reasonably fast and reasonably accurate
812
+ // reversal of CalculateSpace.
813
+ size_t ApproximateNumEntries(size_t bytes) override {
814
+ size_t len_no_metadata =
815
+ RoundDownUsableSpace(std::max(bytes, size_t{kMetadataLen})) -
816
+ kMetadataLen;
817
+
818
+ if (!(desired_one_in_fp_rate_ > 1.0)) {
819
+ // Effectively asking for 100% FP rate, or NaN etc.
820
+ // Note that NaN is neither < 1.0 nor > 1.0
821
+ return kMaxRibbonEntries;
822
+ }
823
+
824
+ // Find a slight under-estimate for actual average bits per slot
825
+ double min_real_bits_per_slot;
826
+ if (desired_one_in_fp_rate_ >= 1.0 + std::numeric_limits<uint32_t>::max()) {
827
+ // Max of 32 solution columns (result bits)
828
+ min_real_bits_per_slot = 32.0;
829
+ } else {
830
+ // Account for mix of b and b+1 solution columns being slightly
831
+ // suboptimal vs. ideal log2(1/fp_rate) bits.
832
+ uint32_t rounded = static_cast<uint32_t>(desired_one_in_fp_rate_);
833
+ int upper_bits_per_key = 1 + FloorLog2(rounded);
834
+ double fp_rate_for_upper = std::pow(2.0, -upper_bits_per_key);
835
+ double portion_lower =
836
+ (1.0 / desired_one_in_fp_rate_ - fp_rate_for_upper) /
837
+ fp_rate_for_upper;
838
+ min_real_bits_per_slot = upper_bits_per_key - portion_lower;
839
+ assert(min_real_bits_per_slot > 0.0);
840
+ assert(min_real_bits_per_slot <= 32.0);
841
+ }
842
+
843
+ // An overestimate, but this should only be O(1) slots away from truth.
844
+ double max_slots = len_no_metadata * 8.0 / min_real_bits_per_slot;
845
+
846
+ // Let's not bother accounting for overflow to Bloom filter
847
+ // (Includes NaN case)
848
+ if (!(max_slots < ConfigHelper::GetNumSlots(kMaxRibbonEntries))) {
849
+ return kMaxRibbonEntries;
850
+ }
851
+
852
+ // Set up for short iteration
853
+ uint32_t slots = static_cast<uint32_t>(max_slots);
854
+ slots = SolnType::RoundUpNumSlots(slots);
855
+
856
+ // Assert that we have a valid upper bound on slots
857
+ assert(SolnType::GetBytesForOneInFpRate(
858
+ SolnType::RoundUpNumSlots(slots + 1), desired_one_in_fp_rate_,
859
+ /*rounding*/ 0) > len_no_metadata);
860
+
861
+ // Iterate up to a few times to rather precisely account for small effects
862
+ for (int i = 0; slots > 0; ++i) {
863
+ size_t reqd_bytes =
864
+ SolnType::GetBytesForOneInFpRate(slots, desired_one_in_fp_rate_,
865
+ /*rounding*/ 0);
866
+ if (reqd_bytes <= len_no_metadata) {
867
+ break; // done
868
+ }
869
+ if (i >= 2) {
870
+ // should have been enough iterations
871
+ assert(false);
872
+ break;
873
+ }
874
+ slots = SolnType::RoundDownNumSlots(slots - 1);
875
+ }
876
+
877
+ uint32_t num_entries = ConfigHelper::GetNumToAdd(slots);
878
+
879
+ // Consider possible Bloom fallback for small filters
880
+ if (slots < 1024) {
881
+ size_t bloom = bloom_fallback_.ApproximateNumEntries(bytes);
882
+ if (bloom > num_entries) {
883
+ return bloom;
884
+ } else {
885
+ return num_entries;
886
+ }
887
+ } else {
888
+ return std::min(num_entries, kMaxRibbonEntries);
889
+ }
890
+ }
891
+
892
+ double EstimatedFpRate(size_t num_entries,
893
+ size_t len_with_metadata) override {
894
+ if (num_entries > kMaxRibbonEntries) {
895
+ // More entries than supported by this Ribbon
896
+ return bloom_fallback_.EstimatedFpRate(num_entries, len_with_metadata);
897
+ }
898
+ uint32_t num_slots =
899
+ NumEntriesToNumSlots(static_cast<uint32_t>(num_entries));
900
+ SolnType fake_soln(nullptr, len_with_metadata);
901
+ fake_soln.ConfigureForNumSlots(num_slots);
902
+ return fake_soln.ExpectedFpRate();
903
+ }
904
+
905
+ Status MaybePostVerify(const Slice& filter_content) override {
906
+ bool fall_back = (bloom_fallback_.EstimateEntriesAdded() > 0);
907
+ return fall_back ? bloom_fallback_.MaybePostVerify(filter_content)
908
+ : XXPH3FilterBitsBuilder::MaybePostVerify(filter_content);
909
+ }
910
+
911
+ protected:
912
+ size_t RoundDownUsableSpace(size_t available_size) override {
913
+ size_t rv = available_size - kMetadataLen;
914
+
915
+ // round down to multiple of 16 (segment size)
916
+ rv &= ~size_t{15};
917
+
918
+ return rv + kMetadataLen;
919
+ }
920
+
921
+ private:
922
+ using TS = Standard128RibbonTypesAndSettings;
923
+ using SolnType = ribbon::SerializableInterleavedSolution<TS>;
924
+ using BandingType = ribbon::StandardBanding<TS>;
925
+ using ConfigHelper = ribbon::BandingConfigHelper1TS<ribbon::kOneIn20, TS>;
926
+
927
+ static uint32_t NumEntriesToNumSlots(uint32_t num_entries) {
928
+ uint32_t num_slots1 = ConfigHelper::GetNumSlots(num_entries);
929
+ return SolnType::RoundUpNumSlots(num_slots1);
930
+ }
931
+
932
+ // Approximate num_entries to ensure number of bytes fits in 32 bits, which
933
+ // is not an inherent limitation but does ensure somewhat graceful Bloom
934
+ // fallback for crazy high number of entries, since the Bloom implementation
935
+ // does not support number of bytes bigger than fits in 32 bits. This is
936
+ // within an order of magnitude of implementation limit on num_slots
937
+ // fitting in 32 bits, and even closer for num_blocks fitting in 24 bits
938
+ // (for filter metadata).
939
+ static constexpr uint32_t kMaxRibbonEntries = 950000000; // ~ 1 billion
940
+
941
+ // A desired value for 1/fp_rate. For example, 100 -> 1% fp rate.
942
+ double desired_one_in_fp_rate_;
943
+
944
+ // For warnings, or can be nullptr
945
+ Logger* info_log_;
946
+
947
+ // For falling back on Bloom filter in some exceptional cases and
948
+ // very small filter cases
949
+ FastLocalBloomBitsBuilder bloom_fallback_;
950
+ };
951
+
952
+ // for the linker, at least with DEBUG_LEVEL=2
953
+ constexpr uint32_t Standard128RibbonBitsBuilder::kMaxRibbonEntries;
954
+
955
+ class Standard128RibbonBitsReader : public BuiltinFilterBitsReader {
956
+ public:
957
+ Standard128RibbonBitsReader(const char* data, size_t len_bytes,
958
+ uint32_t num_blocks, uint32_t seed)
959
+ : soln_(const_cast<char*>(data), len_bytes) {
960
+ soln_.ConfigureForNumBlocks(num_blocks);
961
+ hasher_.SetOrdinalSeed(seed);
962
+ }
963
+
964
+ // No Copy allowed
965
+ Standard128RibbonBitsReader(const Standard128RibbonBitsReader&) = delete;
966
+ void operator=(const Standard128RibbonBitsReader&) = delete;
967
+
968
+ ~Standard128RibbonBitsReader() override {}
969
+
970
+ bool MayMatch(const Slice& key) override {
971
+ uint64_t h = GetSliceHash64(key);
972
+ return soln_.FilterQuery(h, hasher_);
973
+ }
974
+
975
+ virtual void MayMatch(int num_keys, Slice** keys, bool* may_match) override {
976
+ struct SavedData {
977
+ uint64_t seeded_hash;
978
+ uint32_t segment_num;
979
+ uint32_t num_columns;
980
+ uint32_t start_bits;
981
+ };
982
+ std::array<SavedData, MultiGetContext::MAX_BATCH_SIZE> saved;
983
+ for (int i = 0; i < num_keys; ++i) {
984
+ ribbon::InterleavedPrepareQuery(
985
+ GetSliceHash64(*keys[i]), hasher_, soln_, &saved[i].seeded_hash,
986
+ &saved[i].segment_num, &saved[i].num_columns, &saved[i].start_bits);
987
+ }
988
+ for (int i = 0; i < num_keys; ++i) {
989
+ may_match[i] = ribbon::InterleavedFilterQuery(
990
+ saved[i].seeded_hash, saved[i].segment_num, saved[i].num_columns,
991
+ saved[i].start_bits, hasher_, soln_);
992
+ }
993
+ }
994
+
995
+ bool HashMayMatch(const uint64_t h) override {
996
+ return soln_.FilterQuery(h, hasher_);
997
+ }
998
+
999
+ private:
1000
+ using TS = Standard128RibbonTypesAndSettings;
1001
+ ribbon::SerializableInterleavedSolution<TS> soln_;
1002
+ ribbon::StandardHasher<TS> hasher_;
1003
+ };
1004
+
1005
+ // ##################### Legacy Bloom implementation ################### //
1006
+
1007
+ using LegacyBloomImpl = LegacyLocalityBloomImpl</*ExtraRotates*/ false>;
1008
+
1009
+ class LegacyBloomBitsBuilder : public BuiltinFilterBitsBuilder {
1010
+ public:
1011
+ explicit LegacyBloomBitsBuilder(const int bits_per_key, Logger* info_log);
1012
+
1013
+ // No Copy allowed
1014
+ LegacyBloomBitsBuilder(const LegacyBloomBitsBuilder&) = delete;
1015
+ void operator=(const LegacyBloomBitsBuilder&) = delete;
1016
+
1017
+ ~LegacyBloomBitsBuilder() override;
1018
+
1019
+ void AddKey(const Slice& key) override;
1020
+
1021
+ virtual size_t EstimateEntriesAdded() override {
1022
+ return hash_entries_.size();
1023
+ }
1024
+
1025
+ using FilterBitsBuilder::Finish;
1026
+
1027
+ Slice Finish(std::unique_ptr<const char[]>* buf) override;
1028
+
1029
+ size_t CalculateSpace(size_t num_entries) override {
1030
+ uint32_t dont_care1;
1031
+ uint32_t dont_care2;
1032
+ return CalculateSpace(num_entries, &dont_care1, &dont_care2);
1033
+ }
1034
+
1035
+ double EstimatedFpRate(size_t keys, size_t bytes) override {
1036
+ return LegacyBloomImpl::EstimatedFpRate(keys, bytes - kMetadataLen,
1037
+ num_probes_);
1038
+ }
1039
+
1040
+ size_t ApproximateNumEntries(size_t bytes) override;
1041
+
1042
+ private:
1043
+ int bits_per_key_;
1044
+ int num_probes_;
1045
+ std::vector<uint32_t> hash_entries_;
1046
+ Logger* info_log_;
1047
+
1048
+ // Get totalbits that optimized for cpu cache line
1049
+ uint32_t GetTotalBitsForLocality(uint32_t total_bits);
1050
+
1051
+ // Reserve space for new filter
1052
+ char* ReserveSpace(size_t num_entries, uint32_t* total_bits,
1053
+ uint32_t* num_lines);
1054
+
1055
+ // Implementation-specific variant of public CalculateSpace
1056
+ uint32_t CalculateSpace(size_t num_entries, uint32_t* total_bits,
1057
+ uint32_t* num_lines);
1058
+
1059
+ // Assuming single threaded access to this function.
1060
+ void AddHash(uint32_t h, char* data, uint32_t num_lines, uint32_t total_bits);
1061
+ };
1062
+
1063
+ LegacyBloomBitsBuilder::LegacyBloomBitsBuilder(const int bits_per_key,
1064
+ Logger* info_log)
1065
+ : bits_per_key_(bits_per_key),
1066
+ num_probes_(LegacyNoLocalityBloomImpl::ChooseNumProbes(bits_per_key_)),
1067
+ info_log_(info_log) {
1068
+ assert(bits_per_key_);
1069
+ }
1070
+
1071
+ LegacyBloomBitsBuilder::~LegacyBloomBitsBuilder() {}
1072
+
1073
+ void LegacyBloomBitsBuilder::AddKey(const Slice& key) {
1074
+ uint32_t hash = BloomHash(key);
1075
+ if (hash_entries_.size() == 0 || hash != hash_entries_.back()) {
1076
+ hash_entries_.push_back(hash);
1077
+ }
1078
+ }
1079
+
1080
+ Slice LegacyBloomBitsBuilder::Finish(std::unique_ptr<const char[]>* buf) {
1081
+ uint32_t total_bits, num_lines;
1082
+ size_t num_entries = hash_entries_.size();
1083
+ char* data =
1084
+ ReserveSpace(static_cast<int>(num_entries), &total_bits, &num_lines);
1085
+ assert(data);
1086
+
1087
+ if (total_bits != 0 && num_lines != 0) {
1088
+ for (auto h : hash_entries_) {
1089
+ AddHash(h, data, num_lines, total_bits);
1090
+ }
1091
+
1092
+ // Check for excessive entries for 32-bit hash function
1093
+ if (num_entries >= /* minimum of 3 million */ 3000000U) {
1094
+ // More specifically, we can detect that the 32-bit hash function
1095
+ // is causing significant increase in FP rate by comparing current
1096
+ // estimated FP rate to what we would get with a normal number of
1097
+ // keys at same memory ratio.
1098
+ double est_fp_rate = LegacyBloomImpl::EstimatedFpRate(
1099
+ num_entries, total_bits / 8, num_probes_);
1100
+ double vs_fp_rate = LegacyBloomImpl::EstimatedFpRate(
1101
+ 1U << 16, (1U << 16) * bits_per_key_ / 8, num_probes_);
1102
+
1103
+ if (est_fp_rate >= 1.50 * vs_fp_rate) {
1104
+ // For more details, see
1105
+ // https://github.com/facebook/rocksdb/wiki/RocksDB-Bloom-Filter
1106
+ ROCKS_LOG_WARN(
1107
+ info_log_,
1108
+ "Using legacy SST/BBT Bloom filter with excessive key count "
1109
+ "(%.1fM @ %dbpk), causing estimated %.1fx higher filter FP rate. "
1110
+ "Consider using new Bloom with format_version>=5, smaller SST "
1111
+ "file size, or partitioned filters.",
1112
+ num_entries / 1000000.0, bits_per_key_, est_fp_rate / vs_fp_rate);
1113
+ }
1114
+ }
1115
+ }
1116
+ // See BloomFilterPolicy::GetFilterBitsReader for metadata
1117
+ data[total_bits / 8] = static_cast<char>(num_probes_);
1118
+ EncodeFixed32(data + total_bits / 8 + 1, static_cast<uint32_t>(num_lines));
1119
+
1120
+ const char* const_data = data;
1121
+ buf->reset(const_data);
1122
+ hash_entries_.clear();
1123
+
1124
+ return Slice(data, total_bits / 8 + kMetadataLen);
1125
+ }
1126
+
1127
+ size_t LegacyBloomBitsBuilder::ApproximateNumEntries(size_t bytes) {
1128
+ assert(bits_per_key_);
1129
+ assert(bytes > 0);
1130
+
1131
+ uint64_t total_bits_tmp = bytes * 8;
1132
+ // total bits, including temporary computations, cannot exceed 2^32
1133
+ // for compatibility
1134
+ total_bits_tmp = std::min(total_bits_tmp, uint64_t{0xffff0000});
1135
+
1136
+ uint32_t high = static_cast<uint32_t>(total_bits_tmp) /
1137
+ static_cast<uint32_t>(bits_per_key_) +
1138
+ 1;
1139
+ uint32_t low = 1;
1140
+ uint32_t n = high;
1141
+ for (; n >= low; n--) {
1142
+ if (CalculateSpace(n) <= bytes) {
1143
+ break;
1144
+ }
1145
+ }
1146
+ return n;
1147
+ }
1148
+
1149
+ uint32_t LegacyBloomBitsBuilder::GetTotalBitsForLocality(uint32_t total_bits) {
1150
+ uint32_t num_lines =
1151
+ (total_bits + CACHE_LINE_SIZE * 8 - 1) / (CACHE_LINE_SIZE * 8);
1152
+
1153
+ // Make num_lines an odd number to make sure more bits are involved
1154
+ // when determining which block.
1155
+ if (num_lines % 2 == 0) {
1156
+ num_lines++;
1157
+ }
1158
+ return num_lines * (CACHE_LINE_SIZE * 8);
1159
+ }
1160
+
1161
+ uint32_t LegacyBloomBitsBuilder::CalculateSpace(size_t num_entries,
1162
+ uint32_t* total_bits,
1163
+ uint32_t* num_lines) {
1164
+ assert(bits_per_key_);
1165
+ if (num_entries != 0) {
1166
+ size_t total_bits_tmp = num_entries * bits_per_key_;
1167
+ // total bits, including temporary computations, cannot exceed 2^32
1168
+ // for compatibility
1169
+ total_bits_tmp = std::min(total_bits_tmp, size_t{0xffff0000});
1170
+
1171
+ *total_bits =
1172
+ GetTotalBitsForLocality(static_cast<uint32_t>(total_bits_tmp));
1173
+ *num_lines = *total_bits / (CACHE_LINE_SIZE * 8);
1174
+ assert(*total_bits > 0 && *total_bits % 8 == 0);
1175
+ } else {
1176
+ // filter is empty, just leave space for metadata
1177
+ *total_bits = 0;
1178
+ *num_lines = 0;
1179
+ }
1180
+
1181
+ // Reserve space for Filter
1182
+ uint32_t sz = *total_bits / 8;
1183
+ sz += kMetadataLen; // 4 bytes for num_lines, 1 byte for num_probes
1184
+ return sz;
1185
+ }
1186
+
1187
+ char* LegacyBloomBitsBuilder::ReserveSpace(size_t num_entries,
1188
+ uint32_t* total_bits,
1189
+ uint32_t* num_lines) {
1190
+ uint32_t sz = CalculateSpace(num_entries, total_bits, num_lines);
1191
+ char* data = new char[sz];
1192
+ memset(data, 0, sz);
1193
+ return data;
1194
+ }
1195
+
1196
+ inline void LegacyBloomBitsBuilder::AddHash(uint32_t h, char* data,
1197
+ uint32_t num_lines,
1198
+ uint32_t total_bits) {
1199
+ #ifdef NDEBUG
1200
+ static_cast<void>(total_bits);
1201
+ #endif
1202
+ assert(num_lines > 0 && total_bits > 0);
1203
+
1204
+ LegacyBloomImpl::AddHash(h, num_lines, num_probes_, data,
1205
+ ConstexprFloorLog2(CACHE_LINE_SIZE));
1206
+ }
1207
+
1208
+ class LegacyBloomBitsReader : public BuiltinFilterBitsReader {
1209
+ public:
1210
+ LegacyBloomBitsReader(const char* data, int num_probes, uint32_t num_lines,
1211
+ uint32_t log2_cache_line_size)
1212
+ : data_(data),
1213
+ num_probes_(num_probes),
1214
+ num_lines_(num_lines),
1215
+ log2_cache_line_size_(log2_cache_line_size) {}
1216
+
1217
+ // No Copy allowed
1218
+ LegacyBloomBitsReader(const LegacyBloomBitsReader&) = delete;
1219
+ void operator=(const LegacyBloomBitsReader&) = delete;
1220
+
1221
+ ~LegacyBloomBitsReader() override {}
1222
+
1223
+ // "contents" contains the data built by a preceding call to
1224
+ // FilterBitsBuilder::Finish. MayMatch must return true if the key was
1225
+ // passed to FilterBitsBuilder::AddKey. This method may return true or false
1226
+ // if the key was not on the list, but it should aim to return false with a
1227
+ // high probability.
1228
+ bool MayMatch(const Slice& key) override {
1229
+ uint32_t hash = BloomHash(key);
1230
+ uint32_t byte_offset;
1231
+ LegacyBloomImpl::PrepareHashMayMatch(
1232
+ hash, num_lines_, data_, /*out*/ &byte_offset, log2_cache_line_size_);
1233
+ return LegacyBloomImpl::HashMayMatchPrepared(
1234
+ hash, num_probes_, data_ + byte_offset, log2_cache_line_size_);
1235
+ }
1236
+
1237
+ virtual void MayMatch(int num_keys, Slice** keys, bool* may_match) override {
1238
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> hashes;
1239
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> byte_offsets;
1240
+ for (int i = 0; i < num_keys; ++i) {
1241
+ hashes[i] = BloomHash(*keys[i]);
1242
+ LegacyBloomImpl::PrepareHashMayMatch(hashes[i], num_lines_, data_,
1243
+ /*out*/ &byte_offsets[i],
1244
+ log2_cache_line_size_);
1245
+ }
1246
+ for (int i = 0; i < num_keys; ++i) {
1247
+ may_match[i] = LegacyBloomImpl::HashMayMatchPrepared(
1248
+ hashes[i], num_probes_, data_ + byte_offsets[i],
1249
+ log2_cache_line_size_);
1250
+ }
1251
+ }
1252
+
1253
+ bool HashMayMatch(const uint64_t /* h */) override { return false; }
1254
+
1255
+ private:
1256
+ const char* data_;
1257
+ const int num_probes_;
1258
+ const uint32_t num_lines_;
1259
+ const uint32_t log2_cache_line_size_;
1260
+ };
1261
+
1262
+ class AlwaysTrueFilter : public BuiltinFilterBitsReader {
1263
+ public:
1264
+ bool MayMatch(const Slice&) override { return true; }
1265
+ using FilterBitsReader::MayMatch; // inherit overload
1266
+ bool HashMayMatch(const uint64_t) override { return true; }
1267
+ using BuiltinFilterBitsReader::HashMayMatch; // inherit overload
1268
+ };
1269
+
1270
+ class AlwaysFalseFilter : public BuiltinFilterBitsReader {
1271
+ public:
1272
+ bool MayMatch(const Slice&) override { return false; }
1273
+ using FilterBitsReader::MayMatch; // inherit overload
1274
+ bool HashMayMatch(const uint64_t) override { return false; }
1275
+ using BuiltinFilterBitsReader::HashMayMatch; // inherit overload
1276
+ };
1277
+
1278
+ Status XXPH3FilterBitsBuilder::MaybePostVerify(const Slice& filter_content) {
1279
+ Status s = Status::OK();
1280
+
1281
+ if (!detect_filter_construct_corruption_) {
1282
+ return s;
1283
+ }
1284
+
1285
+ std::unique_ptr<BuiltinFilterBitsReader> bits_reader(
1286
+ BuiltinFilterPolicy::GetBuiltinFilterBitsReader(filter_content));
1287
+
1288
+ for (uint64_t h : hash_entries_info_.entries) {
1289
+ // The current approach will not detect corruption from XXPH3Filter to
1290
+ // AlwaysTrueFilter, which can lead to performance cost later due to
1291
+ // AlwaysTrueFilter not filtering anything. But this cost is acceptable
1292
+ // given the extra implementation complixity to detect such case.
1293
+ bool may_match = bits_reader->HashMayMatch(h);
1294
+ if (!may_match) {
1295
+ s = Status::Corruption("Corrupted filter content");
1296
+ break;
1297
+ }
1298
+ }
1299
+
1300
+ ResetEntries();
1301
+ return s;
1302
+ }
1303
+ } // namespace
1304
+
1305
+ const char* BuiltinFilterPolicy::kClassName() {
1306
+ return "rocksdb.internal.BuiltinFilter";
1307
+ }
1308
+
1309
+ bool BuiltinFilterPolicy::IsInstanceOf(const std::string& name) const {
1310
+ if (name == kClassName()) {
1311
+ return true;
1312
+ } else {
1313
+ return FilterPolicy::IsInstanceOf(name);
1314
+ }
1315
+ }
1316
+
1317
+ static const char* kBuiltinFilterMetadataName = "rocksdb.BuiltinBloomFilter";
1318
+
1319
+ const char* BuiltinFilterPolicy::kCompatibilityName() {
1320
+ return kBuiltinFilterMetadataName;
1321
+ }
1322
+
1323
+ const char* BuiltinFilterPolicy::CompatibilityName() const {
1324
+ return kBuiltinFilterMetadataName;
1325
+ }
1326
+
1327
+ BloomLikeFilterPolicy::BloomLikeFilterPolicy(double bits_per_key)
1328
+ : warned_(false), aggregate_rounding_balance_(0) {
1329
+ // Sanitize bits_per_key
1330
+ if (bits_per_key < 0.5) {
1331
+ // Round down to no filter
1332
+ bits_per_key = 0;
1333
+ } else if (bits_per_key < 1.0) {
1334
+ // Minimum 1 bit per key (equiv) when creating filter
1335
+ bits_per_key = 1.0;
1336
+ } else if (!(bits_per_key < 100.0)) { // including NaN
1337
+ bits_per_key = 100.0;
1338
+ }
1339
+
1340
+ // Includes a nudge toward rounding up, to ensure on all platforms
1341
+ // that doubles specified with three decimal digits after the decimal
1342
+ // point are interpreted accurately.
1343
+ millibits_per_key_ = static_cast<int>(bits_per_key * 1000.0 + 0.500001);
1344
+
1345
+ // For now configure Ribbon filter to match Bloom FP rate and save
1346
+ // memory. (Ribbon bits per key will be ~30% less than Bloom bits per key
1347
+ // for same FP rate.)
1348
+ desired_one_in_fp_rate_ =
1349
+ 1.0 / BloomMath::CacheLocalFpRate(
1350
+ bits_per_key,
1351
+ FastLocalBloomImpl::ChooseNumProbes(millibits_per_key_),
1352
+ /*cache_line_bits*/ 512);
1353
+
1354
+ // For better or worse, this is a rounding up of a nudged rounding up,
1355
+ // e.g. 7.4999999999999 will round up to 8, but that provides more
1356
+ // predictability against small arithmetic errors in floating point.
1357
+ whole_bits_per_key_ = (millibits_per_key_ + 500) / 1000;
1358
+ }
1359
+
1360
+ BloomLikeFilterPolicy::~BloomLikeFilterPolicy() {}
1361
+ const char* BloomLikeFilterPolicy::kClassName() {
1362
+ return "rocksdb.internal.BloomLikeFilter";
1363
+ }
1364
+
1365
+ bool BloomLikeFilterPolicy::IsInstanceOf(const std::string& name) const {
1366
+ if (name == kClassName()) {
1367
+ return true;
1368
+ } else {
1369
+ return BuiltinFilterPolicy::IsInstanceOf(name);
1370
+ }
1371
+ }
1372
+
1373
+ const char* ReadOnlyBuiltinFilterPolicy::kClassName() {
1374
+ return kBuiltinFilterMetadataName;
1375
+ }
1376
+
1377
+ std::string BloomLikeFilterPolicy::GetId() const {
1378
+ return Name() + GetBitsPerKeySuffix();
1379
+ }
1380
+
1381
+ BloomFilterPolicy::BloomFilterPolicy(double bits_per_key)
1382
+ : BloomLikeFilterPolicy(bits_per_key) {}
1383
+
1384
+ FilterBitsBuilder* BloomFilterPolicy::GetBuilderWithContext(
1385
+ const FilterBuildingContext& context) const {
1386
+ if (GetMillibitsPerKey() == 0) {
1387
+ // "No filter" special case
1388
+ return nullptr;
1389
+ } else if (context.table_options.format_version < 5) {
1390
+ return GetLegacyBloomBuilderWithContext(context);
1391
+ } else {
1392
+ return GetFastLocalBloomBuilderWithContext(context);
1393
+ }
1394
+ }
1395
+
1396
+ const char* BloomFilterPolicy::kClassName() { return "bloomfilter"; }
1397
+ const char* BloomFilterPolicy::kNickName() { return "rocksdb.BloomFilter"; }
1398
+
1399
+ std::string BloomFilterPolicy::GetId() const {
1400
+ // Including ":false" for better forward-compatibility with 6.29 and earlier
1401
+ // which required a boolean `use_block_based_builder` parameter
1402
+ return BloomLikeFilterPolicy::GetId() + ":false";
1403
+ }
1404
+
1405
+ FilterBitsBuilder* BloomLikeFilterPolicy::GetFastLocalBloomBuilderWithContext(
1406
+ const FilterBuildingContext& context) const {
1407
+ bool offm = context.table_options.optimize_filters_for_memory;
1408
+ const auto options_overrides_iter =
1409
+ context.table_options.cache_usage_options.options_overrides.find(
1410
+ CacheEntryRole::kFilterConstruction);
1411
+ const auto filter_construction_charged =
1412
+ options_overrides_iter !=
1413
+ context.table_options.cache_usage_options.options_overrides.end()
1414
+ ? options_overrides_iter->second.charged
1415
+ : context.table_options.cache_usage_options.options.charged;
1416
+
1417
+ std::shared_ptr<CacheReservationManager> cache_res_mgr;
1418
+ if (context.table_options.block_cache &&
1419
+ filter_construction_charged ==
1420
+ CacheEntryRoleOptions::Decision::kEnabled) {
1421
+ cache_res_mgr = std::make_shared<
1422
+ CacheReservationManagerImpl<CacheEntryRole::kFilterConstruction>>(
1423
+ context.table_options.block_cache);
1424
+ }
1425
+ return new FastLocalBloomBitsBuilder(
1426
+ millibits_per_key_, offm ? &aggregate_rounding_balance_ : nullptr,
1427
+ cache_res_mgr, context.table_options.detect_filter_construct_corruption);
1428
+ }
1429
+
1430
+ FilterBitsBuilder* BloomLikeFilterPolicy::GetLegacyBloomBuilderWithContext(
1431
+ const FilterBuildingContext& context) const {
1432
+ if (whole_bits_per_key_ >= 14 && context.info_log &&
1433
+ !warned_.load(std::memory_order_relaxed)) {
1434
+ warned_ = true;
1435
+ const char* adjective;
1436
+ if (whole_bits_per_key_ >= 20) {
1437
+ adjective = "Dramatic";
1438
+ } else {
1439
+ adjective = "Significant";
1440
+ }
1441
+ // For more details, see
1442
+ // https://github.com/facebook/rocksdb/wiki/RocksDB-Bloom-Filter
1443
+ ROCKS_LOG_WARN(context.info_log,
1444
+ "Using legacy Bloom filter with high (%d) bits/key. "
1445
+ "%s filter space and/or accuracy improvement is available "
1446
+ "with format_version>=5.",
1447
+ whole_bits_per_key_, adjective);
1448
+ }
1449
+ return new LegacyBloomBitsBuilder(whole_bits_per_key_, context.info_log);
1450
+ }
1451
+
1452
+ FilterBitsBuilder*
1453
+ BloomLikeFilterPolicy::GetStandard128RibbonBuilderWithContext(
1454
+ const FilterBuildingContext& context) const {
1455
+ // FIXME: code duplication with GetFastLocalBloomBuilderWithContext
1456
+ bool offm = context.table_options.optimize_filters_for_memory;
1457
+ const auto options_overrides_iter =
1458
+ context.table_options.cache_usage_options.options_overrides.find(
1459
+ CacheEntryRole::kFilterConstruction);
1460
+ const auto filter_construction_charged =
1461
+ options_overrides_iter !=
1462
+ context.table_options.cache_usage_options.options_overrides.end()
1463
+ ? options_overrides_iter->second.charged
1464
+ : context.table_options.cache_usage_options.options.charged;
1465
+
1466
+ std::shared_ptr<CacheReservationManager> cache_res_mgr;
1467
+ if (context.table_options.block_cache &&
1468
+ filter_construction_charged ==
1469
+ CacheEntryRoleOptions::Decision::kEnabled) {
1470
+ cache_res_mgr = std::make_shared<
1471
+ CacheReservationManagerImpl<CacheEntryRole::kFilterConstruction>>(
1472
+ context.table_options.block_cache);
1473
+ }
1474
+ return new Standard128RibbonBitsBuilder(
1475
+ desired_one_in_fp_rate_, millibits_per_key_,
1476
+ offm ? &aggregate_rounding_balance_ : nullptr, cache_res_mgr,
1477
+ context.table_options.detect_filter_construct_corruption,
1478
+ context.info_log);
1479
+ }
1480
+
1481
+ std::string BloomLikeFilterPolicy::GetBitsPerKeySuffix() const {
1482
+ std::string rv = ":" + std::to_string(millibits_per_key_ / 1000);
1483
+ int frac = millibits_per_key_ % 1000;
1484
+ if (frac > 0) {
1485
+ rv.push_back('.');
1486
+ rv.push_back(static_cast<char>('0' + (frac / 100)));
1487
+ frac %= 100;
1488
+ if (frac > 0) {
1489
+ rv.push_back(static_cast<char>('0' + (frac / 10)));
1490
+ frac %= 10;
1491
+ if (frac > 0) {
1492
+ rv.push_back(static_cast<char>('0' + frac));
1493
+ }
1494
+ }
1495
+ }
1496
+ return rv;
1497
+ }
1498
+
1499
+ FilterBitsBuilder* BuiltinFilterPolicy::GetBuilderFromContext(
1500
+ const FilterBuildingContext& context) {
1501
+ if (context.table_options.filter_policy) {
1502
+ return context.table_options.filter_policy->GetBuilderWithContext(context);
1503
+ } else {
1504
+ return nullptr;
1505
+ }
1506
+ }
1507
+
1508
+ // For testing only, but always constructable with internal names
1509
+ namespace test {
1510
+
1511
+ const char* LegacyBloomFilterPolicy::kClassName() {
1512
+ return "rocksdb.internal.LegacyBloomFilter";
1513
+ }
1514
+
1515
+ FilterBitsBuilder* LegacyBloomFilterPolicy::GetBuilderWithContext(
1516
+ const FilterBuildingContext& context) const {
1517
+ if (GetMillibitsPerKey() == 0) {
1518
+ // "No filter" special case
1519
+ return nullptr;
1520
+ }
1521
+ return GetLegacyBloomBuilderWithContext(context);
1522
+ }
1523
+
1524
+ const char* FastLocalBloomFilterPolicy::kClassName() {
1525
+ return "rocksdb.internal.FastLocalBloomFilter";
1526
+ }
1527
+
1528
+ FilterBitsBuilder* FastLocalBloomFilterPolicy::GetBuilderWithContext(
1529
+ const FilterBuildingContext& context) const {
1530
+ if (GetMillibitsPerKey() == 0) {
1531
+ // "No filter" special case
1532
+ return nullptr;
1533
+ }
1534
+ return GetFastLocalBloomBuilderWithContext(context);
1535
+ }
1536
+
1537
+ const char* Standard128RibbonFilterPolicy::kClassName() {
1538
+ return "rocksdb.internal.Standard128RibbonFilter";
1539
+ }
1540
+
1541
+ FilterBitsBuilder* Standard128RibbonFilterPolicy::GetBuilderWithContext(
1542
+ const FilterBuildingContext& context) const {
1543
+ if (GetMillibitsPerKey() == 0) {
1544
+ // "No filter" special case
1545
+ return nullptr;
1546
+ }
1547
+ return GetStandard128RibbonBuilderWithContext(context);
1548
+ }
1549
+
1550
+ } // namespace test
1551
+
1552
+ BuiltinFilterBitsReader* BuiltinFilterPolicy::GetBuiltinFilterBitsReader(
1553
+ const Slice& contents) {
1554
+ uint32_t len_with_meta = static_cast<uint32_t>(contents.size());
1555
+ if (len_with_meta <= kMetadataLen) {
1556
+ // filter is empty or broken. Treat like zero keys added.
1557
+ return new AlwaysFalseFilter();
1558
+ }
1559
+
1560
+ // Legacy Bloom filter data:
1561
+ // 0 +-----------------------------------+
1562
+ // | Raw Bloom filter data |
1563
+ // | ... |
1564
+ // len +-----------------------------------+
1565
+ // | byte for num_probes or |
1566
+ // | marker for new implementations |
1567
+ // len+1 +-----------------------------------+
1568
+ // | four bytes for number of cache |
1569
+ // | lines |
1570
+ // len_with_meta +-----------------------------------+
1571
+
1572
+ int8_t raw_num_probes =
1573
+ static_cast<int8_t>(contents.data()[len_with_meta - kMetadataLen]);
1574
+ // NB: *num_probes > 30 and < 128 probably have not been used, because of
1575
+ // BloomFilterPolicy::initialize, unless directly calling
1576
+ // LegacyBloomBitsBuilder as an API, but we are leaving those cases in
1577
+ // limbo with LegacyBloomBitsReader for now.
1578
+
1579
+ if (raw_num_probes < 1) {
1580
+ // Note: < 0 (or unsigned > 127) indicate special new implementations
1581
+ // (or reserved for future use)
1582
+ switch (raw_num_probes) {
1583
+ case 0:
1584
+ // Treat as zero probes (always FP)
1585
+ return new AlwaysTrueFilter();
1586
+ case -1:
1587
+ // Marker for newer Bloom implementations
1588
+ return GetBloomBitsReader(contents);
1589
+ case -2:
1590
+ // Marker for Ribbon implementations
1591
+ return GetRibbonBitsReader(contents);
1592
+ default:
1593
+ // Reserved (treat as zero probes, always FP, for now)
1594
+ return new AlwaysTrueFilter();
1595
+ }
1596
+ }
1597
+ // else attempt decode for LegacyBloomBitsReader
1598
+
1599
+ int num_probes = raw_num_probes;
1600
+ assert(num_probes >= 1);
1601
+ assert(num_probes <= 127);
1602
+
1603
+ uint32_t len = len_with_meta - kMetadataLen;
1604
+ assert(len > 0);
1605
+
1606
+ uint32_t num_lines = DecodeFixed32(contents.data() + len_with_meta - 4);
1607
+ uint32_t log2_cache_line_size;
1608
+
1609
+ if (num_lines * CACHE_LINE_SIZE == len) {
1610
+ // Common case
1611
+ log2_cache_line_size = ConstexprFloorLog2(CACHE_LINE_SIZE);
1612
+ } else if (num_lines == 0 || len % num_lines != 0) {
1613
+ // Invalid (no solution to num_lines * x == len)
1614
+ // Treat as zero probes (always FP) for now.
1615
+ return new AlwaysTrueFilter();
1616
+ } else {
1617
+ // Determine the non-native cache line size (from another system)
1618
+ log2_cache_line_size = 0;
1619
+ while ((num_lines << log2_cache_line_size) < len) {
1620
+ ++log2_cache_line_size;
1621
+ }
1622
+ if ((num_lines << log2_cache_line_size) != len) {
1623
+ // Invalid (block size not a power of two)
1624
+ // Treat as zero probes (always FP) for now.
1625
+ return new AlwaysTrueFilter();
1626
+ }
1627
+ }
1628
+ // if not early return
1629
+ return new LegacyBloomBitsReader(contents.data(), num_probes, num_lines,
1630
+ log2_cache_line_size);
1631
+ }
1632
+
1633
+ // Read metadata to determine what kind of FilterBitsReader is needed
1634
+ // and return a new one.
1635
+ FilterBitsReader* BuiltinFilterPolicy::GetFilterBitsReader(
1636
+ const Slice& contents) const {
1637
+ return BuiltinFilterPolicy::GetBuiltinFilterBitsReader(contents);
1638
+ }
1639
+
1640
+ BuiltinFilterBitsReader* BuiltinFilterPolicy::GetRibbonBitsReader(
1641
+ const Slice& contents) {
1642
+ uint32_t len_with_meta = static_cast<uint32_t>(contents.size());
1643
+ uint32_t len = len_with_meta - kMetadataLen;
1644
+
1645
+ assert(len > 0); // precondition
1646
+
1647
+ uint32_t seed = static_cast<uint8_t>(contents.data()[len + 1]);
1648
+ uint32_t num_blocks = static_cast<uint8_t>(contents.data()[len + 2]);
1649
+ num_blocks |= static_cast<uint8_t>(contents.data()[len + 3]) << 8;
1650
+ num_blocks |= static_cast<uint8_t>(contents.data()[len + 4]) << 16;
1651
+ if (num_blocks < 2) {
1652
+ // Not supported
1653
+ // num_blocks == 1 is not used because num_starts == 1 is problematic
1654
+ // for the hashing scheme. num_blocks == 0 is unused because there's
1655
+ // already a concise encoding of an "always false" filter.
1656
+ // Return something safe:
1657
+ return new AlwaysTrueFilter();
1658
+ }
1659
+ return new Standard128RibbonBitsReader(contents.data(), len, num_blocks,
1660
+ seed);
1661
+ }
1662
+
1663
+ // For newer Bloom filter implementations
1664
+ BuiltinFilterBitsReader* BuiltinFilterPolicy::GetBloomBitsReader(
1665
+ const Slice& contents) {
1666
+ uint32_t len_with_meta = static_cast<uint32_t>(contents.size());
1667
+ uint32_t len = len_with_meta - kMetadataLen;
1668
+
1669
+ assert(len > 0); // precondition
1670
+
1671
+ // New Bloom filter data:
1672
+ // 0 +-----------------------------------+
1673
+ // | Raw Bloom filter data |
1674
+ // | ... |
1675
+ // len +-----------------------------------+
1676
+ // | char{-1} byte -> new Bloom filter |
1677
+ // len+1 +-----------------------------------+
1678
+ // | byte for subimplementation |
1679
+ // | 0: FastLocalBloom |
1680
+ // | other: reserved |
1681
+ // len+2 +-----------------------------------+
1682
+ // | byte for block_and_probes |
1683
+ // | 0 in top 3 bits -> 6 -> 64-byte |
1684
+ // | reserved: |
1685
+ // | 1 in top 3 bits -> 7 -> 128-byte|
1686
+ // | 2 in top 3 bits -> 8 -> 256-byte|
1687
+ // | ... |
1688
+ // | num_probes in bottom 5 bits, |
1689
+ // | except 0 and 31 reserved |
1690
+ // len+3 +-----------------------------------+
1691
+ // | two bytes reserved |
1692
+ // | possibly for hash seed |
1693
+ // len_with_meta +-----------------------------------+
1694
+
1695
+ // Read more metadata (see above)
1696
+ char sub_impl_val = contents.data()[len_with_meta - 4];
1697
+ char block_and_probes = contents.data()[len_with_meta - 3];
1698
+ int log2_block_bytes = ((block_and_probes >> 5) & 7) + 6;
1699
+
1700
+ int num_probes = (block_and_probes & 31);
1701
+ if (num_probes < 1 || num_probes > 30) {
1702
+ // Reserved / future safe
1703
+ return new AlwaysTrueFilter();
1704
+ }
1705
+
1706
+ uint16_t rest = DecodeFixed16(contents.data() + len_with_meta - 2);
1707
+ if (rest != 0) {
1708
+ // Reserved, possibly for hash seed
1709
+ // Future safe
1710
+ return new AlwaysTrueFilter();
1711
+ }
1712
+
1713
+ if (sub_impl_val == 0) { // FastLocalBloom
1714
+ if (log2_block_bytes == 6) { // Only block size supported for now
1715
+ return new FastLocalBloomBitsReader(contents.data(), num_probes, len);
1716
+ }
1717
+ }
1718
+ // otherwise
1719
+ // Reserved / future safe
1720
+ return new AlwaysTrueFilter();
1721
+ }
1722
+
1723
+ const FilterPolicy* NewBloomFilterPolicy(double bits_per_key,
1724
+ bool /*use_block_based_builder*/) {
1725
+ // NOTE: use_block_based_builder now ignored so block-based filter is no
1726
+ // longer accessible in public API.
1727
+ return new BloomFilterPolicy(bits_per_key);
1728
+ }
1729
+
1730
+ RibbonFilterPolicy::RibbonFilterPolicy(double bloom_equivalent_bits_per_key,
1731
+ int bloom_before_level)
1732
+ : BloomLikeFilterPolicy(bloom_equivalent_bits_per_key),
1733
+ bloom_before_level_(bloom_before_level) {}
1734
+
1735
+ FilterBitsBuilder* RibbonFilterPolicy::GetBuilderWithContext(
1736
+ const FilterBuildingContext& context) const {
1737
+ if (GetMillibitsPerKey() == 0) {
1738
+ // "No filter" special case
1739
+ return nullptr;
1740
+ }
1741
+ // Treat unknown same as bottommost
1742
+ int levelish = INT_MAX;
1743
+
1744
+ switch (context.compaction_style) {
1745
+ case kCompactionStyleLevel:
1746
+ case kCompactionStyleUniversal: {
1747
+ if (context.reason == TableFileCreationReason::kFlush) {
1748
+ // Treat flush as level -1
1749
+ assert(context.level_at_creation == 0);
1750
+ levelish = -1;
1751
+ } else if (context.level_at_creation == -1) {
1752
+ // Unknown level
1753
+ assert(levelish == INT_MAX);
1754
+ } else {
1755
+ levelish = context.level_at_creation;
1756
+ }
1757
+ break;
1758
+ }
1759
+ case kCompactionStyleFIFO:
1760
+ case kCompactionStyleNone:
1761
+ // Treat as bottommost
1762
+ assert(levelish == INT_MAX);
1763
+ break;
1764
+ }
1765
+ if (levelish < bloom_before_level_) {
1766
+ return GetFastLocalBloomBuilderWithContext(context);
1767
+ } else {
1768
+ return GetStandard128RibbonBuilderWithContext(context);
1769
+ }
1770
+ }
1771
+
1772
+ const char* RibbonFilterPolicy::kClassName() { return "ribbonfilter"; }
1773
+ const char* RibbonFilterPolicy::kNickName() { return "rocksdb.RibbonFilter"; }
1774
+
1775
+ std::string RibbonFilterPolicy::GetId() const {
1776
+ return BloomLikeFilterPolicy::GetId() + ":" +
1777
+ std::to_string(bloom_before_level_);
1778
+ }
1779
+
1780
+ const FilterPolicy* NewRibbonFilterPolicy(double bloom_equivalent_bits_per_key,
1781
+ int bloom_before_level) {
1782
+ return new RibbonFilterPolicy(bloom_equivalent_bits_per_key,
1783
+ bloom_before_level);
1784
+ }
1785
+
1786
+ FilterBuildingContext::FilterBuildingContext(
1787
+ const BlockBasedTableOptions& _table_options)
1788
+ : table_options(_table_options) {}
1789
+
1790
+ FilterPolicy::~FilterPolicy() {}
1791
+
1792
+ std::shared_ptr<const FilterPolicy> BloomLikeFilterPolicy::Create(
1793
+ const std::string& name, double bits_per_key) {
1794
+ if (name == test::LegacyBloomFilterPolicy::kClassName()) {
1795
+ return std::make_shared<test::LegacyBloomFilterPolicy>(bits_per_key);
1796
+ } else if (name == test::FastLocalBloomFilterPolicy::kClassName()) {
1797
+ return std::make_shared<test::FastLocalBloomFilterPolicy>(bits_per_key);
1798
+ } else if (name == test::Standard128RibbonFilterPolicy::kClassName()) {
1799
+ return std::make_shared<test::Standard128RibbonFilterPolicy>(bits_per_key);
1800
+ } else if (name == BloomFilterPolicy::kClassName()) {
1801
+ // For testing
1802
+ return std::make_shared<BloomFilterPolicy>(bits_per_key);
1803
+ } else if (name == RibbonFilterPolicy::kClassName()) {
1804
+ // For testing
1805
+ return std::make_shared<RibbonFilterPolicy>(bits_per_key,
1806
+ /*bloom_before_level*/ 0);
1807
+ } else {
1808
+ return nullptr;
1809
+ }
1810
+ }
1811
+
1812
+ namespace {
1813
+ static ObjectLibrary::PatternEntry FilterPatternEntryWithBits(
1814
+ const char* name) {
1815
+ return ObjectLibrary::PatternEntry(name, false).AddNumber(":", false);
1816
+ }
1817
+
1818
+ template <typename T>
1819
+ T* NewBuiltinFilterPolicyWithBits(const std::string& uri) {
1820
+ const std::vector<std::string> vals = StringSplit(uri, ':');
1821
+ double bits_per_key = ParseDouble(vals[1]);
1822
+ return new T(bits_per_key);
1823
+ }
1824
+ static int RegisterBuiltinFilterPolicies(ObjectLibrary& library,
1825
+ const std::string& /*arg*/) {
1826
+ library.AddFactory<const FilterPolicy>(
1827
+ ReadOnlyBuiltinFilterPolicy::kClassName(),
1828
+ [](const std::string& /*uri*/, std::unique_ptr<const FilterPolicy>* guard,
1829
+ std::string* /* errmsg */) {
1830
+ guard->reset(new ReadOnlyBuiltinFilterPolicy());
1831
+ return guard->get();
1832
+ });
1833
+
1834
+ library.AddFactory<const FilterPolicy>(
1835
+ FilterPatternEntryWithBits(BloomFilterPolicy::kClassName())
1836
+ .AnotherName(BloomFilterPolicy::kNickName()),
1837
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1838
+ std::string* /* errmsg */) {
1839
+ guard->reset(NewBuiltinFilterPolicyWithBits<BloomFilterPolicy>(uri));
1840
+ return guard->get();
1841
+ });
1842
+ library.AddFactory<const FilterPolicy>(
1843
+ FilterPatternEntryWithBits(BloomFilterPolicy::kClassName())
1844
+ .AnotherName(BloomFilterPolicy::kNickName())
1845
+ .AddSuffix(":false"),
1846
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1847
+ std::string* /* errmsg */) {
1848
+ guard->reset(NewBuiltinFilterPolicyWithBits<BloomFilterPolicy>(uri));
1849
+ return guard->get();
1850
+ });
1851
+ library.AddFactory<const FilterPolicy>(
1852
+ FilterPatternEntryWithBits(BloomFilterPolicy::kClassName())
1853
+ .AnotherName(BloomFilterPolicy::kNickName())
1854
+ .AddSuffix(":true"),
1855
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1856
+ std::string* /* errmsg */) {
1857
+ const std::vector<std::string> vals = StringSplit(uri, ':');
1858
+ double bits_per_key = ParseDouble(vals[1]);
1859
+ // NOTE: This case previously configured the deprecated block-based
1860
+ // filter, but old ways of configuring that now map to full filter. We
1861
+ // defer to the corresponding API to ensure consistency in case that
1862
+ // change is reverted.
1863
+ guard->reset(NewBloomFilterPolicy(bits_per_key, true));
1864
+ return guard->get();
1865
+ });
1866
+ library.AddFactory<const FilterPolicy>(
1867
+ FilterPatternEntryWithBits(RibbonFilterPolicy::kClassName())
1868
+ .AnotherName(RibbonFilterPolicy::kNickName()),
1869
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1870
+ std::string* /* errmsg */) {
1871
+ const std::vector<std::string> vals = StringSplit(uri, ':');
1872
+ double bits_per_key = ParseDouble(vals[1]);
1873
+ guard->reset(NewRibbonFilterPolicy(bits_per_key));
1874
+ return guard->get();
1875
+ });
1876
+ library.AddFactory<const FilterPolicy>(
1877
+ FilterPatternEntryWithBits(RibbonFilterPolicy::kClassName())
1878
+ .AnotherName(RibbonFilterPolicy::kNickName())
1879
+ .AddNumber(":", true),
1880
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1881
+ std::string* /* errmsg */) {
1882
+ const std::vector<std::string> vals = StringSplit(uri, ':');
1883
+ double bits_per_key = ParseDouble(vals[1]);
1884
+ int bloom_before_level = ParseInt(vals[2]);
1885
+ guard->reset(NewRibbonFilterPolicy(bits_per_key, bloom_before_level));
1886
+ return guard->get();
1887
+ });
1888
+ library.AddFactory<const FilterPolicy>(
1889
+ FilterPatternEntryWithBits(test::LegacyBloomFilterPolicy::kClassName()),
1890
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1891
+ std::string* /* errmsg */) {
1892
+ guard->reset(
1893
+ NewBuiltinFilterPolicyWithBits<test::LegacyBloomFilterPolicy>(uri));
1894
+ return guard->get();
1895
+ });
1896
+ library.AddFactory<const FilterPolicy>(
1897
+ FilterPatternEntryWithBits(
1898
+ test::FastLocalBloomFilterPolicy::kClassName()),
1899
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1900
+ std::string* /* errmsg */) {
1901
+ guard->reset(
1902
+ NewBuiltinFilterPolicyWithBits<test::FastLocalBloomFilterPolicy>(
1903
+ uri));
1904
+ return guard->get();
1905
+ });
1906
+ library.AddFactory<const FilterPolicy>(
1907
+ FilterPatternEntryWithBits(
1908
+ test::Standard128RibbonFilterPolicy::kClassName()),
1909
+ [](const std::string& uri, std::unique_ptr<const FilterPolicy>* guard,
1910
+ std::string* /* errmsg */) {
1911
+ guard->reset(
1912
+ NewBuiltinFilterPolicyWithBits<test::Standard128RibbonFilterPolicy>(
1913
+ uri));
1914
+ return guard->get();
1915
+ });
1916
+ size_t num_types;
1917
+ return static_cast<int>(library.GetFactoryCount(&num_types));
1918
+ }
1919
+ } // namespace
1920
+
1921
+ Status FilterPolicy::CreateFromString(
1922
+ const ConfigOptions& options, const std::string& value,
1923
+ std::shared_ptr<const FilterPolicy>* policy) {
1924
+ if (value == kNullptrString || value.empty()) {
1925
+ policy->reset();
1926
+ return Status::OK();
1927
+ } else if (value == ReadOnlyBuiltinFilterPolicy::kClassName()) {
1928
+ *policy = std::make_shared<ReadOnlyBuiltinFilterPolicy>();
1929
+ return Status::OK();
1930
+ }
1931
+
1932
+ std::string id;
1933
+ std::unordered_map<std::string, std::string> opt_map;
1934
+ Status status =
1935
+ Customizable::GetOptionsMap(options, policy->get(), value, &id, &opt_map);
1936
+ if (!status.ok()) { // GetOptionsMap failed
1937
+ return status;
1938
+ } else if (id.empty()) { // We have no Id but have options. Not good
1939
+ return Status::NotSupported("Cannot reset object ", id);
1940
+ } else {
1941
+ static std::once_flag loaded;
1942
+ std::call_once(loaded, [&]() {
1943
+ RegisterBuiltinFilterPolicies(*(ObjectLibrary::Default().get()), "");
1944
+ });
1945
+ status = options.registry->NewSharedObject(id, policy);
1946
+ }
1947
+ if (options.ignore_unsupported_options && status.IsNotSupported()) {
1948
+ return Status::OK();
1949
+ } else if (status.ok()) {
1950
+ status = Customizable::ConfigureNewObject(
1951
+ options, const_cast<FilterPolicy*>(policy->get()), opt_map);
1952
+ }
1953
+ return status;
1954
+ }
1955
+
1956
+ const std::vector<std::string>& BloomLikeFilterPolicy::GetAllFixedImpls() {
1957
+ STATIC_AVOID_DESTRUCTION(std::vector<std::string>, impls){
1958
+ // Match filter_bench -impl=x ordering
1959
+ test::LegacyBloomFilterPolicy::kClassName(),
1960
+ test::FastLocalBloomFilterPolicy::kClassName(),
1961
+ test::Standard128RibbonFilterPolicy::kClassName(),
1962
+ };
1963
+ return impls;
1964
+ }
1965
+
1966
+ } // namespace ROCKSDB_NAMESPACE