@nxtedition/rocksdb 1.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 (1088) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/LICENSE +21 -0
  3. package/README.md +102 -0
  4. package/UPGRADING.md +91 -0
  5. package/binding.cc +1276 -0
  6. package/binding.gyp +73 -0
  7. package/binding.js +1 -0
  8. package/chained-batch.js +44 -0
  9. package/deps/rocksdb/build_version.cc +4 -0
  10. package/deps/rocksdb/rocksdb/CMakeLists.txt +1356 -0
  11. package/deps/rocksdb/rocksdb/COPYING +339 -0
  12. package/deps/rocksdb/rocksdb/LICENSE.Apache +202 -0
  13. package/deps/rocksdb/rocksdb/LICENSE.leveldb +29 -0
  14. package/deps/rocksdb/rocksdb/Makefile +2521 -0
  15. package/deps/rocksdb/rocksdb/TARGETS +2100 -0
  16. package/deps/rocksdb/rocksdb/cache/cache.cc +63 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +381 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +114 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_test.cc +775 -0
  20. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +769 -0
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.h +16 -0
  22. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +574 -0
  23. package/deps/rocksdb/rocksdb/cache/lru_cache.h +339 -0
  24. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +199 -0
  25. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +162 -0
  26. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +111 -0
  27. package/deps/rocksdb/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  28. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  29. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  30. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  37. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +108 -0
  38. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +115 -0
  39. package/deps/rocksdb/rocksdb/db/blob/blob_constants.h +16 -0
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +154 -0
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.h +67 -0
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +206 -0
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +316 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +91 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +660 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +99 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +49 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +268 -0
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.h +57 -0
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +173 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +55 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +164 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +423 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +81 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +771 -0
  57. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +184 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.cc +145 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +148 -0
  60. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +132 -0
  61. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +76 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +168 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +83 -0
  64. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +307 -0
  65. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +464 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +358 -0
  67. package/deps/rocksdb/rocksdb/db/builder.h +95 -0
  68. package/deps/rocksdb/rocksdb/db/c.cc +5281 -0
  69. package/deps/rocksdb/rocksdb/db/c_test.c +2883 -0
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +1602 -0
  71. package/deps/rocksdb/rocksdb/db/column_family.h +787 -0
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +3427 -0
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +425 -0
  74. package/deps/rocksdb/rocksdb/db/compacted_db_impl.cc +169 -0
  75. package/deps/rocksdb/rocksdb/db/compacted_db_impl.h +118 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +591 -0
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +389 -0
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +37 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +1023 -0
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +353 -0
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1254 -0
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1917 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +208 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +1037 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +1224 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1135 -0
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +318 -0
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +255 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +57 -0
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +510 -0
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +2190 -0
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1103 -0
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +32 -0
  95. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +44 -0
  96. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +660 -0
  97. package/deps/rocksdb/rocksdb/db/convenience.cc +78 -0
  98. package/deps/rocksdb/rocksdb/db/corruption_test.cc +921 -0
  99. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +359 -0
  100. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3820 -0
  101. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1058 -0
  102. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2128 -0
  103. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +851 -0
  104. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +6292 -0
  105. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +509 -0
  106. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +130 -0
  107. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +137 -0
  108. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1119 -0
  109. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5057 -0
  110. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +2274 -0
  111. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3421 -0
  112. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +298 -0
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +151 -0
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +967 -0
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1806 -0
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +270 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +146 -0
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +683 -0
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +333 -0
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2024 -0
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_secondary_test.cc +932 -0
  122. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +137 -0
  123. package/deps/rocksdb/rocksdb/db/db_info_dumper.h +15 -0
  124. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +178 -0
  125. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +592 -0
  126. package/deps/rocksdb/rocksdb/db/db_iter.cc +1493 -0
  127. package/deps/rocksdb/rocksdb/db/db_iter.h +390 -0
  128. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +657 -0
  129. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +3268 -0
  130. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +3197 -0
  131. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +299 -0
  132. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +513 -0
  133. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +329 -0
  134. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +241 -0
  135. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +671 -0
  136. package/deps/rocksdb/rocksdb/db/db_options_test.cc +1022 -0
  137. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1723 -0
  138. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1694 -0
  139. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1261 -0
  140. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +164 -0
  141. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +488 -0
  142. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +567 -0
  143. package/deps/rocksdb/rocksdb/db/db_test.cc +6736 -0
  144. package/deps/rocksdb/rocksdb/db/db_test2.cc +5408 -0
  145. package/deps/rocksdb/rocksdb/db/db_test_util.cc +1633 -0
  146. package/deps/rocksdb/rocksdb/db/db_test_util.h +1194 -0
  147. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +2235 -0
  148. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +1780 -0
  149. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +2520 -0
  150. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +119 -0
  151. package/deps/rocksdb/rocksdb/db/db_write_test.cc +465 -0
  152. package/deps/rocksdb/rocksdb/db/dbformat.cc +222 -0
  153. package/deps/rocksdb/rocksdb/db/dbformat.h +786 -0
  154. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +206 -0
  155. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +580 -0
  156. package/deps/rocksdb/rocksdb/db/error_handler.cc +726 -0
  157. package/deps/rocksdb/rocksdb/db/error_handler.h +117 -0
  158. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +2598 -0
  159. package/deps/rocksdb/rocksdb/db/event_helpers.cc +233 -0
  160. package/deps/rocksdb/rocksdb/db/event_helpers.h +57 -0
  161. package/deps/rocksdb/rocksdb/db/experimental.cc +50 -0
  162. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1559 -0
  163. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +910 -0
  164. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +195 -0
  165. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +2936 -0
  166. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +556 -0
  167. package/deps/rocksdb/rocksdb/db/file_indexer.cc +216 -0
  168. package/deps/rocksdb/rocksdb/db/file_indexer.h +142 -0
  169. package/deps/rocksdb/rocksdb/db/file_indexer_test.cc +350 -0
  170. package/deps/rocksdb/rocksdb/db/filename_test.cc +179 -0
  171. package/deps/rocksdb/rocksdb/db/flush_job.cc +514 -0
  172. package/deps/rocksdb/rocksdb/db/flush_job.h +169 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +647 -0
  174. package/deps/rocksdb/rocksdb/db/flush_scheduler.cc +86 -0
  175. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +54 -0
  176. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1023 -0
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.h +163 -0
  178. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +377 -0
  179. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +282 -0
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +75 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +632 -0
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +1461 -0
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +712 -0
  184. package/deps/rocksdb/rocksdb/db/job_context.h +226 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +1118 -0
  186. package/deps/rocksdb/rocksdb/db/log_format.h +48 -0
  187. package/deps/rocksdb/rocksdb/db/log_reader.cc +654 -0
  188. package/deps/rocksdb/rocksdb/db/log_reader.h +192 -0
  189. package/deps/rocksdb/rocksdb/db/log_test.cc +901 -0
  190. package/deps/rocksdb/rocksdb/db/log_writer.cc +164 -0
  191. package/deps/rocksdb/rocksdb/db/log_writer.h +115 -0
  192. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  193. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +63 -0
  194. package/deps/rocksdb/rocksdb/db/lookup_key.h +66 -0
  195. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +54 -0
  196. package/deps/rocksdb/rocksdb/db/malloc_stats.h +24 -0
  197. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +296 -0
  198. package/deps/rocksdb/rocksdb/db/memtable.cc +1169 -0
  199. package/deps/rocksdb/rocksdb/db/memtable.h +554 -0
  200. package/deps/rocksdb/rocksdb/db/memtable_list.cc +888 -0
  201. package/deps/rocksdb/rocksdb/db/memtable_list.h +438 -0
  202. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +935 -0
  203. package/deps/rocksdb/rocksdb/db/merge_context.h +134 -0
  204. package/deps/rocksdb/rocksdb/db/merge_helper.cc +421 -0
  205. package/deps/rocksdb/rocksdb/db/merge_helper.h +197 -0
  206. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +290 -0
  207. package/deps/rocksdb/rocksdb/db/merge_operator.cc +86 -0
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +608 -0
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +338 -0
  210. package/deps/rocksdb/rocksdb/db/options_file_test.cc +119 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.cc +30 -0
  212. package/deps/rocksdb/rocksdb/db/output_validator.h +47 -0
  213. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +993 -0
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +113 -0
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +76 -0
  216. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +231 -0
  217. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +87 -0
  218. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1374 -0
  219. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +38 -0
  220. package/deps/rocksdb/rocksdb/db/prefix_test.cc +910 -0
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +489 -0
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +446 -0
  223. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +260 -0
  224. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +709 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +439 -0
  226. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +256 -0
  227. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +552 -0
  228. package/deps/rocksdb/rocksdb/db/read_callback.h +53 -0
  229. package/deps/rocksdb/rocksdb/db/repair.cc +722 -0
  230. package/deps/rocksdb/rocksdb/db/repair_test.cc +390 -0
  231. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +61 -0
  232. package/deps/rocksdb/rocksdb/db/snapshot_impl.cc +26 -0
  233. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +167 -0
  234. package/deps/rocksdb/rocksdb/db/table_cache.cc +704 -0
  235. package/deps/rocksdb/rocksdb/db/table_cache.h +233 -0
  236. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +75 -0
  237. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +107 -0
  238. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +517 -0
  239. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +318 -0
  240. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +128 -0
  241. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.cc +54 -0
  242. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.h +44 -0
  243. package/deps/rocksdb/rocksdb/db/version_builder.cc +1078 -0
  244. package/deps/rocksdb/rocksdb/db/version_builder.h +69 -0
  245. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1551 -0
  246. package/deps/rocksdb/rocksdb/db/version_edit.cc +955 -0
  247. package/deps/rocksdb/rocksdb/db/version_edit.h +609 -0
  248. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +699 -0
  249. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +252 -0
  250. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +597 -0
  251. package/deps/rocksdb/rocksdb/db/version_set.cc +6333 -0
  252. package/deps/rocksdb/rocksdb/db/version_set.h +1485 -0
  253. package/deps/rocksdb/rocksdb/db/version_set_test.cc +3035 -0
  254. package/deps/rocksdb/rocksdb/db/wal_edit.cc +204 -0
  255. package/deps/rocksdb/rocksdb/db/wal_edit.h +166 -0
  256. package/deps/rocksdb/rocksdb/db/wal_edit_test.cc +214 -0
  257. package/deps/rocksdb/rocksdb/db/wal_manager.cc +517 -0
  258. package/deps/rocksdb/rocksdb/db/wal_manager.h +119 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +340 -0
  260. package/deps/rocksdb/rocksdb/db/write_batch.cc +2174 -0
  261. package/deps/rocksdb/rocksdb/db/write_batch_base.cc +94 -0
  262. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +250 -0
  263. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +907 -0
  264. package/deps/rocksdb/rocksdb/db/write_callback.h +27 -0
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +457 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +128 -0
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +144 -0
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +135 -0
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +796 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +433 -0
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +14 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +341 -0
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +520 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +23 -0
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +337 -0
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +554 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +79 -0
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +173 -0
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +17 -0
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +38 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +763 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +222 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +27 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +428 -0
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +218 -0
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +64 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2430 -0
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +237 -0
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +343 -0
  290. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +800 -0
  291. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +920 -0
  292. package/deps/rocksdb/rocksdb/env/env.cc +733 -0
  293. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +352 -0
  294. package/deps/rocksdb/rocksdb/env/env_chroot.cc +346 -0
  295. package/deps/rocksdb/rocksdb/env/env_chroot.h +22 -0
  296. package/deps/rocksdb/rocksdb/env/env_encryption.cc +1148 -0
  297. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +137 -0
  298. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +648 -0
  299. package/deps/rocksdb/rocksdb/env/env_posix.cc +514 -0
  300. package/deps/rocksdb/rocksdb/env/env_test.cc +2230 -0
  301. package/deps/rocksdb/rocksdb/env/file_system.cc +132 -0
  302. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +448 -0
  303. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +415 -0
  304. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1086 -0
  305. package/deps/rocksdb/rocksdb/env/io_posix.cc +1499 -0
  306. package/deps/rocksdb/rocksdb/env/io_posix.h +402 -0
  307. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +140 -0
  308. package/deps/rocksdb/rocksdb/env/mock_env.cc +1066 -0
  309. package/deps/rocksdb/rocksdb/env/mock_env.h +41 -0
  310. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +85 -0
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +402 -0
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +150 -0
  313. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +717 -0
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +156 -0
  315. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +99 -0
  316. package/deps/rocksdb/rocksdb/file/file_util.cc +268 -0
  317. package/deps/rocksdb/rocksdb/file/file_util.h +96 -0
  318. package/deps/rocksdb/rocksdb/file/filename.cc +473 -0
  319. package/deps/rocksdb/rocksdb/file/filename.h +182 -0
  320. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +188 -0
  321. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +315 -0
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +142 -0
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +482 -0
  324. package/deps/rocksdb/rocksdb/file/read_write_util.cc +67 -0
  325. package/deps/rocksdb/rocksdb/file/read_write_util.h +34 -0
  326. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +169 -0
  327. package/deps/rocksdb/rocksdb/file/readahead_raf.h +29 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +237 -0
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +63 -0
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +552 -0
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +203 -0
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +523 -0
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +251 -0
  334. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +386 -0
  335. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +839 -0
  336. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +2218 -0
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +294 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +71 -0
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +214 -0
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +98 -0
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +137 -0
  342. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +40 -0
  343. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +46 -0
  344. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +359 -0
  345. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +499 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +138 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +1697 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/db_dump_tool.h +45 -0
  350. package/deps/rocksdb/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1671 -0
  352. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +405 -0
  353. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +29 -0
  354. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +129 -0
  355. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1472 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +238 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +61 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +269 -0
  359. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +56 -0
  360. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +128 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +43 -0
  362. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +556 -0
  363. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +77 -0
  364. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +385 -0
  365. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +257 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +155 -0
  367. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1702 -0
  368. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +237 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +35 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +73 -0
  371. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +139 -0
  372. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +10 -0
  373. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +269 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +103 -0
  375. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +48 -0
  376. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +19 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  378. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +47 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +145 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +135 -0
  381. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +592 -0
  382. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +69 -0
  383. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +608 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +711 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +280 -0
  386. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +188 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +58 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +48 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +121 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +74 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +86 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +535 -0
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +61 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +72 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +49 -0
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +175 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +180 -0
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +288 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +71 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +50 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +205 -0
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +100 -0
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +19 -0
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +876 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +128 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +94 -0
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +504 -0
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +95 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +626 -0
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +432 -0
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +92 -0
  417. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +34 -0
  418. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +279 -0
  419. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +16 -0
  420. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +102 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +377 -0
  422. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +127 -0
  423. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +106 -0
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +300 -0
  425. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +165 -0
  426. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +684 -0
  427. package/deps/rocksdb/rocksdb/logging/env_logger.h +165 -0
  428. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +162 -0
  429. package/deps/rocksdb/rocksdb/logging/event_logger.cc +70 -0
  430. package/deps/rocksdb/rocksdb/logging/event_logger.h +203 -0
  431. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +43 -0
  432. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +92 -0
  433. package/deps/rocksdb/rocksdb/logging/log_buffer.h +56 -0
  434. package/deps/rocksdb/rocksdb/logging/logging.h +68 -0
  435. package/deps/rocksdb/rocksdb/logging/posix_logger.h +185 -0
  436. package/deps/rocksdb/rocksdb/memory/allocator.h +57 -0
  437. package/deps/rocksdb/rocksdb/memory/arena.cc +233 -0
  438. package/deps/rocksdb/rocksdb/memory/arena.h +141 -0
  439. package/deps/rocksdb/rocksdb/memory/arena_test.cc +204 -0
  440. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +47 -0
  441. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +218 -0
  442. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +206 -0
  443. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +78 -0
  444. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +33 -0
  445. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +27 -0
  446. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +102 -0
  447. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +38 -0
  448. package/deps/rocksdb/rocksdb/memory/memory_usage.h +25 -0
  449. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +62 -0
  450. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +844 -0
  451. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +49 -0
  452. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +349 -0
  453. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +44 -0
  454. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +997 -0
  455. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +663 -0
  456. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +677 -0
  457. package/deps/rocksdb/rocksdb/memtable/skiplist.h +496 -0
  458. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +388 -0
  459. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +280 -0
  460. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +33 -0
  461. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +301 -0
  462. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -0
  463. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +203 -0
  464. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +23 -0
  465. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +287 -0
  466. package/deps/rocksdb/rocksdb/monitoring/histogram.h +149 -0
  467. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +231 -0
  468. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +200 -0
  469. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +84 -0
  470. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +49 -0
  471. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  472. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +71 -0
  473. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +98 -0
  474. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +62 -0
  475. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +60 -0
  476. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +29 -0
  477. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +566 -0
  478. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +97 -0
  479. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +28 -0
  480. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +18 -0
  481. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +79 -0
  482. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +169 -0
  483. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.h +83 -0
  484. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +431 -0
  485. package/deps/rocksdb/rocksdb/monitoring/statistics.h +138 -0
  486. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -0
  487. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +652 -0
  488. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +163 -0
  489. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +314 -0
  490. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +233 -0
  491. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  492. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +206 -0
  493. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +134 -0
  494. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +32 -0
  495. package/deps/rocksdb/rocksdb/options/cf_options.cc +1026 -0
  496. package/deps/rocksdb/rocksdb/options/cf_options.h +308 -0
  497. package/deps/rocksdb/rocksdb/options/configurable.cc +681 -0
  498. package/deps/rocksdb/rocksdb/options/configurable_helper.h +251 -0
  499. package/deps/rocksdb/rocksdb/options/configurable_test.cc +757 -0
  500. package/deps/rocksdb/rocksdb/options/configurable_test.h +127 -0
  501. package/deps/rocksdb/rocksdb/options/customizable.cc +77 -0
  502. package/deps/rocksdb/rocksdb/options/customizable_helper.h +216 -0
  503. package/deps/rocksdb/rocksdb/options/customizable_test.cc +625 -0
  504. package/deps/rocksdb/rocksdb/options/db_options.cc +835 -0
  505. package/deps/rocksdb/rocksdb/options/db_options.h +126 -0
  506. package/deps/rocksdb/rocksdb/options/options.cc +664 -0
  507. package/deps/rocksdb/rocksdb/options/options_helper.cc +1391 -0
  508. package/deps/rocksdb/rocksdb/options/options_helper.h +118 -0
  509. package/deps/rocksdb/rocksdb/options/options_parser.cc +721 -0
  510. package/deps/rocksdb/rocksdb/options/options_parser.h +151 -0
  511. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +583 -0
  512. package/deps/rocksdb/rocksdb/options/options_test.cc +3794 -0
  513. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +106 -0
  514. package/deps/rocksdb/rocksdb/port/lang.h +16 -0
  515. package/deps/rocksdb/rocksdb/port/likely.h +18 -0
  516. package/deps/rocksdb/rocksdb/port/malloc.h +17 -0
  517. package/deps/rocksdb/rocksdb/port/port.h +21 -0
  518. package/deps/rocksdb/rocksdb/port/port_dirent.h +44 -0
  519. package/deps/rocksdb/rocksdb/port/port_example.h +101 -0
  520. package/deps/rocksdb/rocksdb/port/port_posix.cc +266 -0
  521. package/deps/rocksdb/rocksdb/port/port_posix.h +223 -0
  522. package/deps/rocksdb/rocksdb/port/stack_trace.cc +179 -0
  523. package/deps/rocksdb/rocksdb/port/stack_trace.h +28 -0
  524. package/deps/rocksdb/rocksdb/port/sys_time.h +47 -0
  525. package/deps/rocksdb/rocksdb/port/util_logger.h +20 -0
  526. package/deps/rocksdb/rocksdb/port/win/env_default.cc +45 -0
  527. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1449 -0
  528. package/deps/rocksdb/rocksdb/port/win/env_win.h +294 -0
  529. package/deps/rocksdb/rocksdb/port/win/io_win.cc +1084 -0
  530. package/deps/rocksdb/rocksdb/port/win/io_win.h +494 -0
  531. package/deps/rocksdb/rocksdb/port/win/port_win.cc +283 -0
  532. package/deps/rocksdb/rocksdb/port/win/port_win.h +411 -0
  533. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +79 -0
  534. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +194 -0
  535. package/deps/rocksdb/rocksdb/port/win/win_logger.h +67 -0
  536. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +183 -0
  537. package/deps/rocksdb/rocksdb/port/win/win_thread.h +122 -0
  538. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +221 -0
  539. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +26 -0
  540. package/deps/rocksdb/rocksdb/port/xpress.h +17 -0
  541. package/deps/rocksdb/rocksdb/src.mk +631 -0
  542. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +126 -0
  543. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +57 -0
  544. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  545. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/block.cc +1049 -0
  547. package/deps/rocksdb/rocksdb/table/block_based/block.h +720 -0
  548. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +348 -0
  549. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +119 -0
  550. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +434 -0
  551. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1835 -0
  552. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +193 -0
  553. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +839 -0
  554. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +95 -0
  555. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +383 -0
  556. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +251 -0
  557. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3563 -0
  558. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +681 -0
  559. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +190 -0
  560. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +347 -0
  561. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +201 -0
  562. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +78 -0
  563. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +66 -0
  564. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +32 -0
  565. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +232 -0
  566. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +66 -0
  567. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +623 -0
  568. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  569. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +220 -0
  570. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +59 -0
  571. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +25 -0
  572. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +93 -0
  573. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +136 -0
  574. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +717 -0
  575. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +180 -0
  576. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +102 -0
  577. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +55 -0
  578. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1407 -0
  579. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +168 -0
  580. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +88 -0
  581. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +41 -0
  582. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +344 -0
  583. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +139 -0
  584. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +333 -0
  585. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  586. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.h +49 -0
  587. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +248 -0
  588. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +444 -0
  589. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +54 -0
  590. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +85 -0
  591. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +56 -0
  592. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +22 -0
  593. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +40 -0
  594. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +521 -0
  595. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +144 -0
  596. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +424 -0
  597. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  598. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +142 -0
  599. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +186 -0
  600. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +51 -0
  601. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +64 -0
  602. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +38 -0
  603. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +120 -0
  604. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +59 -0
  605. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +324 -0
  606. package/deps/rocksdb/rocksdb/table/block_fetcher.h +129 -0
  607. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +534 -0
  608. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +277 -0
  609. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +543 -0
  610. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  611. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +663 -0
  612. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +107 -0
  613. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +81 -0
  614. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +404 -0
  615. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +101 -0
  616. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +585 -0
  617. package/deps/rocksdb/rocksdb/table/format.cc +422 -0
  618. package/deps/rocksdb/rocksdb/table/format.h +348 -0
  619. package/deps/rocksdb/rocksdb/table/get_context.cc +408 -0
  620. package/deps/rocksdb/rocksdb/table/get_context.h +212 -0
  621. package/deps/rocksdb/rocksdb/table/internal_iterator.h +205 -0
  622. package/deps/rocksdb/rocksdb/table/iter_heap.h +42 -0
  623. package/deps/rocksdb/rocksdb/table/iterator.cc +210 -0
  624. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +180 -0
  625. package/deps/rocksdb/rocksdb/table/merger_test.cc +180 -0
  626. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +481 -0
  627. package/deps/rocksdb/rocksdb/table/merging_iterator.h +64 -0
  628. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +541 -0
  629. package/deps/rocksdb/rocksdb/table/meta_blocks.h +154 -0
  630. package/deps/rocksdb/rocksdb/table/mock_table.cc +328 -0
  631. package/deps/rocksdb/rocksdb/table/mock_table.h +89 -0
  632. package/deps/rocksdb/rocksdb/table/multiget_context.h +282 -0
  633. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +116 -0
  634. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +44 -0
  635. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +34 -0
  636. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  637. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +135 -0
  638. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +332 -0
  639. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +153 -0
  640. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +263 -0
  641. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +182 -0
  642. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +211 -0
  643. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +249 -0
  644. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +506 -0
  645. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +201 -0
  646. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +781 -0
  647. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +247 -0
  648. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +61 -0
  649. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +502 -0
  650. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +96 -0
  651. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +98 -0
  652. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +228 -0
  653. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +340 -0
  654. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +94 -0
  655. package/deps/rocksdb/rocksdb/table/table_builder.h +203 -0
  656. package/deps/rocksdb/rocksdb/table/table_factory.cc +38 -0
  657. package/deps/rocksdb/rocksdb/table/table_properties.cc +300 -0
  658. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +30 -0
  659. package/deps/rocksdb/rocksdb/table/table_reader.h +147 -0
  660. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +347 -0
  661. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +39 -0
  662. package/deps/rocksdb/rocksdb/table/table_test.cc +4769 -0
  663. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +215 -0
  664. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +43 -0
  665. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +38 -0
  666. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +74 -0
  667. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +93 -0
  668. package/deps/rocksdb/rocksdb/test_util/sync_point.h +161 -0
  669. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +129 -0
  670. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +74 -0
  671. package/deps/rocksdb/rocksdb/test_util/testharness.cc +56 -0
  672. package/deps/rocksdb/rocksdb/test_util/testharness.h +53 -0
  673. package/deps/rocksdb/rocksdb/test_util/testutil.cc +566 -0
  674. package/deps/rocksdb/rocksdb/test_util/testutil.h +887 -0
  675. package/deps/rocksdb/rocksdb/test_util/testutil_test.cc +43 -0
  676. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +388 -0
  677. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +132 -0
  678. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +27 -0
  679. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +45 -0
  680. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +166 -0
  681. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +570 -0
  682. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +92 -0
  683. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +54 -0
  684. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +152 -0
  685. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +59 -0
  686. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +141 -0
  687. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +33 -0
  688. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +74 -0
  689. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +117 -0
  690. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +263 -0
  691. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +96 -0
  692. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +40 -0
  693. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +29 -0
  694. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +144 -0
  695. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +30 -0
  696. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +51 -0
  697. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +28 -0
  698. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +10 -0
  699. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +26 -0
  700. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +138 -0
  701. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +23 -0
  702. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +57 -0
  703. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +260 -0
  704. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +52 -0
  705. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +328 -0
  706. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +1703 -0
  707. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +16 -0
  708. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +304 -0
  709. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +39 -0
  710. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +26 -0
  711. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +318 -0
  712. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.cpp +12 -0
  713. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +57 -0
  714. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +219 -0
  715. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +207 -0
  716. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +164 -0
  717. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +57 -0
  718. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +77 -0
  719. package/deps/rocksdb/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  720. package/deps/rocksdb/rocksdb/thirdparty.inc +268 -0
  721. package/deps/rocksdb/rocksdb/tools/CMakeLists.txt +30 -0
  722. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +110 -0
  723. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  724. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  725. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  726. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  727. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2307 -0
  728. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +395 -0
  729. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +721 -0
  730. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +719 -0
  731. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +25 -0
  732. package/deps/rocksdb/rocksdb/tools/db_bench.cc +21 -0
  733. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +7416 -0
  734. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +328 -0
  735. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +130 -0
  736. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +297 -0
  737. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +259 -0
  738. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_dump.cc +63 -0
  739. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +62 -0
  740. package/deps/rocksdb/rocksdb/tools/io_tracer_parser.cc +25 -0
  741. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +187 -0
  742. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +120 -0
  743. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.h +40 -0
  744. package/deps/rocksdb/rocksdb/tools/ldb.cc +21 -0
  745. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3609 -0
  746. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +665 -0
  747. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +746 -0
  748. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +159 -0
  749. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +221 -0
  750. package/deps/rocksdb/rocksdb/tools/sst_dump.cc +20 -0
  751. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +427 -0
  752. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +541 -0
  753. package/deps/rocksdb/rocksdb/tools/trace_analyzer.cc +25 -0
  754. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +752 -0
  755. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2001 -0
  756. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +292 -0
  757. package/deps/rocksdb/rocksdb/tools/write_stress.cc +305 -0
  758. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +496 -0
  759. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +294 -0
  760. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +379 -0
  761. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +229 -0
  762. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +174 -0
  763. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +215 -0
  764. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +491 -0
  765. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +195 -0
  766. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +255 -0
  767. package/deps/rocksdb/rocksdb/util/autovector.h +367 -0
  768. package/deps/rocksdb/rocksdb/util/autovector_test.cc +330 -0
  769. package/deps/rocksdb/rocksdb/util/bloom_impl.h +485 -0
  770. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1191 -0
  771. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -0
  772. package/deps/rocksdb/rocksdb/util/build_version.h +15 -0
  773. package/deps/rocksdb/rocksdb/util/cast_util.h +20 -0
  774. package/deps/rocksdb/rocksdb/util/channel.h +67 -0
  775. package/deps/rocksdb/rocksdb/util/coding.cc +89 -0
  776. package/deps/rocksdb/rocksdb/util/coding.h +419 -0
  777. package/deps/rocksdb/rocksdb/util/coding_lean.h +101 -0
  778. package/deps/rocksdb/rocksdb/util/coding_test.cc +217 -0
  779. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  780. package/deps/rocksdb/rocksdb/util/comparator.cc +219 -0
  781. package/deps/rocksdb/rocksdb/util/compression.h +1529 -0
  782. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +108 -0
  783. package/deps/rocksdb/rocksdb/util/compression_context_cache.h +47 -0
  784. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +67 -0
  785. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  786. package/deps/rocksdb/rocksdb/util/core_local.h +83 -0
  787. package/deps/rocksdb/rocksdb/util/crc32c.cc +1283 -0
  788. package/deps/rocksdb/rocksdb/util/crc32c.h +51 -0
  789. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +169 -0
  790. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +50 -0
  791. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +94 -0
  792. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +19 -0
  793. package/deps/rocksdb/rocksdb/util/crc32c_ppc_asm.S +756 -0
  794. package/deps/rocksdb/rocksdb/util/crc32c_ppc_constants.h +900 -0
  795. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +180 -0
  796. package/deps/rocksdb/rocksdb/util/defer.h +52 -0
  797. package/deps/rocksdb/rocksdb/util/defer_test.cc +39 -0
  798. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +68 -0
  799. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +70 -0
  800. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +214 -0
  801. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +323 -0
  802. package/deps/rocksdb/rocksdb/util/fastrange.h +112 -0
  803. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +136 -0
  804. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +98 -0
  805. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +449 -0
  806. package/deps/rocksdb/rocksdb/util/filelock_test.cc +152 -0
  807. package/deps/rocksdb/rocksdb/util/filter_bench.cc +781 -0
  808. package/deps/rocksdb/rocksdb/util/gflags_compat.h +20 -0
  809. package/deps/rocksdb/rocksdb/util/hash.cc +83 -0
  810. package/deps/rocksdb/rocksdb/util/hash.h +107 -0
  811. package/deps/rocksdb/rocksdb/util/hash_map.h +67 -0
  812. package/deps/rocksdb/rocksdb/util/hash_test.cc +593 -0
  813. package/deps/rocksdb/rocksdb/util/heap.h +166 -0
  814. package/deps/rocksdb/rocksdb/util/heap_test.cc +139 -0
  815. package/deps/rocksdb/rocksdb/util/kv_map.h +33 -0
  816. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +86 -0
  817. package/deps/rocksdb/rocksdb/util/math.h +186 -0
  818. package/deps/rocksdb/rocksdb/util/math128.h +298 -0
  819. package/deps/rocksdb/rocksdb/util/murmurhash.cc +191 -0
  820. package/deps/rocksdb/rocksdb/util/murmurhash.h +42 -0
  821. package/deps/rocksdb/rocksdb/util/mutexlock.h +186 -0
  822. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +27 -0
  823. package/deps/rocksdb/rocksdb/util/random.cc +56 -0
  824. package/deps/rocksdb/rocksdb/util/random.h +186 -0
  825. package/deps/rocksdb/rocksdb/util/random_test.cc +105 -0
  826. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +340 -0
  827. package/deps/rocksdb/rocksdb/util/rate_limiter.h +113 -0
  828. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +251 -0
  829. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +151 -0
  830. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +107 -0
  831. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1201 -0
  832. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +1062 -0
  833. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +931 -0
  834. package/deps/rocksdb/rocksdb/util/set_comparator.h +22 -0
  835. package/deps/rocksdb/rocksdb/util/slice.cc +243 -0
  836. package/deps/rocksdb/rocksdb/util/slice_test.cc +163 -0
  837. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +153 -0
  838. package/deps/rocksdb/rocksdb/util/status.cc +149 -0
  839. package/deps/rocksdb/rocksdb/util/stderr_logger.h +31 -0
  840. package/deps/rocksdb/rocksdb/util/stop_watch.h +118 -0
  841. package/deps/rocksdb/rocksdb/util/string_util.cc +422 -0
  842. package/deps/rocksdb/rocksdb/util/string_util.h +144 -0
  843. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +354 -0
  844. package/deps/rocksdb/rocksdb/util/thread_local.cc +554 -0
  845. package/deps/rocksdb/rocksdb/util/thread_local.h +101 -0
  846. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +583 -0
  847. package/deps/rocksdb/rocksdb/util/thread_operation.h +121 -0
  848. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +506 -0
  849. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +112 -0
  850. package/deps/rocksdb/rocksdb/util/timer.h +331 -0
  851. package/deps/rocksdb/rocksdb/util/timer_queue.h +230 -0
  852. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +72 -0
  853. package/deps/rocksdb/rocksdb/util/timer_test.cc +399 -0
  854. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +80 -0
  855. package/deps/rocksdb/rocksdb/util/vector_iterator.h +101 -0
  856. package/deps/rocksdb/rocksdb/util/work_queue.h +148 -0
  857. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +268 -0
  858. package/deps/rocksdb/rocksdb/util/xxh3p.h +1392 -0
  859. package/deps/rocksdb/rocksdb/util/xxhash.cc +1158 -0
  860. package/deps/rocksdb/rocksdb/util/xxhash.h +598 -0
  861. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +2354 -0
  862. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db_test.cc +2955 -0
  863. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  864. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +199 -0
  865. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  866. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +266 -0
  867. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +52 -0
  868. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2167 -0
  869. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +500 -0
  870. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +113 -0
  871. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +147 -0
  872. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +66 -0
  873. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +2386 -0
  874. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +281 -0
  875. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +58 -0
  876. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +314 -0
  877. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +244 -0
  878. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +47 -0
  879. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +42 -0
  880. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +375 -0
  881. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +327 -0
  882. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +114 -0
  883. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +187 -0
  884. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +390 -0
  885. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +184 -0
  886. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +67 -0
  887. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  888. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +75 -0
  889. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +72 -0
  890. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +43 -0
  891. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +588 -0
  892. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +82 -0
  893. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +821 -0
  894. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +37 -0
  895. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +29 -0
  896. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +27 -0
  897. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +25 -0
  898. package/deps/rocksdb/rocksdb/utilities/debug.cc +82 -0
  899. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +1497 -0
  900. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +1146 -0
  901. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +262 -0
  902. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +223 -0
  903. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +145 -0
  904. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +44 -0
  905. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +490 -0
  906. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +242 -0
  907. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +581 -0
  908. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +437 -0
  909. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +56 -0
  910. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +275 -0
  911. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +52 -0
  912. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +59 -0
  913. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +39 -0
  914. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +77 -0
  915. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +83 -0
  916. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +97 -0
  917. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +38 -0
  918. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +59 -0
  919. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +31 -0
  920. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +117 -0
  921. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +49 -0
  922. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +598 -0
  923. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +69 -0
  924. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +55 -0
  925. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +87 -0
  926. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +174 -0
  927. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +168 -0
  928. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +431 -0
  929. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +159 -0
  930. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +655 -0
  931. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +425 -0
  932. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +156 -0
  933. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +609 -0
  934. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +296 -0
  935. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  936. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +86 -0
  937. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +125 -0
  938. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +238 -0
  939. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +308 -0
  940. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +168 -0
  941. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +160 -0
  942. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +174 -0
  943. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +360 -0
  944. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +456 -0
  945. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +286 -0
  946. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +167 -0
  947. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +339 -0
  948. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  949. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +140 -0
  950. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +142 -0
  951. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +285 -0
  952. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  953. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +494 -0
  954. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +356 -0
  955. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +224 -0
  956. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +122 -0
  957. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +72 -0
  958. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +244 -0
  959. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +125 -0
  960. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  961. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +29 -0
  962. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +82 -0
  963. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_tracker.h +209 -0
  964. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +720 -0
  965. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +223 -0
  966. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +181 -0
  967. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +319 -0
  968. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +270 -0
  969. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +99 -0
  970. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +30 -0
  971. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +306 -0
  972. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  973. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  974. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  975. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  976. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  977. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  978. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +139 -0
  979. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  980. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +222 -0
  981. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  982. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  983. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +253 -0
  984. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1007 -0
  985. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +560 -0
  986. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +527 -0
  987. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +265 -0
  988. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  989. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +520 -0
  990. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  991. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +120 -0
  992. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  993. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +213 -0
  994. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  995. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  996. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  997. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  998. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +82 -0
  999. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1000. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1001. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1002. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1003. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +172 -0
  1004. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1005. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +132 -0
  1006. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +153 -0
  1007. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1008. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1009. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +201 -0
  1010. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1011. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1012. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1013. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1014. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1015. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +479 -0
  1016. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +130 -0
  1017. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +156 -0
  1018. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1019. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +196 -0
  1020. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +101 -0
  1021. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +111 -0
  1022. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +87 -0
  1023. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1418 -0
  1024. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +752 -0
  1025. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +232 -0
  1026. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +628 -0
  1027. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +228 -0
  1028. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +49 -0
  1029. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +678 -0
  1030. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +373 -0
  1031. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +135 -0
  1032. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +26 -0
  1033. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +6350 -0
  1034. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +522 -0
  1035. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +188 -0
  1036. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +80 -0
  1037. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3531 -0
  1038. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +483 -0
  1039. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +119 -0
  1040. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +999 -0
  1041. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +1109 -0
  1042. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +786 -0
  1043. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1039 -0
  1044. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +341 -0
  1045. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +470 -0
  1046. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +108 -0
  1047. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +332 -0
  1048. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +353 -0
  1049. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +703 -0
  1050. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +99 -0
  1051. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +617 -0
  1052. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +345 -0
  1053. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +569 -0
  1054. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1867 -0
  1055. package/deps/rocksdb/rocksdb.gyp +475 -0
  1056. package/deps/snappy/freebsd/config.h +135 -0
  1057. package/deps/snappy/freebsd/snappy-stubs-public.h +100 -0
  1058. package/deps/snappy/linux/config.h +135 -0
  1059. package/deps/snappy/linux/snappy-stubs-public.h +100 -0
  1060. package/deps/snappy/mac/config.h +137 -0
  1061. package/deps/snappy/mac/snappy-stubs-public.h +100 -0
  1062. package/deps/snappy/openbsd/config.h +135 -0
  1063. package/deps/snappy/openbsd/snappy-stubs-public.h +100 -0
  1064. package/deps/snappy/snappy-1.1.7/COPYING +54 -0
  1065. package/deps/snappy/snappy-1.1.7/cmake/SnappyConfig.cmake +1 -0
  1066. package/deps/snappy/snappy-1.1.7/cmake/config.h.in +62 -0
  1067. package/deps/snappy/snappy-1.1.7/snappy-c.cc +90 -0
  1068. package/deps/snappy/snappy-1.1.7/snappy-c.h +138 -0
  1069. package/deps/snappy/snappy-1.1.7/snappy-internal.h +224 -0
  1070. package/deps/snappy/snappy-1.1.7/snappy-sinksource.cc +104 -0
  1071. package/deps/snappy/snappy-1.1.7/snappy-sinksource.h +182 -0
  1072. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.cc +42 -0
  1073. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.h +561 -0
  1074. package/deps/snappy/snappy-1.1.7/snappy-stubs-public.h.in +94 -0
  1075. package/deps/snappy/snappy-1.1.7/snappy-test.cc +612 -0
  1076. package/deps/snappy/snappy-1.1.7/snappy-test.h +573 -0
  1077. package/deps/snappy/snappy-1.1.7/snappy.cc +1515 -0
  1078. package/deps/snappy/snappy-1.1.7/snappy.h +203 -0
  1079. package/deps/snappy/snappy-1.1.7/snappy_unittest.cc +1410 -0
  1080. package/deps/snappy/snappy.gyp +90 -0
  1081. package/deps/snappy/solaris/config.h +135 -0
  1082. package/deps/snappy/solaris/snappy-stubs-public.h +100 -0
  1083. package/deps/snappy/win32/config.h +29 -0
  1084. package/deps/snappy/win32/snappy-stubs-public.h +100 -0
  1085. package/iterator.js +55 -0
  1086. package/leveldown.js +113 -0
  1087. package/package-lock.json +23687 -0
  1088. package/package.json +70 -0
