@nxtedition/rocksdb 13.5.7 → 13.5.9

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 (509) hide show
  1. package/binding.cc +248 -70
  2. package/binding.gyp +2 -2
  3. package/deps/rocksdb/rocksdb/BUCK +12 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  5. package/deps/rocksdb/rocksdb/Makefile +28 -23
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  15. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  16. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  18. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  26. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  27. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  28. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  29. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  31. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  32. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  33. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  59. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  60. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  61. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  62. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  63. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  64. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  65. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  66. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  67. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  68. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  69. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  70. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  71. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  73. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  87. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  88. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  89. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  90. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  91. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  92. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  93. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  94. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  95. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  96. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  97. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  98. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  99. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  100. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  101. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  102. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  104. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  105. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  106. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  107. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  108. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  109. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  110. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  111. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  112. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  113. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  114. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  115. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  116. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  117. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  118. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  119. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  120. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  124. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  125. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  126. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  127. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  129. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  130. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  131. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  132. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  133. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  134. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  135. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  136. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  137. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  138. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  139. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  140. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  141. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  142. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  143. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  144. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  145. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  146. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  147. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  148. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  149. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  150. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  153. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  154. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  155. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  156. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  157. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  158. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  160. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  161. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  163. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  164. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  165. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  166. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  168. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  169. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  170. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  171. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  172. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  173. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  174. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  175. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  176. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  177. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  178. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  180. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  181. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  182. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  191. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  193. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  194. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  195. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  196. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  198. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  199. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  200. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  201. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  202. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  204. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  205. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  206. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  207. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  210. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  212. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  213. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  214. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  215. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  218. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  220. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  221. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  224. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  226. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  228. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  229. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  230. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  232. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  234. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  235. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  238. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  241. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  242. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  243. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  245. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  249. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  253. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  254. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  256. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  257. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  258. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  260. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  269. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  270. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  276. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  277. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  278. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  279. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  281. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  283. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  284. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  285. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  286. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  288. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  289. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  290. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  291. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  292. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  293. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  294. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  295. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  296. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  297. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  298. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  299. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  300. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  301. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  302. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  303. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  304. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  305. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  306. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  307. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  308. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  309. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  310. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  311. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  312. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  314. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  315. package/deps/rocksdb/rocksdb/src.mk +17 -11
  316. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  325. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  327. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  328. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  329. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  330. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  334. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  335. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  338. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  340. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  342. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  343. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  345. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  349. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  350. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  351. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  352. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  353. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  354. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  356. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  357. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  362. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  364. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  366. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  367. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  368. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  369. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  370. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  371. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  372. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  374. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  376. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  377. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  380. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  381. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  382. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  384. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  385. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  386. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  388. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  391. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  393. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  395. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  396. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  397. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  398. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  399. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  400. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  401. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  402. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  403. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  404. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  405. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  406. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  408. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  409. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  416. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  426. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  428. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  430. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  433. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  435. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  436. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  437. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  439. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  442. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  443. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  458. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  464. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  467. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  468. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  479. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  482. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  485. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  486. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  499. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  500. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  504. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  505. package/deps/rocksdb/rocksdb.gyp +9 -4
  506. package/index.js +50 -9
  507. package/package.json +8 -1
  508. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  509. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -62,6 +62,7 @@
62
62
  #include "rocksdb/slice_transform.h"
63
63
  #include "rocksdb/stats_history.h"
64
64
  #include "rocksdb/table.h"
65
+ #include "rocksdb/tool_hooks.h"
65
66
  #include "rocksdb/utilities/backup_engine.h"
66
67
  #include "rocksdb/utilities/object_registry.h"
67
68
  #include "rocksdb/utilities/optimistic_transaction_db.h"
@@ -82,6 +83,7 @@
82
83
  #include "util/gflags_compat.h"
83
84
  #include "util/mutexlock.h"
84
85
  #include "util/random.h"
86
+ #include "util/simple_mixed_compressor.h"
85
87
  #include "util/stderr_logger.h"
86
88
  #include "util/string_util.h"
87
89
  #include "util/xxhash.h"
@@ -91,7 +93,6 @@
91
93
  #include "utilities/merge_operators/bytesxor.h"
92
94
  #include "utilities/merge_operators/sortlist.h"
93
95
  #include "utilities/persistent_cache/block_cache_tier.h"
94
-
95
96
  #ifdef MEMKIND
96
97
  #include "memory/memkind_kmem_allocator.h"
97
98
  #endif
@@ -458,20 +459,6 @@ DEFINE_int32(min_write_buffer_number_to_merge,
458
459
  " writing less data to storage if there are duplicate records "
459
460
  " in each of these individual write buffers.");
460
461
 