@@ -0,0 +1,1407 @@
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 <deque>
14
+ #include <limits>
15
+
16
+ #include "rocksdb/slice.h"
17
+ #include "table/block_based/block_based_filter_block.h"
18
+ #include "table/block_based/filter_policy_internal.h"
19
+ #include "table/block_based/full_filter_block.h"
20
+ #include "third-party/folly/folly/ConstexprMath.h"
21
+ #include "util/bloom_impl.h"
22
+ #include "util/coding.h"
23
+ #include "util/hash.h"
24
+ #include "util/ribbon_impl.h"
25
+
26
+ namespace ROCKSDB_NAMESPACE {
27
+
28
+ namespace {
29
+
30
+ // Metadata trailer size for built-in filters. (This is separate from
31
+ // block-based table block trailer.)
32
+ //
33
+ // Originally this was 1 byte for num_probes and 4 bytes for number of
34
+ // cache lines in the Bloom filter, but now the first trailer byte is
35
+ // usually an implementation marker and remaining 4 bytes have various
36
+ // meanings.
37
+ static constexpr uint32_t kMetadataLen = 5;
38
+
39
+ Slice FinishAlwaysFalse(std::unique_ptr<const char[]>* /*buf*/) {
40
+ // Missing metadata, treated as zero entries
41
+ return Slice(nullptr, 0);
42
+ }
43
+
44
+ // Base class for filter builders using the XXH3 preview hash,
45
+ // also known as Hash64 or GetSliceHash64.
46
+ class XXH3pFilterBitsBuilder : public BuiltinFilterBitsBuilder {
47
+ public:
48
+ explicit XXH3pFilterBitsBuilder(
49
+ std::atomic<int64_t>* aggregate_rounding_balance)
50
+ : aggregate_rounding_balance_(aggregate_rounding_balance) {}
51
+
52
+ ~XXH3pFilterBitsBuilder() override {}
53
+
54
+ virtual void AddKey(const Slice& key) override {
55
+ uint64_t hash = GetSliceHash64(key);
56
+ // Especially with prefixes, it is common to have repetition,
57
+ // though only adjacent repetition, which we want to immediately
58
+ // recognize and collapse for estimating true filter space
59
+ // requirements.
60
+ if (hash_entries_.empty() || hash != hash_entries_.back()) {
61
+ hash_entries_.push_back(hash);
62
+ }
63
+ }
64
+
65
+ protected:
66
+ static constexpr uint32_t kMetadataLen = 5;
67
+
68
+ // For delegating between XXH3pFilterBitsBuilders
69
+ void SwapEntriesWith(XXH3pFilterBitsBuilder* other) {
70
+ std::swap(hash_entries_, other->hash_entries_);
71
+ }
72
+
73
+ virtual size_t RoundDownUsableSpace(size_t available_size) = 0;
74
+
75
+ // To choose size using malloc_usable_size, we have to actually allocate.
76
+ size_t AllocateMaybeRounding(size_t target_len_with_metadata,
77
+ size_t num_entries,
78
+ std::unique_ptr<char[]>* buf) {
79
+ // Return value set to a default; overwritten in some cases
80
+ size_t rv = target_len_with_metadata;
81
+ #ifdef ROCKSDB_MALLOC_USABLE_SIZE
82
+ if (aggregate_rounding_balance_ != nullptr) {
83
+ // Do optimize_filters_for_memory, using malloc_usable_size.
84
+ // Approach: try to keep FP rate balance better than or on
85
+ // target (negative aggregate_rounding_balance_). We can then select a
86
+ // lower bound filter size (within reasonable limits) that gets us as
87
+ // close to on target as possible. We request allocation for that filter
88
+ // size and use malloc_usable_size to "round up" to the actual
89
+ // allocation size.
90
+
91
+ // Although it can be considered bad practice to use malloc_usable_size
92
+ // to access an object beyond its original size, this approach should be
93
+ // quite general: working for all allocators that properly support
94
+ // malloc_usable_size.
95
+
96
+ // Race condition on balance is OK because it can only cause temporary
97
+ // skew in rounding up vs. rounding down, as long as updates are atomic
98
+ // and relative.
99
+ int64_t balance = aggregate_rounding_balance_->load();
100
+
101
+ double target_fp_rate =
102
+ EstimatedFpRate(num_entries, target_len_with_metadata);
103
+ double rv_fp_rate = target_fp_rate;
104
+
105
+ if (balance < 0) {
106
+ // See formula for BloomFilterPolicy::aggregate_rounding_balance_
107
+ double for_balance_fp_rate =
108
+ -balance / double{0x100000000} + target_fp_rate;
109
+
110
+ // To simplify, we just try a few modified smaller sizes. This also
111
+ // caps how much we vary filter size vs. target, to avoid outlier
112
+ // behavior from excessive variance.
113
+ size_t target_len = target_len_with_metadata - kMetadataLen;
114
+ assert(target_len < target_len_with_metadata); // check underflow
115
+ for (uint64_t maybe_len_rough :
116
+ {uint64_t{3} * target_len / 4, uint64_t{13} * target_len / 16,
117
+ uint64_t{7} * target_len / 8, uint64_t{15} * target_len / 16}) {
118
+ size_t maybe_len_with_metadata =
119
+ RoundDownUsableSpace(maybe_len_rough + kMetadataLen);
120
+ double maybe_fp_rate =
121
+ EstimatedFpRate(num_entries, maybe_len_with_metadata);
122
+ if (maybe_fp_rate <= for_balance_fp_rate) {
123
+ rv = maybe_len_with_metadata;
124
+ rv_fp_rate = maybe_fp_rate;
125
+ break;
126
+ }
127
+ }
128
+ }
129
+
130
+ // Filter blocks are loaded into block cache with their block trailer.
131
+ // We need to make sure that's accounted for in choosing a
132
+ // fragmentation-friendly size.
133
+ const size_t kExtraPadding = kBlockTrailerSize;
134
+ size_t requested = rv + kExtraPadding;
135
+
136
+ // Allocate and get usable size
137
+ buf->reset(new char[requested]);
138
+ size_t usable = malloc_usable_size(buf->get());
139
+
140
+ if (usable - usable / 4 > requested) {
141
+ // Ratio greater than 4/3 is too much for utilizing, if it's
142
+ // not a buggy or mislinked malloc_usable_size implementation.
143
+ // Non-linearity of FP rates with bits/key means rapidly
144
+ // diminishing returns in overall accuracy for additional
145
+ // storage on disk.
146
+ // Nothing to do, except assert that the result is accurate about
147
+ // the usable size. (Assignment never used.)
148
+ assert(((*buf)[usable - 1] = 'x'));
149
+ } else if (usable > requested) {
150
+ rv = RoundDownUsableSpace(usable - kExtraPadding);
151
+ assert(rv <= usable - kExtraPadding);
152
+ rv_fp_rate = EstimatedFpRate(num_entries, rv);
153
+ } else {
154
+ // Too small means bad malloc_usable_size
155
+ assert(usable == requested);
156
+ }
157
+ memset(buf->get(), 0, rv);
158
+
159
+ // Update balance
160
+ int64_t diff = static_cast<int64_t>((rv_fp_rate - target_fp_rate) *
161
+ double{0x100000000});
162
+ *aggregate_rounding_balance_ += diff;
163
+ } else {
164
+ buf->reset(new char[rv]());
165
+ }
166
+ #else
167
+ (void)num_entries;
168
+ buf->reset(new char[rv]());
169
+ #endif // ROCKSDB_MALLOC_USABLE_SIZE
170
+ return rv;
171
+ }
172
+
173
+ // A deque avoids unnecessary copying of already-saved values
174
+ // and has near-minimal peak memory use.
175
+ std::deque<uint64_t> hash_entries_;
176
+
177
+ // See BloomFilterPolicy::aggregate_rounding_balance_. If nullptr,
178
+ // always "round up" like historic behavior.
179
+ std::atomic<int64_t>* aggregate_rounding_balance_;
180
+ };
181
+
182
+ // #################### FastLocalBloom implementation ################## //
183
+ // ############## also known as format_version=5 Bloom filter ########## //
184
+
185
+ // See description in FastLocalBloomImpl
186
+ class FastLocalBloomBitsBuilder : public XXH3pFilterBitsBuilder {
187
+ public:
188
+ // Non-null aggregate_rounding_balance implies optimize_filters_for_memory
189
+ explicit FastLocalBloomBitsBuilder(
190
+ const int millibits_per_key,
191
+ std::atomic<int64_t>* aggregate_rounding_balance)
192
+ : XXH3pFilterBitsBuilder(aggregate_rounding_balance),
193
+ millibits_per_key_(millibits_per_key) {
194
+ assert(millibits_per_key >= 1000);
195
+ }
196
+
197
+ // No Copy allowed
198
+ FastLocalBloomBitsBuilder(const FastLocalBloomBitsBuilder&) = delete;
199
+ void operator=(const FastLocalBloomBitsBuilder&) = delete;
200
+
201
+ ~FastLocalBloomBitsBuilder() override {}
202
+
203
+ virtual Slice Finish(std::unique_ptr<const char[]>* buf) override {
204
+ size_t num_entries = hash_entries_.size();
205
+ size_t len_with_metadata = CalculateSpace(num_entries);
206
+
207
+ std::unique_ptr<char[]> mutable_buf;
208
+ len_with_metadata =
209
+ AllocateMaybeRounding(len_with_metadata, num_entries, &mutable_buf);
210
+
211
+ assert(mutable_buf);
212
+ assert(len_with_metadata >= kMetadataLen);
213
+
214
+ // Max size supported by implementation
215
+ assert(len_with_metadata <= 0xffffffffU);
216
+
217
+ // Compute num_probes after any rounding / adjustments
218
+ int num_probes = GetNumProbes(num_entries, len_with_metadata);
219
+
220
+ uint32_t len = static_cast<uint32_t>(len_with_metadata - kMetadataLen);
221
+ if (len > 0) {
222
+ AddAllEntries(mutable_buf.get(), len, num_probes);
223
+ }
224
+
225
+ assert(hash_entries_.empty());
226
+
227
+ // See BloomFilterPolicy::GetBloomBitsReader re: metadata
228
+ // -1 = Marker for newer Bloom implementations
229
+ mutable_buf[len] = static_cast<char>(-1);
230
+ // 0 = Marker for this sub-implementation
231
+ mutable_buf[len + 1] = static_cast<char>(0);
232
+ // num_probes (and 0 in upper bits for 64-byte block size)
233
+ mutable_buf[len + 2] = static_cast<char>(num_probes);
234
+ // rest of metadata stays zero
235
+
236
+ Slice rv(mutable_buf.get(), len_with_metadata);
237
+ *buf = std::move(mutable_buf);
238
+ return rv;
239
+ }
240
+
241
+ size_t ApproximateNumEntries(size_t bytes) override {
242
+ size_t bytes_no_meta =
243
+ bytes >= kMetadataLen ? RoundDownUsableSpace(bytes) - kMetadataLen : 0;
244
+ return static_cast<size_t>(uint64_t{8000} * bytes_no_meta /
245
+ millibits_per_key_);
246
+ }
247
+
248
+ size_t CalculateSpace(size_t num_entries) override {
249
+ // If not for cache line blocks in the filter, what would the target
250
+ // length in bytes be?
251
+ size_t raw_target_len = static_cast<size_t>(
252
+ (uint64_t{num_entries} * millibits_per_key_ + 7999) / 8000);
253
+
254
+ if (raw_target_len >= size_t{0xffffffc0}) {
255
+ // Max supported for this data structure implementation
256
+ raw_target_len = size_t{0xffffffc0};
257
+ }
258
+
259
+ // Round up to nearest multiple of 64 (block size). This adjustment is
260
+ // used for target FP rate only so that we don't receive complaints about
261
+ // lower FP rate vs. historic Bloom filter behavior.
262
+ return ((raw_target_len + 63) & ~size_t{63}) + kMetadataLen;
263
+ }
264
+
265
+ double EstimatedFpRate(size_t keys, size_t len_with_metadata) override {
266
+ int num_probes = GetNumProbes(keys, len_with_metadata);
267
+ return FastLocalBloomImpl::EstimatedFpRate(
268
+ keys, len_with_metadata - kMetadataLen, num_probes, /*hash bits*/ 64);
269
+ }
270
+
271
+ protected:
272
+ size_t RoundDownUsableSpace(size_t available_size) override {
273
+ size_t rv = available_size - kMetadataLen;
274
+
275
+ if (rv >= size_t{0xffffffc0}) {
276
+ // Max supported for this data structure implementation
277
+ rv = size_t{0xffffffc0};
278
+ }
279
+
280
+ // round down to multiple of 64 (block size)
281
+ rv &= ~size_t{63};
282
+
283
+ return rv + kMetadataLen;
284
+ }
285
+
286
+ private:
287
+ // Compute num_probes after any rounding / adjustments
288
+ int GetNumProbes(size_t keys, size_t len_with_metadata) {
289
+ uint64_t millibits = uint64_t{len_with_metadata - kMetadataLen} * 8000;
290
+ int actual_millibits_per_key =
291
+ static_cast<int>(millibits / std::max(keys, size_t{1}));
292
+ // BEGIN XXX/TODO(peterd): preserving old/default behavior for now to
293
+ // minimize unit test churn. Remove this some time.
294
+ if (!aggregate_rounding_balance_) {
295
+ actual_millibits_per_key = millibits_per_key_;
296
+ }
297
+ // END XXX/TODO
298
+ return FastLocalBloomImpl::ChooseNumProbes(actual_millibits_per_key);
299
+ }
300
+
301
+ void AddAllEntries(char* data, uint32_t len, int num_probes) {
302
+ // Simple version without prefetching:
303
+ //
304
+ // for (auto h : hash_entries_) {
305
+ // FastLocalBloomImpl::AddHash(Lower32of64(h), Upper32of64(h), len,
306
+ // num_probes, data);
307
+ // }
308
+
309
+ const size_t num_entries = hash_entries_.size();
310
+ constexpr size_t kBufferMask = 7;
311
+ static_assert(((kBufferMask + 1) & kBufferMask) == 0,
312
+ "Must be power of 2 minus 1");
313
+
314
+ std::array<uint32_t, kBufferMask + 1> hashes;
315
+ std::array<uint32_t, kBufferMask + 1> byte_offsets;
316
+
317
+ // Prime the buffer
318
+ size_t i = 0;
319
+ for (; i <= kBufferMask && i < num_entries; ++i) {
320
+ uint64_t h = hash_entries_.front();
321
+ hash_entries_.pop_front();
322
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len, data,
323
+ /*out*/ &byte_offsets[i]);
324
+ hashes[i] = Upper32of64(h);
325
+ }
326
+
327
+ // Process and buffer
328
+ for (; i < num_entries; ++i) {
329
+ uint32_t& hash_ref = hashes[i & kBufferMask];
330
+ uint32_t& byte_offset_ref = byte_offsets[i & kBufferMask];
331
+ // Process (add)
332
+ FastLocalBloomImpl::AddHashPrepared(hash_ref, num_probes,
333
+ data + byte_offset_ref);
334
+ // And buffer
335
+ uint64_t h = hash_entries_.front();
336
+ hash_entries_.pop_front();
337
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len, data,
338
+ /*out*/ &byte_offset_ref);
339
+ hash_ref = Upper32of64(h);
340
+ }
341
+
342
+ // Finish processing
343
+ for (i = 0; i <= kBufferMask && i < num_entries; ++i) {
344
+ FastLocalBloomImpl::AddHashPrepared(hashes[i], num_probes,
345
+ data + byte_offsets[i]);
346
+ }
347
+ }
348
+
349
+ // Target allocation per added key, in thousandths of a bit.
350
+ int millibits_per_key_;
351
+ };
352
+
353
+ // See description in FastLocalBloomImpl
354
+ class FastLocalBloomBitsReader : public FilterBitsReader {
355
+ public:
356
+ FastLocalBloomBitsReader(const char* data, int num_probes, uint32_t len_bytes)
357
+ : data_(data), num_probes_(num_probes), len_bytes_(len_bytes) {}
358
+
359
+ // No Copy allowed
360
+ FastLocalBloomBitsReader(const FastLocalBloomBitsReader&) = delete;
361
+ void operator=(const FastLocalBloomBitsReader&) = delete;
362
+
363
+ ~FastLocalBloomBitsReader() override {}
364
+
365
+ bool MayMatch(const Slice& key) override {
366
+ uint64_t h = GetSliceHash64(key);
367
+ uint32_t byte_offset;
368
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len_bytes_, data_,
369
+ /*out*/ &byte_offset);
370
+ return FastLocalBloomImpl::HashMayMatchPrepared(Upper32of64(h), num_probes_,
371
+ data_ + byte_offset);
372
+ }
373
+
374
+ virtual void MayMatch(int num_keys, Slice** keys, bool* may_match) override {
375
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> hashes;
376
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> byte_offsets;
377
+ for (int i = 0; i < num_keys; ++i) {
378
+ uint64_t h = GetSliceHash64(*keys[i]);
379
+ FastLocalBloomImpl::PrepareHash(Lower32of64(h), len_bytes_, data_,
380
+ /*out*/ &byte_offsets[i]);
381
+ hashes[i] = Upper32of64(h);
382
+ }
383
+ for (int i = 0; i < num_keys; ++i) {
384
+ may_match[i] = FastLocalBloomImpl::HashMayMatchPrepared(
385
+ hashes[i], num_probes_, data_ + byte_offsets[i]);
386
+ }
387
+ }
388
+
389
+ private:
390
+ const char* data_;
391
+ const int num_probes_;
392
+ const uint32_t len_bytes_;
393
+ };
394
+
395
+ // ##################### Ribbon filter implementation ################### //
396
+
397
+ // Implements concept RehasherTypesAndSettings in ribbon_impl.h
398
+ struct Standard128RibbonRehasherTypesAndSettings {
399
+ // These are schema-critical. Any change almost certainly changes
400
+ // underlying data.
401
+ static constexpr bool kIsFilter = true;
402
+ static constexpr bool kFirstCoeffAlwaysOne = true;
403
+ static constexpr bool kUseSmash = false;
404
+ using CoeffRow = ROCKSDB_NAMESPACE::Unsigned128;
405
+ using Hash = uint64_t;
406
+ using Seed = uint32_t;
407
+ // Changing these doesn't necessarily change underlying data,
408
+ // but might affect supported scalability of those dimensions.
409
+ using Index = uint32_t;
410
+ using ResultRow = uint32_t;
411
+ // Save a conditional in Ribbon queries
412
+ static constexpr bool kAllowZeroStarts = false;
413
+ };
414
+
415
+ using Standard128RibbonTypesAndSettings =
416
+ ribbon::StandardRehasherAdapter<Standard128RibbonRehasherTypesAndSettings>;
417
+
418
+ class Standard128RibbonBitsBuilder : public XXH3pFilterBitsBuilder {
419
+ public:
420
+ explicit Standard128RibbonBitsBuilder(
421
+ double desired_one_in_fp_rate, int bloom_millibits_per_key,
422
+ std::atomic<int64_t>* aggregate_rounding_balance, Logger* info_log)
423
+ : XXH3pFilterBitsBuilder(aggregate_rounding_balance),
424
+ desired_one_in_fp_rate_(desired_one_in_fp_rate),
425
+ info_log_(info_log),
426
+ bloom_fallback_(bloom_millibits_per_key, aggregate_rounding_balance) {
427
+ assert(desired_one_in_fp_rate >= 1.0);
428
+ }
429
+
430
+ // No Copy allowed
431
+ Standard128RibbonBitsBuilder(const Standard128RibbonBitsBuilder&) = delete;
432
+ void operator=(const Standard128RibbonBitsBuilder&) = delete;
433
+
434
+ ~Standard128RibbonBitsBuilder() override {}
435
+
436
+ virtual Slice Finish(std::unique_ptr<const char[]>* buf) override {
437
+ if (hash_entries_.size() > kMaxRibbonEntries) {
438
+ ROCKS_LOG_WARN(info_log_, "Too many keys for Ribbon filter: %llu",
439
+ static_cast<unsigned long long>(hash_entries_.size()));
440
+ SwapEntriesWith(&bloom_fallback_);
441
+ assert(hash_entries_.empty());
442
+ return bloom_fallback_.Finish(buf);
443
+ }
444
+ if (hash_entries_.size() == 0) {
445
+ // Save a conditional in Ribbon queries by using alternate reader
446
+ // for zero entries added.
447
+ return FinishAlwaysFalse(buf);
448
+ }
449
+ uint32_t num_entries = static_cast<uint32_t>(hash_entries_.size());
450
+ uint32_t num_slots;
451
+ size_t len_with_metadata;
452
+
453
+ CalculateSpaceAndSlots(num_entries, &len_with_metadata, &num_slots);
454
+
455
+ // Bloom fall-back indicator
456
+ if (num_slots == 0) {
457
+ SwapEntriesWith(&bloom_fallback_);
458
+ assert(hash_entries_.empty());
459
+ return bloom_fallback_.Finish(buf);
460
+ }
461
+
462
+ uint32_t entropy = 0;
463
+ if (!hash_entries_.empty()) {
464
+ entropy = Lower32of64(hash_entries_.front());
465
+ }
466
+
467
+ BandingType banding;
468
+ bool success = banding.ResetAndFindSeedToSolve(
469
+ num_slots, hash_entries_.begin(), hash_entries_.end(),
470
+ /*starting seed*/ entropy & 255, /*seed mask*/ 255);
471
+ if (!success) {
472
+ ROCKS_LOG_WARN(info_log_,
473
+ "Too many re-seeds (256) for Ribbon filter, %llu / %llu",
474
+ static_cast<unsigned long long>(hash_entries_.size()),
475
+ static_cast<unsigned long long>(num_slots));
476
+ SwapEntriesWith(&bloom_fallback_);
477
+ assert(hash_entries_.empty());
478
+ return bloom_fallback_.Finish(buf);
479
+ }
480
+ hash_entries_.clear();
481
+
482
+ uint32_t seed = banding.GetOrdinalSeed();
483
+ assert(seed < 256);
484
+
485
+ std::unique_ptr<char[]> mutable_buf;
486
+ len_with_metadata =
487
+ AllocateMaybeRounding(len_with_metadata, num_entries, &mutable_buf);
488
+
489
+ SolnType soln(mutable_buf.get(), len_with_metadata);
490
+ soln.BackSubstFrom(banding);
491
+ uint32_t num_blocks = soln.GetNumBlocks();
492
+ // This should be guaranteed:
493
+ // num_entries < 2^30
494
+ // => (overhead_factor < 2.0)
495
+ // num_entries * overhead_factor == num_slots < 2^31
496
+ // => (num_blocks = num_slots / 128)
497
+ // num_blocks < 2^24
498
+ assert(num_blocks < 0x1000000U);
499
+
500
+ // See BloomFilterPolicy::GetBloomBitsReader re: metadata
501
+ // -2 = Marker for Standard128 Ribbon
502
+ mutable_buf[len_with_metadata - 5] = static_cast<char>(-2);
503
+ // Hash seed
504
+ mutable_buf[len_with_metadata - 4] = static_cast<char>(seed);
505
+ // Number of blocks, in 24 bits
506
+ // (Along with bytes, we can derive other settings)
507
+ mutable_buf[len_with_metadata - 3] = static_cast<char>(num_blocks & 255);
508
+ mutable_buf[len_with_metadata - 2] =
509
+ static_cast<char>((num_blocks >> 8) & 255);
510
+ mutable_buf[len_with_metadata - 1] =
511
+ static_cast<char>((num_blocks >> 16) & 255);
512
+
513
+ Slice rv(mutable_buf.get(), len_with_metadata);
514
+ *buf = std::move(mutable_buf);
515
+ return rv;
516
+ }
517
+
518
+ // Setting num_slots to 0 means "fall back on Bloom filter."
519
+ // And note this implementation does not support num_entries or num_slots
520
+ // beyond uint32_t; see kMaxRibbonEntries.
521
+ void CalculateSpaceAndSlots(size_t num_entries,
522
+ size_t* target_len_with_metadata,
523
+ uint32_t* num_slots) {
524
+ if (num_entries > kMaxRibbonEntries) {
525
+ // More entries than supported by this Ribbon
526
+ *num_slots = 0; // use Bloom
527
+ *target_len_with_metadata = bloom_fallback_.CalculateSpace(num_entries);
528
+ return;
529
+ }
530
+ uint32_t entropy = 0;
531
+ if (!hash_entries_.empty()) {
532
+ entropy = Upper32of64(hash_entries_.front());
533
+ }
534
+
535
+ *num_slots = NumEntriesToNumSlots(static_cast<uint32_t>(num_entries));
536
+ *target_len_with_metadata =
537
+ SolnType::GetBytesForOneInFpRate(*num_slots, desired_one_in_fp_rate_,
538
+ /*rounding*/ entropy) +
539
+ kMetadataLen;
540
+
541
+ // Consider possible Bloom fallback for small filters
542
+ if (*num_slots < 1024) {
543
+ size_t bloom = bloom_fallback_.CalculateSpace(num_entries);
544
+ if (bloom < *target_len_with_metadata) {
545
+ *num_slots = 0; // use Bloom
546
+ *target_len_with_metadata = bloom;
547
+ return;
548
+ }
549
+ }
550
+ }
551
+
552
+ size_t CalculateSpace(size_t num_entries) override {
553
+ if (num_entries == 0) {
554
+ // See FinishAlwaysFalse
555
+ return 0;
556
+ }
557
+ size_t target_len_with_metadata;
558
+ uint32_t num_slots;
559
+ CalculateSpaceAndSlots(num_entries, &target_len_with_metadata, &num_slots);
560
+ (void)num_slots;
561
+ return target_len_with_metadata;
562
+ }
563
+
564
+ // This is a somewhat ugly but reasonably fast and reasonably accurate
565
+ // reversal of CalculateSpace.
566
+ size_t ApproximateNumEntries(size_t bytes) override {
567
+ size_t len_no_metadata =
568
+ RoundDownUsableSpace(std::max(bytes, size_t{kMetadataLen})) -
569
+ kMetadataLen;
570
+
571
+ if (!(desired_one_in_fp_rate_ > 1.0)) {
572
+ // Effectively asking for 100% FP rate, or NaN etc.
573
+ // Note that NaN is neither < 1.0 nor > 1.0
574
+ return kMaxRibbonEntries;
575
+ }
576
+
577
+ // Find a slight under-estimate for actual average bits per slot
578
+ double min_real_bits_per_slot;
579
+ if (desired_one_in_fp_rate_ >= 1.0 + std::numeric_limits<uint32_t>::max()) {
580
+ // Max of 32 solution columns (result bits)
581
+ min_real_bits_per_slot = 32.0;
582
+ } else {
583
+ // Account for mix of b and b+1 solution columns being slightly
584
+ // suboptimal vs. ideal log2(1/fp_rate) bits.
585
+ uint32_t rounded = static_cast<uint32_t>(desired_one_in_fp_rate_);
586
+ int upper_bits_per_key = 1 + FloorLog2(rounded);
587
+ double fp_rate_for_upper = std::pow(2.0, -upper_bits_per_key);
588
+ double portion_lower =
589
+ (1.0 / desired_one_in_fp_rate_ - fp_rate_for_upper) /
590
+ fp_rate_for_upper;
591
+ min_real_bits_per_slot = upper_bits_per_key - portion_lower;
592
+ assert(min_real_bits_per_slot > 0.0);
593
+ assert(min_real_bits_per_slot <= 32.0);
594
+ }
595
+
596
+ // An overestimate, but this should only be O(1) slots away from truth.
597
+ double max_slots = len_no_metadata * 8.0 / min_real_bits_per_slot;
598
+
599
+ // Let's not bother accounting for overflow to Bloom filter
600
+ // (Includes NaN case)
601
+ if (!(max_slots <
602
+ BandingType::GetNumSlotsFor95PctSuccess(kMaxRibbonEntries))) {
603
+ return kMaxRibbonEntries;
604
+ }
605
+
606
+ // Set up for short iteration
607
+ uint32_t slots = static_cast<uint32_t>(max_slots);
608
+ slots = SolnType::RoundUpNumSlots(slots);
609
+
610
+ // Assert that we have a valid upper bound on slots
611
+ assert(SolnType::GetBytesForOneInFpRate(
612
+ SolnType::RoundUpNumSlots(slots + 1), desired_one_in_fp_rate_,
613
+ /*rounding*/ 0) > len_no_metadata);
614
+
615
+ // Iterate up to a few times to rather precisely account for small effects
616
+ for (int i = 0; slots > 0; ++i) {
617
+ size_t reqd_bytes =
618
+ SolnType::GetBytesForOneInFpRate(slots, desired_one_in_fp_rate_,
619
+ /*rounding*/ 0);
620
+ if (reqd_bytes <= len_no_metadata) {
621
+ break; // done
622
+ }
623
+ if (i >= 2) {
624
+ // should have been enough iterations
625
+ assert(false);
626
+ break;
627
+ }
628
+ slots = SolnType::RoundDownNumSlots(slots - 1);
629
+ }
630
+
631
+ // Using slots instead of entries to get overhead factor estimate
632
+ double f = BandingType::GetFactorFor95PctSuccess(slots);
633
+ uint32_t num_entries = static_cast<uint32_t>(slots / f);
634
+ // Improve precision with another round
635
+ f = BandingType::GetFactorFor95PctSuccess(num_entries);
636
+ num_entries = static_cast<uint32_t>(slots / f + 0.999999999);
637
+
638
+ // Consider possible Bloom fallback for small filters
639
+ if (slots < 1024) {
640
+ size_t bloom = bloom_fallback_.ApproximateNumEntries(bytes);
641
+ if (bloom > num_entries) {
642
+ return bloom;
643
+ } else {
644
+ return num_entries;
645
+ }
646
+ } else {
647
+ return std::min(num_entries, kMaxRibbonEntries);
648
+ }
649
+ }
650
+
651
+ double EstimatedFpRate(size_t num_entries,
652
+ size_t len_with_metadata) override {
653
+ if (num_entries > kMaxRibbonEntries) {
654
+ // More entries than supported by this Ribbon
655
+ return bloom_fallback_.EstimatedFpRate(num_entries, len_with_metadata);
656
+ }
657
+ uint32_t num_slots =
658
+ NumEntriesToNumSlots(static_cast<uint32_t>(num_entries));
659
+ SolnType fake_soln(nullptr, len_with_metadata);
660
+ fake_soln.ConfigureForNumSlots(num_slots);
661
+ return fake_soln.ExpectedFpRate();
662
+ }
663
+
664
+ protected:
665
+ size_t RoundDownUsableSpace(size_t available_size) override {
666
+ size_t rv = available_size - kMetadataLen;
667
+
668
+ // round down to multiple of 16 (segment size)
669
+ rv &= ~size_t{15};
670
+
671
+ return rv + kMetadataLen;
672
+ }
673
+
674
+ private:
675
+ using TS = Standard128RibbonTypesAndSettings;
676
+ using SolnType = ribbon::SerializableInterleavedSolution<TS>;
677
+ using BandingType = ribbon::StandardBanding<TS>;
678
+
679
+ static uint32_t NumEntriesToNumSlots(uint32_t num_entries) {
680
+ uint32_t num_slots1 = BandingType::GetNumSlotsFor95PctSuccess(num_entries);
681
+ return SolnType::RoundUpNumSlots(num_slots1);
682
+ }
683
+
684
+ // Approximate num_entries to ensure number of bytes fits in 32 bits, which
685
+ // is not an inherent limitation but does ensure somewhat graceful Bloom
686
+ // fallback for crazy high number of entries, since the Bloom implementation
687
+ // does not support number of bytes bigger than fits in 32 bits. This is
688
+ // within an order of magnitude of implementation limit on num_slots
689
+ // fitting in 32 bits, and even closer for num_blocks fitting in 24 bits
690
+ // (for filter metadata).
691
+ static constexpr uint32_t kMaxRibbonEntries = 950000000; // ~ 1 billion
692
+
693
+ // A desired value for 1/fp_rate. For example, 100 -> 1% fp rate.
694
+ double desired_one_in_fp_rate_;
695
+
696
+ // For warnings, or can be nullptr
697
+ Logger* info_log_;
698
+
699
+ // For falling back on Bloom filter in some exceptional cases and
700
+ // very small filter cases
701
+ FastLocalBloomBitsBuilder bloom_fallback_;
702
+ };
703
+
704
+ // for the linker, at least with DEBUG_LEVEL=2
705
+ constexpr uint32_t Standard128RibbonBitsBuilder::kMaxRibbonEntries;
706
+
707
+ class Standard128RibbonBitsReader : public FilterBitsReader {
708
+ public:
709
+ Standard128RibbonBitsReader(const char* data, size_t len_bytes,
710
+ uint32_t num_blocks, uint32_t seed)
711
+ : soln_(const_cast<char*>(data), len_bytes) {
712
+ soln_.ConfigureForNumBlocks(num_blocks);
713
+ hasher_.SetOrdinalSeed(seed);
714
+ }
715
+
716
+ // No Copy allowed
717
+ Standard128RibbonBitsReader(const Standard128RibbonBitsReader&) = delete;
718
+ void operator=(const Standard128RibbonBitsReader&) = delete;
719
+
720
+ ~Standard128RibbonBitsReader() override {}
721
+
722
+ bool MayMatch(const Slice& key) override {
723
+ uint64_t h = GetSliceHash64(key);
724
+ return soln_.FilterQuery(h, hasher_);
725
+ }
726
+
727
+ virtual void MayMatch(int num_keys, Slice** keys, bool* may_match) override {
728
+ std::array<uint64_t, MultiGetContext::MAX_BATCH_SIZE> hashes;
729
+ for (int i = 0; i < num_keys; ++i) {
730
+ hashes[i] = GetSliceHash64(*keys[i]);
731
+ // FIXME: batched get optimization
732
+ }
733
+ for (int i = 0; i < num_keys; ++i) {
734
+ may_match[i] = soln_.FilterQuery(hashes[i], hasher_);
735
+ }
736
+ }
737
+
738
+ private:
739
+ using TS = Standard128RibbonTypesAndSettings;
740
+ ribbon::SerializableInterleavedSolution<TS> soln_;
741
+ ribbon::StandardHasher<TS> hasher_;
742
+ };
743
+
744
+ // ##################### Legacy Bloom implementation ################### //
745
+
746
+ using LegacyBloomImpl = LegacyLocalityBloomImpl</*ExtraRotates*/ false>;
747
+
748
+ class LegacyBloomBitsBuilder : public BuiltinFilterBitsBuilder {
749
+ public:
750
+ explicit LegacyBloomBitsBuilder(const int bits_per_key, Logger* info_log);
751
+
752
+ // No Copy allowed
753
+ LegacyBloomBitsBuilder(const LegacyBloomBitsBuilder&) = delete;
754
+ void operator=(const LegacyBloomBitsBuilder&) = delete;
755
+
756
+ ~LegacyBloomBitsBuilder() override;
757
+
758
+ void AddKey(const Slice& key) override;
759
+
760
+ Slice Finish(std::unique_ptr<const char[]>* buf) override;
761
+
762
+ size_t CalculateSpace(size_t num_entries) override {
763
+ uint32_t dont_care1;
764
+ uint32_t dont_care2;
765
+ return CalculateSpace(num_entries, &dont_care1, &dont_care2);
766
+ }
767
+
768
+ double EstimatedFpRate(size_t keys, size_t bytes) override {
769
+ return LegacyBloomImpl::EstimatedFpRate(keys, bytes - kMetadataLen,
770
+ num_probes_);
771
+ }
772
+
773
+ size_t ApproximateNumEntries(size_t bytes) override;
774
+
775
+ private:
776
+ int bits_per_key_;
777
+ int num_probes_;
778
+ std::vector<uint32_t> hash_entries_;
779
+ Logger* info_log_;
780
+
781
+ // Get totalbits that optimized for cpu cache line
782
+ uint32_t GetTotalBitsForLocality(uint32_t total_bits);
783
+
784
+ // Reserve space for new filter
785
+ char* ReserveSpace(size_t num_entries, uint32_t* total_bits,
786
+ uint32_t* num_lines);
787
+
788
+ // Implementation-specific variant of public CalculateSpace
789
+ uint32_t CalculateSpace(size_t num_entries, uint32_t* total_bits,
790
+ uint32_t* num_lines);
791
+
792
+ // Assuming single threaded access to this function.
793
+ void AddHash(uint32_t h, char* data, uint32_t num_lines, uint32_t total_bits);
794
+ };
795
+
796
+ LegacyBloomBitsBuilder::LegacyBloomBitsBuilder(const int bits_per_key,
797
+ Logger* info_log)
798
+ : bits_per_key_(bits_per_key),
799
+ num_probes_(LegacyNoLocalityBloomImpl::ChooseNumProbes(bits_per_key_)),
800
+ info_log_(info_log) {
801
+ assert(bits_per_key_);
802
+ }
803
+
804
+ LegacyBloomBitsBuilder::~LegacyBloomBitsBuilder() {}
805
+
806
+ void LegacyBloomBitsBuilder::AddKey(const Slice& key) {
807
+ uint32_t hash = BloomHash(key);
808
+ if (hash_entries_.size() == 0 || hash != hash_entries_.back()) {
809
+ hash_entries_.push_back(hash);
810
+ }
811
+ }
812
+
813
+ Slice LegacyBloomBitsBuilder::Finish(std::unique_ptr<const char[]>* buf) {
814
+ uint32_t total_bits, num_lines;
815
+ size_t num_entries = hash_entries_.size();
816
+ char* data =
817
+ ReserveSpace(static_cast<int>(num_entries), &total_bits, &num_lines);
818
+ assert(data);
819
+
820
+ if (total_bits != 0 && num_lines != 0) {
821
+ for (auto h : hash_entries_) {
822
+ AddHash(h, data, num_lines, total_bits);
823
+ }
824
+
825
+ // Check for excessive entries for 32-bit hash function
826
+ if (num_entries >= /* minimum of 3 million */ 3000000U) {
827
+ // More specifically, we can detect that the 32-bit hash function
828
+ // is causing significant increase in FP rate by comparing current
829
+ // estimated FP rate to what we would get with a normal number of
830
+ // keys at same memory ratio.
831
+ double est_fp_rate = LegacyBloomImpl::EstimatedFpRate(
832
+ num_entries, total_bits / 8, num_probes_);
833
+ double vs_fp_rate = LegacyBloomImpl::EstimatedFpRate(
834
+ 1U << 16, (1U << 16) * bits_per_key_ / 8, num_probes_);
835
+
836
+ if (est_fp_rate >= 1.50 * vs_fp_rate) {
837
+ // For more details, see
838
+ // https://github.com/facebook/rocksdb/wiki/RocksDB-Bloom-Filter
839
+ ROCKS_LOG_WARN(
840
+ info_log_,
841
+ "Using legacy SST/BBT Bloom filter with excessive key count "
842
+ "(%.1fM @ %dbpk), causing estimated %.1fx higher filter FP rate. "
843
+ "Consider using new Bloom with format_version>=5, smaller SST "
844
+ "file size, or partitioned filters.",
845
+ num_entries / 1000000.0, bits_per_key_, est_fp_rate / vs_fp_rate);
846
+ }
847
+ }
848
+ }
849
+ // See BloomFilterPolicy::GetFilterBitsReader for metadata
850
+ data[total_bits / 8] = static_cast<char>(num_probes_);
851
+ EncodeFixed32(data + total_bits / 8 + 1, static_cast<uint32_t>(num_lines));
852
+
853
+ const char* const_data = data;
854
+ buf->reset(const_data);
855
+ hash_entries_.clear();
856
+
857
+ return Slice(data, total_bits / 8 + kMetadataLen);
858
+ }
859
+
860
+ size_t LegacyBloomBitsBuilder::ApproximateNumEntries(size_t bytes) {
861
+ assert(bits_per_key_);
862
+ assert(bytes > 0);
863
+
864
+ uint64_t total_bits_tmp = bytes * 8;
865
+ // total bits, including temporary computations, cannot exceed 2^32
866
+ // for compatibility
867
+ total_bits_tmp = std::min(total_bits_tmp, uint64_t{0xffff0000});
868
+
869
+ uint32_t high = static_cast<uint32_t>(total_bits_tmp) /
870
+ static_cast<uint32_t>(bits_per_key_) +
871
+ 1;
872
+ uint32_t low = 1;
873
+ uint32_t n = high;
874
+ for (; n >= low; n--) {
875
+ if (CalculateSpace(n) <= bytes) {
876
+ break;
877
+ }
878
+ }
879
+ return n;
880
+ }
881
+
882
+ uint32_t LegacyBloomBitsBuilder::GetTotalBitsForLocality(uint32_t total_bits) {
883
+ uint32_t num_lines =
884
+ (total_bits + CACHE_LINE_SIZE * 8 - 1) / (CACHE_LINE_SIZE * 8);
885
+
886
+ // Make num_lines an odd number to make sure more bits are involved
887
+ // when determining which block.
888
+ if (num_lines % 2 == 0) {
889
+ num_lines++;
890
+ }
891
+ return num_lines * (CACHE_LINE_SIZE * 8);
892
+ }
893
+
894
+ uint32_t LegacyBloomBitsBuilder::CalculateSpace(size_t num_entries,
895
+ uint32_t* total_bits,
896
+ uint32_t* num_lines) {
897
+ assert(bits_per_key_);
898
+ if (num_entries != 0) {
899
+ size_t total_bits_tmp = num_entries * bits_per_key_;
900
+ // total bits, including temporary computations, cannot exceed 2^32
901
+ // for compatibility
902
+ total_bits_tmp = std::min(total_bits_tmp, size_t{0xffff0000});
903
+
904
+ *total_bits =
905
+ GetTotalBitsForLocality(static_cast<uint32_t>(total_bits_tmp));
906
+ *num_lines = *total_bits / (CACHE_LINE_SIZE * 8);
907
+ assert(*total_bits > 0 && *total_bits % 8 == 0);
908
+ } else {
909
+ // filter is empty, just leave space for metadata
910
+ *total_bits = 0;
911
+ *num_lines = 0;
912
+ }
913
+
914
+ // Reserve space for Filter
915
+ uint32_t sz = *total_bits / 8;
916
+ sz += kMetadataLen; // 4 bytes for num_lines, 1 byte for num_probes
917
+ return sz;
918
+ }
919
+
920
+ char* LegacyBloomBitsBuilder::ReserveSpace(size_t num_entries,
921
+ uint32_t* total_bits,
922
+ uint32_t* num_lines) {
923
+ uint32_t sz = CalculateSpace(num_entries, total_bits, num_lines);
924
+ char* data = new char[sz];
925
+ memset(data, 0, sz);
926
+ return data;
927
+ }
928
+
929
+ inline void LegacyBloomBitsBuilder::AddHash(uint32_t h, char* data,
930
+ uint32_t num_lines,
931
+ uint32_t total_bits) {
932
+ #ifdef NDEBUG
933
+ static_cast<void>(total_bits);
934
+ #endif
935
+ assert(num_lines > 0 && total_bits > 0);
936
+
937
+ LegacyBloomImpl::AddHash(h, num_lines, num_probes_, data,
938
+ folly::constexpr_log2(CACHE_LINE_SIZE));
939
+ }
940
+
941
+ class LegacyBloomBitsReader : public FilterBitsReader {
942
+ public:
943
+ LegacyBloomBitsReader(const char* data, int num_probes, uint32_t num_lines,
944
+ uint32_t log2_cache_line_size)
945
+ : data_(data),
946
+ num_probes_(num_probes),
947
+ num_lines_(num_lines),
948
+ log2_cache_line_size_(log2_cache_line_size) {}
949
+
950
+ // No Copy allowed
951
+ LegacyBloomBitsReader(const LegacyBloomBitsReader&) = delete;
952
+ void operator=(const LegacyBloomBitsReader&) = delete;
953
+
954
+ ~LegacyBloomBitsReader() override {}
955
+
956
+ // "contents" contains the data built by a preceding call to
957
+ // FilterBitsBuilder::Finish. MayMatch must return true if the key was
958
+ // passed to FilterBitsBuilder::AddKey. This method may return true or false
959
+ // if the key was not on the list, but it should aim to return false with a
960
+ // high probability.
961
+ bool MayMatch(const Slice& key) override {
962
+ uint32_t hash = BloomHash(key);
963
+ uint32_t byte_offset;
964
+ LegacyBloomImpl::PrepareHashMayMatch(
965
+ hash, num_lines_, data_, /*out*/ &byte_offset, log2_cache_line_size_);
966
+ return LegacyBloomImpl::HashMayMatchPrepared(
967
+ hash, num_probes_, data_ + byte_offset, log2_cache_line_size_);
968
+ }
969
+
970
+ virtual void MayMatch(int num_keys, Slice** keys, bool* may_match) override {
971
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> hashes;
972
+ std::array<uint32_t, MultiGetContext::MAX_BATCH_SIZE> byte_offsets;
973
+ for (int i = 0; i < num_keys; ++i) {
974
+ hashes[i] = BloomHash(*keys[i]);
975
+ LegacyBloomImpl::PrepareHashMayMatch(hashes[i], num_lines_, data_,
976
+ /*out*/ &byte_offsets[i],
977
+ log2_cache_line_size_);
978
+ }
979
+ for (int i = 0; i < num_keys; ++i) {
980
+ may_match[i] = LegacyBloomImpl::HashMayMatchPrepared(
981
+ hashes[i], num_probes_, data_ + byte_offsets[i],
982
+ log2_cache_line_size_);
983
+ }
984
+ }
985
+
986
+ private:
987
+ const char* data_;
988
+ const int num_probes_;
989
+ const uint32_t num_lines_;
990
+ const uint32_t log2_cache_line_size_;
991
+ };
992
+
993
+ class AlwaysTrueFilter : public FilterBitsReader {
994
+ public:
995
+ bool MayMatch(const Slice&) override { return true; }
996
+ using FilterBitsReader::MayMatch; // inherit overload
997
+ };
998
+
999
+ class AlwaysFalseFilter : public FilterBitsReader {
1000
+ public:
1001
+ bool MayMatch(const Slice&) override { return false; }
1002
+ using FilterBitsReader::MayMatch; // inherit overload
1003
+ };
1004
+
1005
+ } // namespace
1006
+
1007
+ const std::vector<BloomFilterPolicy::Mode> BloomFilterPolicy::kAllFixedImpls = {
1008
+ kLegacyBloom,
1009
+ kDeprecatedBlock,
1010
+ kFastLocalBloom,
1011
+ kStandard128Ribbon,
1012
+ };
1013
+
1014
+ const std::vector<BloomFilterPolicy::Mode> BloomFilterPolicy::kAllUserModes = {
1015
+ kDeprecatedBlock,
1016
+ kAutoBloom,
1017
+ kStandard128Ribbon,
1018
+ };
1019
+
1020
+ BloomFilterPolicy::BloomFilterPolicy(double bits_per_key, Mode mode)
1021
+ : mode_(mode), warned_(false), aggregate_rounding_balance_(0) {
1022
+ // Sanitize bits_per_key
1023
+ if (bits_per_key < 1.0) {
1024
+ bits_per_key = 1.0;
1025
+ } else if (!(bits_per_key < 100.0)) { // including NaN
1026
+ bits_per_key = 100.0;
1027
+ }
1028
+
1029
+ // Includes a nudge toward rounding up, to ensure on all platforms
1030
+ // that doubles specified with three decimal digits after the decimal
1031
+ // point are interpreted accurately.
1032
+ millibits_per_key_ = static_cast<int>(bits_per_key * 1000.0 + 0.500001);
1033
+
1034
+ // For now configure Ribbon filter to match Bloom FP rate and save
1035
+ // memory. (Ribbon bits per key will be ~30% less than Bloom bits per key
1036
+ // for same FP rate.)
1037
+ desired_one_in_fp_rate_ =
1038
+ 1.0 / BloomMath::CacheLocalFpRate(
1039
+ bits_per_key,
1040
+ FastLocalBloomImpl::ChooseNumProbes(millibits_per_key_),
1041
+ /*cache_line_bits*/ 512);
1042
+
1043
+ // For better or worse, this is a rounding up of a nudged rounding up,
1044
+ // e.g. 7.4999999999999 will round up to 8, but that provides more
1045
+ // predictability against small arithmetic errors in floating point.
1046
+ whole_bits_per_key_ = (millibits_per_key_ + 500) / 1000;
1047
+ }
1048
+
1049
+ BloomFilterPolicy::~BloomFilterPolicy() {}
1050
+
1051
+ const char* BloomFilterPolicy::Name() const {
1052
+ return "rocksdb.BuiltinBloomFilter";
1053
+ }
1054
+
1055
+ void BloomFilterPolicy::CreateFilter(const Slice* keys, int n,
1056
+ std::string* dst) const {
1057
+ // We should ideally only be using this deprecated interface for
1058
+ // appropriately constructed BloomFilterPolicy
1059
+ assert(mode_ == kDeprecatedBlock);
1060
+
1061
+ // Compute bloom filter size (in both bits and bytes)
1062
+ uint32_t bits = static_cast<uint32_t>(n * whole_bits_per_key_);
1063
+
1064
+ // For small n, we can see a very high false positive rate. Fix it
1065
+ // by enforcing a minimum bloom filter length.
1066
+ if (bits < 64) bits = 64;
1067
+
1068
+ uint32_t bytes = (bits + 7) / 8;
1069
+ bits = bytes * 8;
1070
+
1071
+ int num_probes =
1072
+ LegacyNoLocalityBloomImpl::ChooseNumProbes(whole_bits_per_key_);
1073
+
1074
+ const size_t init_size = dst->size();
1075
+ dst->resize(init_size + bytes, 0);
1076
+ dst->push_back(static_cast<char>(num_probes)); // Remember # of probes
1077
+ char* array = &(*dst)[init_size];
1078
+ for (int i = 0; i < n; i++) {
1079
+ LegacyNoLocalityBloomImpl::AddHash(BloomHash(keys[i]), bits, num_probes,
1080
+ array);
1081
+ }
1082
+ }
1083
+
1084
+ bool BloomFilterPolicy::KeyMayMatch(const Slice& key,
1085
+ const Slice& bloom_filter) const {
1086
+ const size_t len = bloom_filter.size();
1087
+ if (len < 2 || len > 0xffffffffU) {
1088
+ return false;
1089
+ }
1090
+
1091
+ const char* array = bloom_filter.data();
1092
+ const uint32_t bits = static_cast<uint32_t>(len - 1) * 8;
1093
+
1094
+ // Use the encoded k so that we can read filters generated by
1095
+ // bloom filters created using different parameters.
1096
+ const int k = static_cast<uint8_t>(array[len - 1]);
1097
+ if (k > 30) {
1098
+ // Reserved for potentially new encodings for short bloom filters.
1099
+ // Consider it a match.
1100
+ return true;
1101
+ }
1102
+ // NB: using stored k not num_probes for whole_bits_per_key_
1103
+ return LegacyNoLocalityBloomImpl::HashMayMatch(BloomHash(key), bits, k,
1104
+ array);
1105
+ }
1106
+
1107
+ FilterBitsBuilder* BloomFilterPolicy::GetFilterBitsBuilder() const {
1108
+ // This code path should no longer be used, for the built-in
1109
+ // BloomFilterPolicy. Internal to RocksDB and outside
1110
+ // BloomFilterPolicy, only get a FilterBitsBuilder with
1111
+ // BloomFilterPolicy::GetBuilderFromContext(), which will call
1112
+ // BloomFilterPolicy::GetBuilderWithContext(). RocksDB users have
1113
+ // been warned (HISTORY.md) that they can no longer call this on
1114
+ // the built-in BloomFilterPolicy (unlikely).
1115
+ assert(false);
1116
+ return GetBuilderWithContext(FilterBuildingContext(BlockBasedTableOptions()));
1117
+ }
1118
+
1119
+ FilterBitsBuilder* BloomFilterPolicy::GetBuilderWithContext(
1120
+ const FilterBuildingContext& context) const {
1121
+ Mode cur = mode_;
1122
+ bool offm = context.table_options.optimize_filters_for_memory;
1123
+ // Unusual code construction so that we can have just
1124
+ // one exhaustive switch without (risky) recursion
1125
+ for (int i = 0; i < 2; ++i) {
1126
+ switch (cur) {
1127
+ case kAutoBloom:
1128
+ if (context.table_options.format_version < 5) {
1129
+ cur = kLegacyBloom;
1130
+ } else {
1131
+ cur = kFastLocalBloom;
1132
+ }
1133
+ break;
1134
+ case kDeprecatedBlock:
1135
+ return nullptr;
1136
+ case kFastLocalBloom:
1137
+ return new FastLocalBloomBitsBuilder(
1138
+ millibits_per_key_, offm ? &aggregate_rounding_balance_ : nullptr);
1139
+ case kLegacyBloom:
1140
+ if (whole_bits_per_key_ >= 14 && context.info_log &&
1141
+ !warned_.load(std::memory_order_relaxed)) {
1142
+ warned_ = true;
1143
+ const char* adjective;
1144
+ if (whole_bits_per_key_ >= 20) {
1145
+ adjective = "Dramatic";
1146
+ } else {
1147
+ adjective = "Significant";
1148
+ }
1149
+ // For more details, see
1150
+ // https://github.com/facebook/rocksdb/wiki/RocksDB-Bloom-Filter
1151
+ ROCKS_LOG_WARN(
1152
+ context.info_log,
1153
+ "Using legacy Bloom filter with high (%d) bits/key. "
1154
+ "%s filter space and/or accuracy improvement is available "
1155
+ "with format_version>=5.",
1156
+ whole_bits_per_key_, adjective);
1157
+ }
1158
+ return new LegacyBloomBitsBuilder(whole_bits_per_key_,
1159
+ context.info_log);
1160
+ case kStandard128Ribbon:
1161
+ return new Standard128RibbonBitsBuilder(
1162
+ desired_one_in_fp_rate_, millibits_per_key_,
1163
+ offm ? &aggregate_rounding_balance_ : nullptr, context.info_log);
1164
+ }
1165
+ }
1166
+ assert(false);
1167
+ return nullptr; // something legal
1168
+ }
1169
+
1170
+ FilterBitsBuilder* BloomFilterPolicy::GetBuilderFromContext(
1171
+ const FilterBuildingContext& context) {
1172
+ if (context.table_options.filter_policy) {
1173
+ return context.table_options.filter_policy->GetBuilderWithContext(context);
1174
+ } else {
1175
+ return nullptr;
1176
+ }
1177
+ }
1178
+
1179
+ // Read metadata to determine what kind of FilterBitsReader is needed
1180
+ // and return a new one.
1181
+ FilterBitsReader* BloomFilterPolicy::GetFilterBitsReader(
1182
+ const Slice& contents) const {
1183
+ uint32_t len_with_meta = static_cast<uint32_t>(contents.size());
1184
+ if (len_with_meta <= kMetadataLen) {
1185
+ // filter is empty or broken. Treat like zero keys added.
1186
+ return new AlwaysFalseFilter();
1187
+ }
1188
+
1189
+ // Legacy Bloom filter data:
1190
+ // 0 +-----------------------------------+
1191
+ // | Raw Bloom filter data |
1192
+ // | ... |
1193
+ // len +-----------------------------------+
1194
+ // | byte for num_probes or |
1195
+ // | marker for new implementations |
1196
+ // len+1 +-----------------------------------+
1197
+ // | four bytes for number of cache |
1198
+ // | lines |
1199
+ // len_with_meta +-----------------------------------+
1200
+
1201
+ int8_t raw_num_probes =
1202
+ static_cast<int8_t>(contents.data()[len_with_meta - kMetadataLen]);
1203
+ // NB: *num_probes > 30 and < 128 probably have not been used, because of
1204
+ // BloomFilterPolicy::initialize, unless directly calling
1205
+ // LegacyBloomBitsBuilder as an API, but we are leaving those cases in
1206
+ // limbo with LegacyBloomBitsReader for now.
1207
+
1208
+ if (raw_num_probes < 1) {
1209
+ // Note: < 0 (or unsigned > 127) indicate special new implementations
1210
+ // (or reserved for future use)
1211
+ switch (raw_num_probes) {
1212
+ case 0:
1213
+ // Treat as zero probes (always FP)
1214
+ return new AlwaysTrueFilter();
1215
+ case -1:
1216
+ // Marker for newer Bloom implementations
1217
+ return GetBloomBitsReader(contents);
1218
+ case -2:
1219
+ // Marker for Ribbon implementations
1220
+ return GetRibbonBitsReader(contents);
1221
+ default:
1222
+ // Reserved (treat as zero probes, always FP, for now)
1223
+ return new AlwaysTrueFilter();
1224
+ }
1225
+ }
1226
+ // else attempt decode for LegacyBloomBitsReader
1227
+
1228
+ int num_probes = raw_num_probes;
1229
+ assert(num_probes >= 1);
1230
+ assert(num_probes <= 127);
1231
+
1232
+ uint32_t len = len_with_meta - kMetadataLen;
1233
+ assert(len > 0);
1234
+
1235
+ uint32_t num_lines = DecodeFixed32(contents.data() + len_with_meta - 4);
1236
+ uint32_t log2_cache_line_size;
1237
+
1238
+ if (num_lines * CACHE_LINE_SIZE == len) {
1239
+ // Common case
1240
+ log2_cache_line_size = folly::constexpr_log2(CACHE_LINE_SIZE);
1241
+ } else if (num_lines == 0 || len % num_lines != 0) {
1242
+ // Invalid (no solution to num_lines * x == len)
1243
+ // Treat as zero probes (always FP) for now.
1244
+ return new AlwaysTrueFilter();
1245
+ } else {
1246
+ // Determine the non-native cache line size (from another system)
1247
+ log2_cache_line_size = 0;
1248
+ while ((num_lines << log2_cache_line_size) < len) {
1249
+ ++log2_cache_line_size;
1250
+ }
1251
+ if ((num_lines << log2_cache_line_size) != len) {
1252
+ // Invalid (block size not a power of two)
1253
+ // Treat as zero probes (always FP) for now.
1254
+ return new AlwaysTrueFilter();
1255
+ }
1256
+ }
1257
+ // if not early return
1258
+ return new LegacyBloomBitsReader(contents.data(), num_probes, num_lines,
1259
+ log2_cache_line_size);
1260
+ }
1261
+
1262
+ FilterBitsReader* BloomFilterPolicy::GetRibbonBitsReader(
1263
+ const Slice& contents) const {
1264
+ uint32_t len_with_meta = static_cast<uint32_t>(contents.size());
1265
+ uint32_t len = len_with_meta - kMetadataLen;
1266
+
1267
+ assert(len > 0); // precondition
1268
+
1269
+ uint32_t seed = static_cast<uint8_t>(contents.data()[len + 1]);
1270
+ uint32_t num_blocks = static_cast<uint8_t>(contents.data()[len + 2]);
1271
+ num_blocks |= static_cast<uint8_t>(contents.data()[len + 3]) << 8;
1272
+ num_blocks |= static_cast<uint8_t>(contents.data()[len + 4]) << 16;
1273
+ if (num_blocks < 2) {
1274
+ // Not supported
1275
+ // num_blocks == 1 is not used because num_starts == 1 is problematic
1276
+ // for the hashing scheme. num_blocks == 0 is unused because there's
1277
+ // already a concise encoding of an "always false" filter.
1278
+ // Return something safe:
1279
+ return new AlwaysTrueFilter();
1280
+ }
1281
+ return new Standard128RibbonBitsReader(contents.data(), len, num_blocks,
1282
+ seed);
1283
+ }
1284
+
1285
+ // For newer Bloom filter implementations
1286
+ FilterBitsReader* BloomFilterPolicy::GetBloomBitsReader(
1287
+ const Slice& contents) const {
1288
+ uint32_t len_with_meta = static_cast<uint32_t>(contents.size());
1289
+ uint32_t len = len_with_meta - kMetadataLen;
1290
+
1291
+ assert(len > 0); // precondition
1292
+
1293
+ // New Bloom filter data:
1294
+ // 0 +-----------------------------------+
1295
+ // | Raw Bloom filter data |
1296
+ // | ... |
1297
+ // len +-----------------------------------+
1298
+ // | char{-1} byte -> new Bloom filter |
1299
+ // len+1 +-----------------------------------+
1300
+ // | byte for subimplementation |
1301
+ // | 0: FastLocalBloom |
1302
+ // | other: reserved |
1303
+ // len+2 +-----------------------------------+
1304
+ // | byte for block_and_probes |
1305
+ // | 0 in top 3 bits -> 6 -> 64-byte |
1306
+ // | reserved: |
1307
+ // | 1 in top 3 bits -> 7 -> 128-byte|
1308
+ // | 2 in top 3 bits -> 8 -> 256-byte|
1309
+ // | ... |
1310
+ // | num_probes in bottom 5 bits, |
1311
+ // | except 0 and 31 reserved |
1312
+ // len+3 +-----------------------------------+
1313
+ // | two bytes reserved |
1314
+ // | possibly for hash seed |
1315
+ // len_with_meta +-----------------------------------+
1316
+
1317
+ // Read more metadata (see above)
1318
+ char sub_impl_val = contents.data()[len_with_meta - 4];
1319
+ char block_and_probes = contents.data()[len_with_meta - 3];
1320
+ int log2_block_bytes = ((block_and_probes >> 5) & 7) + 6;
1321
+
1322
+ int num_probes = (block_and_probes & 31);
1323
+ if (num_probes < 1 || num_probes > 30) {
1324
+ // Reserved / future safe
1325
+ return new AlwaysTrueFilter();
1326
+ }
1327
+
1328
+ uint16_t rest = DecodeFixed16(contents.data() + len_with_meta - 2);
1329
+ if (rest != 0) {
1330
+ // Reserved, possibly for hash seed
1331
+ // Future safe
1332
+ return new AlwaysTrueFilter();
1333
+ }
1334
+
1335
+ if (sub_impl_val == 0) { // FastLocalBloom
1336
+ if (log2_block_bytes == 6) { // Only block size supported for now
1337
+ return new FastLocalBloomBitsReader(contents.data(), num_probes, len);
1338
+ }
1339
+ }
1340
+ // otherwise
1341
+ // Reserved / future safe
1342
+ return new AlwaysTrueFilter();
1343
+ }
1344
+
1345
+ const FilterPolicy* NewBloomFilterPolicy(double bits_per_key,
1346
+ bool use_block_based_builder) {
1347
+ BloomFilterPolicy::Mode m;
1348
+ if (use_block_based_builder) {
1349
+ m = BloomFilterPolicy::kDeprecatedBlock;
1350
+ } else {
1351
+ m = BloomFilterPolicy::kAutoBloom;
1352
+ }
1353
+ assert(std::find(BloomFilterPolicy::kAllUserModes.begin(),
1354
+ BloomFilterPolicy::kAllUserModes.end(),
1355
+ m) != BloomFilterPolicy::kAllUserModes.end());
1356
+ return new BloomFilterPolicy(bits_per_key, m);
1357
+ }
1358
+
1359
+ extern const FilterPolicy* NewExperimentalRibbonFilterPolicy(
1360
+ double bloom_equivalent_bits_per_key) {
1361
+ return new BloomFilterPolicy(bloom_equivalent_bits_per_key,
1362
+ BloomFilterPolicy::kStandard128Ribbon);
1363
+ }
1364
+
1365
+ FilterBuildingContext::FilterBuildingContext(
1366
+ const BlockBasedTableOptions& _table_options)
1367
+ : table_options(_table_options) {}
1368
+
1369
+ FilterPolicy::~FilterPolicy() { }
1370
+
1371
+ Status FilterPolicy::CreateFromString(
1372
+ const ConfigOptions& /*options*/, const std::string& value,
1373
+ std::shared_ptr<const FilterPolicy>* policy) {
1374
+ const std::string kBloomName = "bloomfilter:";
1375
+ const std::string kExpRibbonName = "experimental_ribbon:";
1376
+ if (value == kNullptrString || value == "rocksdb.BuiltinBloomFilter") {
1377
+ policy->reset();
1378
+ #ifndef ROCKSDB_LITE
1379
+ } else if (value.compare(0, kBloomName.size(), kBloomName) == 0) {
1380
+ size_t pos = value.find(':', kBloomName.size());
1381
+ if (pos == std::string::npos) {
1382
+ return Status::InvalidArgument(
1383
+ "Invalid filter policy config, missing bits_per_key");
1384
+ } else {
1385
+ double bits_per_key = ParseDouble(
1386
+ trim(value.substr(kBloomName.size(), pos - kBloomName.size())));
1387
+ bool use_block_based_builder =
1388
+ ParseBoolean("use_block_based_builder", trim(value.substr(pos + 1)));
1389
+ policy->reset(
1390
+ NewBloomFilterPolicy(bits_per_key, use_block_based_builder));
1391
+ }
1392
+ } else if (value.compare(0, kExpRibbonName.size(), kExpRibbonName) == 0) {
1393
+ double bloom_equivalent_bits_per_key =
1394
+ ParseDouble(trim(value.substr(kExpRibbonName.size())));
1395
+ policy->reset(
1396
+ NewExperimentalRibbonFilterPolicy(bloom_equivalent_bits_per_key));
1397
+ } else {
1398
+ return Status::NotFound("Invalid filter policy name ", value);
1399
+ #else
1400
+ } else {
1401
+ return Status::NotSupported("Cannot load filter policy in LITE mode ",
1402
+ value);
1403
+ #endif // ROCKSDB_LITE
1404
+ }
1405
+ return Status::OK();
1406
+ }
1407
+ } // namespace ROCKSDB_NAMESPACE