461
- DEFINE_int32(max_write_buffer_number_to_maintain,
462
- ROCKSDB_NAMESPACE::Options().max_write_buffer_number_to_maintain,
463
- "The total maximum number of write buffers to maintain in memory "
464
- "including copies of buffers that have already been flushed. "
465
- "Unlike max_write_buffer_number, this parameter does not affect "
466
- "flushing. This controls the minimum amount of write history "
467
- "that will be available in memory for conflict checking when "
468
- "Transactions are used. If this value is too low, some "
469
- "transactions may fail at commit time due to not being able to "
470
- "determine whether there were any write conflicts. Setting this "
471
- "value to 0 will cause write buffers to be freed immediately "
472
- "after they are flushed. If this value is set to -1, "
473
- "'max_write_buffer_number' will be used.");
474
-
475
462
  DEFINE_int64(max_write_buffer_size_to_maintain,
476
463
  ROCKSDB_NAMESPACE::Options().max_write_buffer_size_to_maintain,
477
464
  "The total maximum size of write buffers to maintain in memory "
@@ -609,6 +596,9 @@ static enum ROCKSDB_NAMESPACE::CompressionType
609
596
  FLAGS_compressed_secondary_cache_compression_type_e =
610
597
  ROCKSDB_NAMESPACE::kLZ4Compression;
611
598
 
599
+ DEFINE_string(compression_manager, "none",
600
+ "Set the compression manager type to mixed(roundrobin) or other "
601
+ "type. None for BuilInCompressor");
612
602
  DEFINE_int32(compressed_secondary_cache_compression_level,
613
603
  ROCKSDB_NAMESPACE::CompressionOptions().level,
614
604
  "Compression level. The meaning of this value is library-"
@@ -761,9 +751,6 @@ DEFINE_uint64(compaction_readahead_size,
761
751
 
762
752
  DEFINE_int32(log_readahead_size, 0, "WAL and manifest readahead size");
763
753
 
764
- DEFINE_int32(random_access_max_buffer_size, 1024 * 1024,
765
- "Maximum windows randomaccess buffer size");
766
-
767
754
  DEFINE_int32(writable_file_max_buffer_size, 1024 * 1024,
768
755
  "Maximum write buffer for Writable File");
769
756
 
@@ -1075,7 +1062,6 @@ DEFINE_string(
1075
1062
  static enum ROCKSDB_NAMESPACE::CompressionType
1076
1063
  FLAGS_blob_db_compression_type_e = ROCKSDB_NAMESPACE::kSnappyCompression;
1077
1064
 
1078
-
1079
1065
  // Integrated BlobDB options
1080
1066
  DEFINE_bool(
1081
1067
  enable_blob_files,
@@ -1146,7 +1132,6 @@ DEFINE_int32(prepopulate_blob_cache, 0,
1146
1132
  "[Integrated BlobDB] Pre-populate hot/warm blobs in blob cache. 0 "
1147
1133
  "to disable and 1 to insert during flush.");
1148
1134
 
1149
-
1150
1135
  // Secondary DB instance Options
1151
1136
  DEFINE_bool(use_secondary_db, false,
1152
1137
  "Open a RocksDB secondary instance. A primary instance can be "
@@ -1172,7 +1157,6 @@ DEFINE_bool(report_bg_io_stats, false,
1172
1157
  DEFINE_bool(use_stderr_info_logger, false,
1173
1158
  "Write info logs to stderr instead of to LOG file. ");
1174
1159
 
1175
-
1176
1160
  DEFINE_string(trace_file, "", "Trace workload to a file. ");
1177
1161
 
1178
1162
  DEFINE_double(trace_replay_fast_forward, 1.0,
@@ -1289,6 +1273,23 @@ DEFINE_bool(
1289
1273
  DEFINE_bool(paranoid_memory_checks, false,
1290
1274
  "Sets CF option paranoid_memory_checks");
1291
1275
 
1276
+ DEFINE_bool(
1277
+ auto_refresh_iterator_with_snapshot, false,
1278
+ "When set to true, RocksDB iterator will automatically refresh itself "
1279
+ "upon detecting stale superversion - preserving its' original snapshot");
1280
+
1281
+ DEFINE_bool(explicit_snapshot, false,
1282
+ "When set to true iterators will be initialized with explicit "
1283
+ "snapshot");
1284
+
1285
+ DEFINE_uint32(memtable_op_scan_flush_trigger,
1286
+ ROCKSDB_NAMESPACE::AdvancedColumnFamilyOptions()
1287
+ .memtable_op_scan_flush_trigger,
1288
+ "Setting for CF option memtable_op_scan_flush_trigger.");
1289
+
1290
+ DEFINE_bool(verify_compression, false,
1291
+ "See BlockBasedTableOptions::verify_compression");
1292
+
1292
1293
  static enum ROCKSDB_NAMESPACE::CompressionType StringToCompressionType(
1293
1294
  const char* ctype) {
1294
1295
  assert(ctype);
@@ -1729,6 +1730,10 @@ DEFINE_uint64(stats_history_buffer_size,
1729
1730
  DEFINE_bool(avoid_flush_during_recovery,
1730
1731
  ROCKSDB_NAMESPACE::Options().avoid_flush_during_recovery,
1731
1732
  "If true, avoids flushing the recovered WAL data where possible.");
1733
+
1734
+ DEFINE_bool(avoid_flush_during_shutdown,
1735
+ ROCKSDB_NAMESPACE::Options().avoid_flush_during_shutdown,
1736
+ "If true, avoids flushing the recovered WAL data where possible.");
1732
1737
  DEFINE_int64(multiread_stride, 0,
1733
1738
  "Stride length for the keys in a MultiGet batch");
1734
1739
  DEFINE_bool(multiread_batched, false, "Use the new MultiGet API");
@@ -1811,6 +1816,17 @@ DEFINE_bool(build_info, false,
1811
1816
  DEFINE_bool(track_and_verify_wals_in_manifest, false,
1812
1817
  "If true, enable WAL tracking in the MANIFEST");
1813
1818
 
1819
+ DEFINE_bool(track_and_verify_wals, false, "See Options.track_and_verify_wals");
1820
+
1821
+ DEFINE_int32(same_value_percentage, 0,
1822
+ "Percentage of time value will be same i.e good for compression "
1823
+ "of the block");
1824
+
1825
+ DEFINE_bool(universal_reduce_file_locking,
1826
+ ROCKSDB_NAMESPACE::Options()
1827
+ .compaction_options_universal.reduce_file_locking,
1828
+ "See Options().compaction_options_universal.reduce_file_locking");
1829
+
1814
1830
  namespace ROCKSDB_NAMESPACE {
1815
1831
  namespace {
1816
1832
  static Status CreateMemTableRepFactory(
@@ -1931,9 +1947,10 @@ class RandomGenerator {
1931
1947
  std::string data_;
1932
1948
  unsigned int pos_;
1933
1949
  std::unique_ptr<BaseDistribution> dist_;
1950
+ Random rnd;
1934
1951
 
1935
1952
  public:
1936
- RandomGenerator() {
1953
+ RandomGenerator() : rnd(301) {
1937
1954
  auto max_value_size = FLAGS_value_size_max;
1938
1955
  switch (FLAGS_value_size_distribution_type_e) {
1939
1956
  case kUniform:
@@ -1952,7 +1969,6 @@ class RandomGenerator {
1952
1969
  // We use a limited amount of data over and over again and ensure
1953
1970
  // that it is larger than the compression window (32KB), and also
1954
1971
  // large enough to serve all typical value sizes we want to write.
1955
- Random rnd(301);
1956
1972
  std::string piece;
1957
1973
  while (data_.size() < (unsigned)std::max(1048576, max_value_size)) {
1958
1974
  // Add a short fragment that is as compressible as specified
@@ -1965,11 +1981,15 @@ class RandomGenerator {
1965
1981
 
1966
1982
  Slice Generate(unsigned int len) {
1967
1983
  assert(len <= data_.size());
1968
- if (pos_ + len > data_.size()) {
1969
- pos_ = 0;
1984
+ if (rnd.PercentTrue(FLAGS_same_value_percentage)) {
1985
+ return Slice(data_.data(), len);
1986
+ } else {
1987
+ if (pos_ + len > data_.size()) {
1988
+ pos_ = 0;
1989
+ }
1990
+ pos_ += len;
1991
+ return Slice(data_.data() + pos_ - len, len);
1970
1992
  }
1971
- pos_ += len;
1972
- return Slice(data_.data() + pos_ - len, len);
1973
1993
  }
1974
1994
 
1975
1995
  Slice Generate() {
@@ -2001,11 +2021,7 @@ struct DBWithColumnFamilies {
2001
2021
  std::vector<int> cfh_idx_to_prob; // ith index holds probability of operating
2002
2022
  // on cfh[i].
2003
2023
 
2004
- DBWithColumnFamilies()
2005
- : db(nullptr)
2006
- ,
2007
- opt_txn_db(nullptr)
2008
- {
2024
+ DBWithColumnFamilies() : db(nullptr), opt_txn_db(nullptr) {
2009
2025
  cfh.clear();
2010
2026
  num_created = 0;
2011
2027
  num_hot = 0;
@@ -2017,8 +2033,7 @@ struct DBWithColumnFamilies {
2017
2033
  opt_txn_db(other.opt_txn_db),
2018
2034
  num_created(other.num_created.load()),
2019
2035
  num_hot(other.num_hot),
2020
- cfh_idx_to_prob(other.cfh_idx_to_prob) {
2021
- }
2036
+ cfh_idx_to_prob(other.cfh_idx_to_prob) {}
2022
2037
 
2023
2038
  void DeleteDBs() {
2024
2039
  std::for_each(cfh.begin(), cfh.end(),
@@ -2838,8 +2853,8 @@ class Benchmark {
2838
2853
  const Slice& input, std::string* compressed) {
2839
2854
  constexpr uint32_t compress_format_version = 2;
2840
2855
 
2841
- return CompressData(input, compression_info, compress_format_version,
2842
- compressed);
2856
+ return OLD_CompressData(input, compression_info, compress_format_version,
2857
+ compressed);
2843
2858
  }
2844
2859
 
2845
2860
  void PrintHeader(const Options& options) {
@@ -2889,8 +2904,15 @@ class Benchmark {
2889
2904
  }
2890
2905
  #endif
2891
2906
  }
2892
-
2893
- auto compression = CompressionTypeToString(FLAGS_compression_type_e);
2907
+ // mixed compression manager expect compression type to be expliciltiy
2908
+ // configured through Options to be zstd
2909
+ auto compression = std::string("zstd");
2910
+ if (!strcasecmp(FLAGS_compression_manager.c_str(), "none")) {
2911
+ compression = CompressionTypeToString(FLAGS_compression_type_e);
2912
+ } else {
2913
+ fprintf(stdout, "Compression manager: %s\n",
2914
+ FLAGS_compression_manager.c_str());
2915
+ }
2894
2916
  fprintf(stdout, "Compression: %s\n", compression.c_str());
2895
2917
  fprintf(stdout, "Compression sampling rate: %" PRId64 "\n",
2896
2918
  FLAGS_sample_for_compression);
@@ -2922,8 +2944,7 @@ class Benchmark {
2922
2944
  CompressionOptions opts;
2923
2945
  CompressionContext context(FLAGS_compression_type_e, opts);
2924
2946
  CompressionInfo info(opts, context, CompressionDict::GetEmptyDict(),
2925
- FLAGS_compression_type_e,
2926
- FLAGS_sample_for_compression);
2947
+ FLAGS_compression_type_e);
2927
2948
  bool result = CompressSlice(info, Slice(input_str), &compressed);
2928
2949
 
2929
2950
  if (!result) {
@@ -3457,11 +3478,11 @@ class Benchmark {
3457
3478
  exit(1);
3458
3479
  }
3459
3480
 
3460
- void Run() {
3481
+ void Run(ToolHooks& hooks) {
3461
3482
  if (!SanityCheck()) {
3462
3483
  ErrorExit();
3463
3484
  }
3464
- Open(&open_options_);
3485
+ Open(&open_options_, hooks);
3465
3486
  PrintHeader(open_options_);
3466
3487
  std::stringstream benchmark_stream(FLAGS_benchmarks);
3467
3488
  std::string name;
@@ -3498,6 +3519,8 @@ class Benchmark {
3498
3519
  read_options_.async_io = FLAGS_async_io;
3499
3520
  read_options_.optimize_multiget_for_io = FLAGS_optimize_multiget_for_io;
3500
3521
  read_options_.auto_readahead_size = FLAGS_auto_readahead_size;
3522
+ read_options_.auto_refresh_iterator_with_snapshot =
3523
+ FLAGS_auto_refresh_iterator_with_snapshot;
3501
3524
 
3502
3525
  void (Benchmark::*method)(ThreadState*) = nullptr;
3503
3526
  void (Benchmark::*post_process_method)() = nullptr;
@@ -3803,7 +3826,7 @@ class Benchmark {
3803
3826
  }
3804
3827
  multi_dbs_.clear();
3805
3828
  }
3806
- Open(&open_options_); // use open_options for the last accessed
3829
+ Open(&open_options_, hooks); // use open_options for the last accessed
3807
3830
  }
3808
3831
 
3809
3832
  if (method != nullptr) {
@@ -4141,8 +4164,7 @@ class Benchmark {
4141
4164
  opts.level = FLAGS_compression_level;
4142
4165
  CompressionContext context(FLAGS_compression_type_e, opts);
4143
4166
  CompressionInfo info(opts, context, CompressionDict::GetEmptyDict(),
4144
- FLAGS_compression_type_e,
4145
- FLAGS_sample_for_compression);
4167
+ FLAGS_compression_type_e);
4146
4168
  // Compress 1G
4147
4169
  while (ok && bytes < int64_t(1) << 30) {
4148
4170
  compressed.clear();
@@ -4172,9 +4194,9 @@ class Benchmark {
4172
4194
  compression_opts.level = FLAGS_compression_level;
4173
4195
  CompressionContext compression_ctx(FLAGS_compression_type_e,
4174
4196
  compression_opts);
4175
- CompressionInfo compression_info(
4176
- compression_opts, compression_ctx, CompressionDict::GetEmptyDict(),
4177
- FLAGS_compression_type_e, FLAGS_sample_for_compression);
4197
+ CompressionInfo compression_info(compression_opts, compression_ctx,
4198
+ CompressionDict::GetEmptyDict(),
4199
+ FLAGS_compression_type_e);
4178
4200
  UncompressionContext uncompression_ctx(FLAGS_compression_type_e);
4179
4201
  UncompressionInfo uncompression_info(uncompression_ctx,
4180
4202
  UncompressionDict::GetEmptyDict(),
@@ -4186,7 +4208,7 @@ class Benchmark {
4186
4208
  while (ok && bytes < 1024 * 1048576) {
4187
4209
  constexpr uint32_t compress_format_version = 2;
4188
4210
 
4189
- CacheAllocationPtr uncompressed = UncompressData(
4211
+ CacheAllocationPtr uncompressed = OLD_UncompressData(
4190
4212
  uncompression_info, compressed.data(), compressed.size(),
4191
4213
  &uncompressed_size, compress_format_version);
4192
4214
 
@@ -4246,6 +4268,7 @@ class Benchmark {
4246
4268
  options.stats_history_buffer_size =
4247
4269
  static_cast<size_t>(FLAGS_stats_history_buffer_size);
4248
4270
  options.avoid_flush_during_recovery = FLAGS_avoid_flush_during_recovery;
4271
+ options.avoid_flush_during_shutdown = FLAGS_avoid_flush_during_shutdown;
4249
4272
 
4250
4273
  options.compression_opts.level = FLAGS_compression_level;
4251
4274
  options.compression_opts.max_dict_bytes = FLAGS_compression_max_dict_bytes;
@@ -4268,8 +4291,6 @@ class Benchmark {
4268
4291
  options.max_write_buffer_number = FLAGS_max_write_buffer_number;
4269
4292
  options.min_write_buffer_number_to_merge =
4270
4293
  FLAGS_min_write_buffer_number_to_merge;
4271
- options.max_write_buffer_number_to_maintain =
4272
- FLAGS_max_write_buffer_number_to_maintain;
4273
4294
  options.max_write_buffer_size_to_maintain =
4274
4295
  FLAGS_max_write_buffer_size_to_maintain;
4275
4296
  options.max_background_jobs = FLAGS_max_background_jobs;
@@ -4313,7 +4334,6 @@ class Benchmark {
4313
4334
  options.max_file_opening_threads = FLAGS_file_opening_threads;
4314
4335
  options.compaction_readahead_size = FLAGS_compaction_readahead_size;
4315
4336
  options.log_readahead_size = FLAGS_log_readahead_size;
4316
- options.random_access_max_buffer_size = FLAGS_random_access_max_buffer_size;
4317
4337
  options.writable_file_max_buffer_size = FLAGS_writable_file_max_buffer_size;
4318
4338
  options.use_fsync = FLAGS_use_fsync;
4319
4339
  options.num_levels = FLAGS_num_levels;
@@ -4480,6 +4500,7 @@ class Benchmark {
4480
4500
  block_based_options.block_restart_interval = FLAGS_block_restart_interval;
4481
4501
  block_based_options.index_block_restart_interval =
4482
4502
  FLAGS_index_block_restart_interval;
4503
+ TEST_AllowUnsupportedFormatVersion() = true;
4483
4504
  block_based_options.format_version =
4484
4505
  static_cast<uint32_t>(FLAGS_format_version);
4485
4506
  block_based_options.read_amp_bytes_per_bit = FLAGS_read_amp_bytes_per_bit;
@@ -4493,6 +4514,7 @@ class Benchmark {
4493
4514
  FLAGS_initial_auto_readahead_size;
4494
4515
  block_based_options.num_file_reads_for_auto_readahead =
4495
4516
  FLAGS_num_file_reads_for_auto_readahead;
4517
+ block_based_options.verify_compression = FLAGS_verify_compression;
4496
4518
  BlockBasedTableOptions::PrepopulateBlockCache prepopulate_block_cache =
4497
4519
  block_based_options.prepopulate_block_cache;
4498
4520
  switch (FLAGS_prepopulate_block_cache) {
@@ -4617,7 +4639,39 @@ class Benchmark {
4617
4639
  FLAGS_level0_file_num_compaction_trigger;
4618
4640
  options.level0_slowdown_writes_trigger =
4619
4641
  FLAGS_level0_slowdown_writes_trigger;
4620
- options.compression = FLAGS_compression_type_e;
4642
+ if (!strcasecmp(FLAGS_compression_manager.c_str(), "none")) {
4643
+ options.compression = FLAGS_compression_type_e;
4644
+ } else {
4645
+ std::shared_ptr<CompressionManagerWrapper> mgr;
4646
+ if (!strcasecmp(FLAGS_compression_manager.c_str(), "mixed")) {
4647
+ // Need to list zstd in the compression_name table property if it's
4648
+ // potentially used by being in the mix (i.e., potentially at least one
4649
+ // data block in the table is compressed by zstd). This ensures proper
4650
+ // context and dictionary handling, and prevents crashes in older
4651
+ // RocksDB versions.
4652
+ options.compression = kZSTD;
4653
+ options.bottommost_compression = kZSTD;
4654
+
4655
+ mgr = std::make_shared<RoundRobinManager>(
4656
+ GetBuiltinV2CompressionManager());
4657
+ } else if (!strcasecmp(FLAGS_compression_manager.c_str(), "autoskip")) {
4658
+ options.compression = FLAGS_compression_type_e;
4659
+ if (FLAGS_compression_type_e == kNoCompression) {
4660
+ fprintf(stderr,
4661
+ "Compression type must not be no Compression when using "
4662
+ "autoskip");
4663
+ ErrorExit();
4664
+ }
4665
+ mgr =
4666
+ CreateAutoSkipCompressionManager(GetBuiltinV2CompressionManager());
4667
+ } else {
4668
+ // not defined -> exit with error
4669
+ fprintf(stderr, "Requested compression manager not supported");
4670
+ ErrorExit();
4671
+ }
4672
+ options.compression_manager = mgr;
4673
+ }
4674
+
4621
4675
  if (FLAGS_simulate_hybrid_fs_file != "") {
4622
4676
  options.last_level_temperature = Temperature::kWarm;
4623
4677
  }
@@ -4729,6 +4783,7 @@ class Benchmark {
4729
4783
  options.allow_data_in_errors = FLAGS_allow_data_in_errors;
4730
4784
  options.track_and_verify_wals_in_manifest =
4731
4785
  FLAGS_track_and_verify_wals_in_manifest;
4786
+ options.track_and_verify_wals = FLAGS_track_and_verify_wals;
4732
4787
 
4733
4788
  // Integrated BlobDB
4734
4789
  options.enable_blob_files = FLAGS_enable_blob_files;
@@ -4760,9 +4815,13 @@ class Benchmark {
4760
4815
  options.block_protection_bytes_per_key =
4761
4816
  FLAGS_block_protection_bytes_per_key;
4762
4817
  options.paranoid_memory_checks = FLAGS_paranoid_memory_checks;
4818
+ options.memtable_op_scan_flush_trigger =
4819
+ FLAGS_memtable_op_scan_flush_trigger;
4820
+ options.compaction_options_universal.reduce_file_locking =
4821
+ FLAGS_universal_reduce_file_locking;
4763
4822
  }
4764
4823
 
4765
- void InitializeOptionsGeneral(Options* opts) {
4824
+ void InitializeOptionsGeneral(Options* opts, ToolHooks& hooks) {
4766
4825
  // Be careful about what is set here to avoid accidentally overwriting
4767
4826
  // settings already configured by OPTIONS file. Only configure settings that
4768
4827
  // are needed for the benchmark to run, settings for shared objects that
@@ -4855,7 +4914,7 @@ class Benchmark {
4855
4914
  }
4856
4915
 
4857
4916
  if (FLAGS_num_multi_db <= 1) {
4858
- OpenDb(options, FLAGS_db, &db_);
4917
+ OpenDb(options, hooks, FLAGS_db, &db_);
4859
4918
  } else {
4860
4919
  multi_dbs_.clear();
4861
4920
  multi_dbs_.resize(FLAGS_num_multi_db);
@@ -4864,7 +4923,7 @@ class Benchmark {
4864
4923
  if (!wal_dir.empty()) {
4865
4924
  options.wal_dir = GetPathForMultiple(wal_dir, i);
4866
4925
  }
4867
- OpenDb(options, GetPathForMultiple(FLAGS_db, i), &multi_dbs_[i]);
4926
+ OpenDb(options, hooks, GetPathForMultiple(FLAGS_db, i), &multi_dbs_[i]);
4868
4927
  }
4869
4928
  options.wal_dir = wal_dir;
4870
4929
  }
@@ -4891,15 +4950,15 @@ class Benchmark {
4891
4950
  }
4892
4951
  }
4893
4952
 
4894
- void Open(Options* opts) {
4953
+ void Open(Options* opts, ToolHooks& hooks) {
4895
4954
  if (!InitializeOptionsFromFile(opts)) {
4896
4955
  InitializeOptionsFromFlags(opts);
4897
4956
  }
4898
4957
 
4899
- InitializeOptionsGeneral(opts);
4958
+ InitializeOptionsGeneral(opts, hooks);
4900
4959
  }
4901
4960
 
4902
- void OpenDb(Options options, const std::string& db_name,
4961
+ void OpenDb(Options options, ToolHooks& hooks, const std::string& db_name,
4903
4962
  DBWithColumnFamilies* db) {
4904
4963
  uint64_t open_start = FLAGS_report_open_timing ? FLAGS_env->NowNanos() : 0;
4905
4964
  Status s;
@@ -4940,11 +4999,11 @@ class Benchmark {
4940
4999
  }
4941
5000
  }
4942
5001
  if (FLAGS_readonly) {
4943
- s = DB::OpenForReadOnly(options, db_name, column_families, &db->cfh,
4944
- &db->db);
5002
+ s = hooks.OpenForReadOnly(options, db_name, column_families, &db->cfh,
5003
+ &db->db);
4945
5004
  } else if (FLAGS_optimistic_transaction_db) {
4946
- s = OptimisticTransactionDB::Open(options, db_name, column_families,
4947
- &db->cfh, &db->opt_txn_db);
5005
+ s = hooks.OpenOptimisticTransactionDB(options, db_name, column_families,
5006
+ &db->cfh, &db->opt_txn_db);
4948
5007
  if (s.ok()) {
4949
5008
  db->db = db->opt_txn_db->GetBaseDB();
4950
5009
  }
@@ -4956,22 +5015,22 @@ class Benchmark {
4956
5015
  txn_db_options.skip_concurrency_control = true;
4957
5016
  txn_db_options.write_policy = WRITE_PREPARED;
4958
5017
  }
4959
- s = TransactionDB::Open(options, txn_db_options, db_name,
4960
- column_families, &db->cfh, &ptr);
5018
+ s = hooks.OpenTransactionDB(options, txn_db_options, db_name,
5019
+ column_families, &db->cfh, &ptr);
4961
5020
  if (s.ok()) {
4962
5021
  db->db = ptr;
4963
5022
  }
4964
5023
  } else {
4965
- s = DB::Open(options, db_name, column_families, &db->cfh, &db->db);
5024
+ s = hooks.Open(options, db_name, column_families, &db->cfh, &db->db);
4966
5025
  }
4967
5026
  db->cfh.resize(FLAGS_num_column_families);
4968
5027
  db->num_created = num_hot;
4969
5028
  db->num_hot = num_hot;
4970
5029
  db->cfh_idx_to_prob = std::move(cfh_idx_to_prob);
4971
5030
  } else if (FLAGS_readonly) {
4972
- s = DB::OpenForReadOnly(options, db_name, &db->db);
5031
+ s = hooks.OpenForReadOnly(options, db_name, &db->db, false);
4973
5032
  } else if (FLAGS_optimistic_transaction_db) {
4974
- s = OptimisticTransactionDB::Open(options, db_name, &db->opt_txn_db);
5033
+ s = hooks.OpenOptimisticTransactionDB(options, db_name, &db->opt_txn_db);
4975
5034
  if (s.ok()) {
4976
5035
  db->db = db->opt_txn_db->GetBaseDB();
4977
5036
  }
@@ -4985,7 +5044,7 @@ class Benchmark {
4985
5044
  }
4986
5045
  s = CreateLoggerFromOptions(db_name, options, &options.info_log);
4987
5046
  if (s.ok()) {
4988
- s = TransactionDB::Open(options, txn_db_options, db_name, &ptr);
5047
+ s = hooks.OpenTransactionDB(options, txn_db_options, db_name, &ptr);
4989
5048
  }
4990
5049
  if (s.ok()) {
4991
5050
  db->db = ptr;
@@ -5003,7 +5062,7 @@ class Benchmark {
5003
5062
  blob_db_options.blob_file_size = FLAGS_blob_db_file_size;
5004
5063
  blob_db_options.compression = FLAGS_blob_db_compression_type_e;
5005
5064
  blob_db::BlobDB* ptr = nullptr;
5006
- s = blob_db::BlobDB::Open(options, blob_db_options, db_name, &ptr);
5065
+ s = hooks.Open(options, blob_db_options, db_name, &ptr);
5007
5066
  if (s.ok()) {
5008
5067
  db->db = ptr;
5009
5068
  }
@@ -5014,7 +5073,8 @@ class Benchmark {
5014
5073
  default_secondary_path += "/dbbench_secondary";
5015
5074
  FLAGS_secondary_path = default_secondary_path;
5016
5075
  }
5017
- s = DB::OpenAsSecondary(options, db_name, FLAGS_secondary_path, &db->db);
5076
+ s = hooks.OpenAsSecondary(options, db_name, FLAGS_secondary_path,
5077
+ &db->db);
5018
5078
  if (s.ok() && FLAGS_secondary_update_interval > 0) {
5019
5079
  secondary_update_thread_.reset(new port::Thread(
5020
5080
  [this](int interval, DBWithColumnFamilies* _db) {
@@ -5035,12 +5095,12 @@ class Benchmark {
5035
5095
  }
5036
5096
  } else if (FLAGS_open_as_follower) {
5037
5097
  std::unique_ptr<DB> dbptr;
5038
- s = DB::OpenAsFollower(options, db_name, FLAGS_leader_path, &dbptr);
5098
+ s = hooks.OpenAsFollower(options, db_name, FLAGS_leader_path, &dbptr);
5039
5099
  if (s.ok()) {
5040
5100
  db->db = dbptr.release();
5041
5101
  }
5042
5102
  } else {
5043
- s = DB::Open(options, db_name, &db->db);
5103
+ s = hooks.Open(options, db_name, &db->db);
5044
5104
  }
5045
5105
  if (FLAGS_report_open_timing) {
5046
5106
  std::cout << "OpenDb: "
@@ -5904,6 +5964,13 @@ class Benchmark {
5904
5964
  options.adaptive_readahead = FLAGS_adaptive_readahead;
5905
5965
  options.async_io = FLAGS_async_io;
5906
5966
  options.auto_readahead_size = FLAGS_auto_readahead_size;
5967
+ std::unique_ptr<ManagedSnapshot> snapshot = nullptr;
5968
+ if (FLAGS_explicit_snapshot) {
5969
+ snapshot = std::make_unique<ManagedSnapshot>(db);
5970
+ options.snapshot = snapshot->snapshot();
5971
+ } else {
5972
+ options.snapshot = nullptr;
5973
+ }
5907
5974
 
5908
5975
  Iterator* iter = db->NewIterator(options);
5909
5976
  int64_t i = 0;
@@ -6860,6 +6927,13 @@ class Benchmark {
6860
6927
 
6861
6928
  Duration duration(FLAGS_duration, reads_);
6862
6929
  char value_buffer[256];
6930
+ std::unique_ptr<ManagedSnapshot> snapshot = nullptr;
6931
+ if (FLAGS_explicit_snapshot) {
6932
+ snapshot = std::make_unique<ManagedSnapshot>(db_.db);
6933
+ options.snapshot = snapshot->snapshot();
6934
+ } else {
6935
+ options.snapshot = nullptr;
6936
+ }
6863
6937
  while (!duration.Done(1)) {
6864
6938
  int64_t seek_pos = thread->rand.Next() % FLAGS_num;
6865
6939
  GenerateKeyFromIntForSeek(static_cast<uint64_t>(seek_pos), FLAGS_num,
@@ -7189,6 +7263,13 @@ class Benchmark {
7189
7263
  ts = mock_app_clock_->GetTimestampForRead(thread->rand, ts_guard.get());
7190
7264
  read_options.timestamp = &ts;
7191
7265
  }
7266
+ std::unique_ptr<ManagedSnapshot> snapshot = nullptr;
7267
+ if (FLAGS_explicit_snapshot) {
7268
+ snapshot = std::make_unique<ManagedSnapshot>(db_.db);
7269
+ read_options.snapshot = snapshot->snapshot();
7270
+ } else {
7271
+ read_options.snapshot = nullptr;
7272
+ }
7192
7273
  Iterator* iter = db_.db->NewIterator(read_options);
7193
7274
 
7194
7275
  fprintf(stderr, "num reads to do %" PRIu64 "\n", reads_);
@@ -7804,6 +7885,13 @@ class Benchmark {
7804
7885
  ts = mock_app_clock_->GetTimestampForRead(thread->rand, ts_guard.get());
7805
7886
  read_opts.timestamp = &ts;
7806
7887
  }
7888
+ std::unique_ptr<ManagedSnapshot> snapshot = nullptr;
7889
+ if (FLAGS_explicit_snapshot) {
7890
+ snapshot = std::make_unique<ManagedSnapshot>(db);
7891
+ read_opts.snapshot = snapshot->snapshot();
7892
+ } else {
7893
+ read_opts.snapshot = nullptr;
7894
+ }
7807
7895
  std::unique_ptr<Iterator> iter(db->NewIterator(read_opts));
7808
7896
 
7809
7897
  std::unique_ptr<const char[]> key_guard;
@@ -8543,7 +8631,6 @@ class Benchmark {
8543
8631
  }
8544
8632
  }
8545
8633
 
8546
-
8547
8634
  void Replay(ThreadState* thread) {
8548
8635
  if (db_.db != nullptr) {
8549
8636
  Replay(thread, &db_);
@@ -8631,10 +8718,9 @@ class Benchmark {
8631
8718
  assert(s.ok());
8632
8719
  delete backup_engine;
8633
8720
  }
8634
-
8635
8721
  };
8636
8722
 
8637
- int db_bench_tool(int argc, char** argv) {
8723
+ int db_bench_tool(int argc, char** argv, ToolHooks& hooks) {
8638
8724
  ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
8639
8725
  ConfigOptions config_options;
8640
8726
  static bool initialized = false;
@@ -8786,7 +8872,7 @@ int db_bench_tool(int argc, char** argv) {
8786
8872
  }
8787
8873
 
8788
8874
  ROCKSDB_NAMESPACE::Benchmark benchmark;
8789
- benchmark.Run();
8875
+ benchmark.Run(hooks);
8790
8876
 
8791
8877
  if (FLAGS_print_malloc_stats) {
8792
8878
  std::string stats_string;
@@ -222,7 +222,6 @@ const std::string options_file_content = R"OPTIONS_FILE(
222
222
  stats_dump_period_sec=600
223
223
  allow_fallocate=true
224
224
  max_log_file_size=83886080
225
- random_access_max_buffer_size=1048576
226
225
  advise_random_on_open=true
227
226
  dump_malloc_stats=true
228
227
 
@@ -254,7 +253,6 @@ const std::string options_file_content = R"OPTIONS_FILE(
254
253
  level0_slowdown_writes_trigger=50
255
254
  level0_file_num_compaction_trigger=10
256
255
  expanded_compaction_factor=25
257
- max_write_buffer_number_to_maintain=0
258
256
  max_write_buffer_size_to_maintain=0
259
257
  verify_checksums_in_compaction=true
260
258
  merge_operator=nullptr
@@ -129,4 +129,3 @@ int main(int argc, const char** argv) {
129
129
  }
130
130
 
131
131
  #endif // GFLAGS
132
-
@@ -3,7 +3,6 @@
3
3
  // COPYING file in the root directory) and Apache 2.0 License
4
4
  // (found in the LICENSE.Apache file in the root directory).
5
5
 
6
-
7
6
  #include "rocksdb/db_dump_tool.h"
8
7
 
9
8
  #include <cinttypes>