@nxtedition/rocksdb 15.4.1 → 15.5.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 (399) hide show
  1. package/binding.cc +24 -15
  2. package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
  3. package/deps/rocksdb/rocksdb/BUCK +42 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
  5. package/deps/rocksdb/rocksdb/Makefile +59 -32
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
  8. package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
  10. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
  11. package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
  12. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
  14. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
  16. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
  17. package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
  24. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
  26. package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
  27. package/deps/rocksdb/rocksdb/db/builder.h +7 -0
  28. package/deps/rocksdb/rocksdb/db/c.cc +373 -57
  29. package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
  51. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  52. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
  54. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
  55. package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
  57. package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
  58. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
  59. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
  60. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
  61. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
  62. package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
  63. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
  64. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
  65. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
  66. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
  79. package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
  80. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
  81. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
  82. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
  83. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
  84. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
  85. package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
  86. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
  87. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
  88. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
  90. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
  91. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
  92. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
  93. package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
  94. package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
  95. package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
  96. package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
  97. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
  98. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
  99. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
  100. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
  101. package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
  102. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
  103. package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
  104. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
  105. package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
  108. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
  109. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
  111. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
  112. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
  113. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
  114. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
  115. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  116. package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
  117. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
  118. package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
  119. package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
  120. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
  121. package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
  122. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
  123. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  124. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
  125. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
  126. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
  127. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
  128. package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
  129. package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
  130. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
  131. package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
  132. package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
  133. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
  134. package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
  135. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  136. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
  137. package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
  138. package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
  139. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
  140. package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
  141. package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
  142. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
  143. package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
  144. package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
  145. package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
  146. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
  147. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
  148. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
  149. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
  150. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
  151. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
  159. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
  160. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
  161. package/deps/rocksdb/rocksdb/env/env.cc +1 -0
  162. package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
  163. package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
  164. package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
  165. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  166. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  167. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
  168. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
  169. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
  170. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
  171. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  172. package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
  173. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
  174. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
  175. package/deps/rocksdb/rocksdb/folly.mk +22 -5
  176. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
  178. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
  179. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
  180. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
  181. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
  182. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
  183. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
  187. package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
  192. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
  193. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
  194. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
  198. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
  200. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
  202. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
  203. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
  204. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
  205. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
  206. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
  207. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
  208. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
  209. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
  210. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  211. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
  212. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
  213. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
  214. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
  215. package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
  216. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
  217. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
  218. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
  219. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
  220. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
  221. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
  222. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
  223. package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
  224. package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
  225. package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
  226. package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
  227. package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
  228. package/deps/rocksdb/rocksdb/options/options.cc +5 -1
  229. package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
  230. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
  231. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
  232. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
  233. package/deps/rocksdb/rocksdb/port/lang.h +4 -0
  234. package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
  235. package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
  236. package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
  237. package/deps/rocksdb/rocksdb/src.mk +12 -0
  238. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
  239. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  240. package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
  241. package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
  247. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
  248. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
  249. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
  250. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
  251. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
  252. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
  253. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
  254. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
  255. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
  256. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
  258. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  259. package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
  260. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
  261. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
  262. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
  264. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
  265. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
  266. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
  267. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
  268. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
  269. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
  271. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
  272. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
  273. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
  274. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
  275. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
  276. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
  277. package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
  278. package/deps/rocksdb/rocksdb/table/format.cc +27 -15
  279. package/deps/rocksdb/rocksdb/table/format.h +41 -15
  280. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
  281. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
  282. package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
  283. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
  284. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  285. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
  286. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
  287. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
  288. package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
  289. package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
  290. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
  291. package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
  292. package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
  293. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
  294. package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
  295. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
  296. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
  297. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
  298. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
  299. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
  300. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
  301. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
  302. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
  303. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
  304. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
  305. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
  306. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
  307. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
  308. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
  309. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
  310. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
  311. package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
  312. package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
  313. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
  314. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
  315. package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
  316. package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
  317. package/deps/rocksdb/rocksdb/util/coding.h +14 -27
  318. package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
  319. package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
  320. package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
  321. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
  323. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
  324. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
  325. package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
  326. package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
  327. package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
  328. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
  329. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
  330. package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
  331. package/deps/rocksdb/rocksdb/util/math.h +3 -1
  332. package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
  333. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
  334. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
  335. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
  336. package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
  337. package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
  338. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
  339. package/deps/rocksdb/rocksdb/util/status.cc +3 -1
  340. package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
  341. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
  342. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
  343. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
  344. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
  345. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
  346. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
  347. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
  348. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
  349. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
  350. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
  351. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
  352. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
  353. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
  354. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
  355. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
  356. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
  357. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
  358. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  359. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
  360. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
  361. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
  362. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
  363. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
  364. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
  365. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
  366. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
  367. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
  368. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
  369. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
  370. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
  371. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
  372. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
  373. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
  374. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
  375. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
  376. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  377. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
  378. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
  379. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
  380. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
  381. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
  382. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
  383. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
  384. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
  385. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
  386. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
  387. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
  388. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
  389. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  390. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
  391. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
  392. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
  393. package/deps/rocksdb/rocksdb.gyp +7 -0
  394. package/iterator.js +2 -2
  395. package/package.json +1 -1
  396. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  397. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
@@ -182,6 +182,7 @@ TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
182
182
  "pin_l0_filter_and_index_blocks_in_cache=1;"
183
183
  "pin_top_level_index_and_filter=1;"
184
184
  "index_type=kHashSearch;"
185
+ "index_block_search_type=kBinary;"
185
186
  "data_block_index_type=kDataBlockBinaryAndHash;"
186
187
  "index_shortening=kNoShortening;"
187
188
  "data_block_hash_table_util_ratio=0.75;"
@@ -206,7 +207,9 @@ TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
206
207
  "prepopulate_block_cache=kDisable;"
207
208
  "initial_auto_readahead_size=0;"
208
209
  "num_file_reads_for_auto_readahead=0;"
209
- "fail_if_no_udi_on_open=true",
210
+ "fail_if_no_udi_on_open=true;"
211
+ "separate_key_value_in_data_block=true;"
212
+ "uniform_cv_threshold=0.2",
210
213
  new_bbto));
211
214
 
212
215
  ASSERT_EQ(unset_bytes_base,
@@ -292,7 +295,8 @@ TEST_F(OptionsSettableTest, TablePropertiesAllFieldsSettable) {
292
295
  "name=64656661756C74;user_defined_timestamps_persisted=1;num_entries=100;"
293
296
  "external_sst_file_global_seqno_offset=0;num_merge_operands=0;index_key_"
294
297
  "is_user_key=0;key_largest_seqno=18446744073709551615;key_smallest_seqno="
295
- "18;",
298
+ "18;data_block_restart_interval=16;index_block_restart_interval=1;"
299
+ "separate_key_value_in_data_block=0;",
296
300
  new_tp));
297
301
 
298
302
  // All bytes are set from the parse
@@ -385,102 +389,104 @@ TEST_F(OptionsSettableTest, DBOptionsAllFieldsSettable) {
385
389
  ConfigOptions config_options(*options);
386
390
  config_options.input_strings_escaped = false;
387
391
  config_options.ignore_unknown_options = false;
388
- ASSERT_OK(
389
- GetDBOptionsFromString(config_options, *options,
390
- "wal_bytes_per_sync=4295048118;"
391
- "delete_obsolete_files_period_micros=4294967758;"
392
- "WAL_ttl_seconds=4295008036;"
393
- "WAL_size_limit_MB=4295036161;"
394
- "max_write_batch_group_size_bytes=1048576;"
395
- "wal_dir=path/to/wal_dir;"
396
- "db_write_buffer_size=2587;"
397
- "max_subcompactions=64330;"
398
- "table_cache_numshardbits=28;"
399
- "max_open_files=72;"
400
- "max_file_opening_threads=35;"
401
- "max_background_jobs=8;"
402
- "max_background_compactions=33;"
403
- "use_fsync=true;"
404
- "use_adaptive_mutex=false;"
405
- "max_total_wal_size=4295005604;"
406
- "compaction_readahead_size=0;"
407
- "keep_log_file_num=4890;"
408
- "skip_stats_update_on_db_open=false;"
409
- "skip_checking_sst_file_sizes_on_db_open=false;"
410
- "max_manifest_file_size=4295009941;"
411
- "max_manifest_space_amp_pct=321;"
412
- "db_log_dir=path/to/db_log_dir;"
413
- "writable_file_max_buffer_size=1048576;"
414
- "paranoid_checks=true;"
415
- "flush_verify_memtable_count=true;"
416
- "compaction_verify_record_count=true;"
417
- "track_and_verify_wals_in_manifest=true;"
418
- "track_and_verify_wals=true;"
419
- "verify_sst_unique_id_in_manifest=true;"
420
- "is_fd_close_on_exec=false;"
421
- "bytes_per_sync=4295013613;"
422
- "strict_bytes_per_sync=true;"
423
- "enable_thread_tracking=false;"
424
- "recycle_log_file_num=0;"
425
- "create_missing_column_families=true;"
426
- "log_file_time_to_roll=3097;"
427
- "max_background_flushes=35;"
428
- "create_if_missing=false;"
429
- "error_if_exists=true;"
430
- "delayed_write_rate=4294976214;"
431
- "manifest_preallocation_size=1222;"
432
- "allow_mmap_writes=false;"
433
- "stats_dump_period_sec=70127;"
434
- "stats_persist_period_sec=54321;"
435
- "persist_stats_to_disk=true;"
436
- "stats_history_buffer_size=14159;"
437
- "allow_fallocate=true;"
438
- "allow_mmap_reads=false;"
439
- "use_direct_reads=false;"
440
- "use_direct_io_for_flush_and_compaction=false;"
441
- "max_log_file_size=4607;"
442
- "advise_random_on_open=true;"
443
- "enable_pipelined_write=false;"
444
- "unordered_write=false;"
445
- "allow_concurrent_memtable_write=true;"
446
- "wal_recovery_mode=kPointInTimeRecovery;"
447
- "enable_write_thread_adaptive_yield=true;"
448
- "write_thread_slow_yield_usec=5;"
449
- "write_thread_max_yield_usec=1000;"
450
- "info_log_level=DEBUG_LEVEL;"
451
- "dump_malloc_stats=false;"
452
- "allow_2pc=false;"
453
- "avoid_flush_during_recovery=false;"
454
- "avoid_flush_during_shutdown=false;"
455
- "allow_ingest_behind=false;"
456
- "concurrent_prepare=false;"
457
- "two_write_queues=false;"
458
- "manual_wal_flush=false;"
459
- "wal_compression=kZSTD;"
460
- "background_close_inactive_wals=true;"
461
- "seq_per_batch=false;"
462
- "atomic_flush=false;"
463
- "avoid_unnecessary_blocking_io=false;"
464
- "log_readahead_size=0;"
465
- "write_dbid_to_manifest=false;"
466
- "best_efforts_recovery=false;"
467
- "max_bgerror_resume_count=2;"
468
- "bgerror_resume_retry_interval=1000000;"
469
- "db_host_id=hostname;"
470
- "lowest_used_cache_tier=kNonVolatileBlockTier;"
471
- "allow_data_in_errors=false;"
472
- "enforce_single_del_contracts=false;"
473
- "daily_offpeak_time_utc=08:30-19:00;"
474
- "follower_refresh_catchup_period_ms=123;"
475
- "follower_catchup_retry_count=456;"
476
- "follower_catchup_retry_wait_ms=789;"
477
- "metadata_write_temperature=kCold;"
478
- "wal_write_temperature=kHot;"
479
- "background_close_inactive_wals=true;"
480
- "write_dbid_to_manifest=true;"
481
- "write_identity_file=true;"
482
- "prefix_seek_opt_in_only=true;",
483
- new_options));
392
+ ASSERT_OK(GetDBOptionsFromString(
393
+ config_options, *options,
394
+ "wal_bytes_per_sync=4295048118;"
395
+ "delete_obsolete_files_period_micros=4294967758;"
396
+ "WAL_ttl_seconds=4295008036;"
397
+ "WAL_size_limit_MB=4295036161;"
398
+ "max_write_batch_group_size_bytes=1048576;"
399
+ "wal_dir=path/to/wal_dir;"
400
+ "db_write_buffer_size=2587;"
401
+ "max_subcompactions=64330;"
402
+ "table_cache_numshardbits=28;"
403
+ "max_open_files=72;"
404
+ "max_file_opening_threads=35;"
405
+ "max_background_jobs=8;"
406
+ "max_background_compactions=33;"
407
+ "use_fsync=true;"
408
+ "use_adaptive_mutex=false;"
409
+ "max_total_wal_size=4295005604;"
410
+ "compaction_readahead_size=0;"
411
+ "keep_log_file_num=4890;"
412
+ "skip_stats_update_on_db_open=false;"
413
+ "max_manifest_file_size=4295009941;"
414
+ "max_manifest_space_amp_pct=321;"
415
+ "db_log_dir=path/to/db_log_dir;"
416
+ "writable_file_max_buffer_size=1048576;"
417
+ "paranoid_checks=true;"
418
+ "open_files_async=true;"
419
+ "flush_verify_memtable_count=true;"
420
+ "compaction_verify_record_count=true;"
421
+ "track_and_verify_wals_in_manifest=true;"
422
+ "track_and_verify_wals=true;"
423
+ "verify_sst_unique_id_in_manifest=true;"
424
+ "is_fd_close_on_exec=false;"
425
+ "bytes_per_sync=4295013613;"
426
+ "strict_bytes_per_sync=true;"
427
+ "enable_thread_tracking=false;"
428
+ "recycle_log_file_num=0;"
429
+ "create_missing_column_families=true;"
430
+ "log_file_time_to_roll=3097;"
431
+ "max_background_flushes=35;"
432
+ "create_if_missing=false;"
433
+ "error_if_exists=true;"
434
+ "delayed_write_rate=4294976214;"
435
+ "manifest_preallocation_size=1222;"
436
+ "allow_mmap_writes=false;"
437
+ "stats_dump_period_sec=70127;"
438
+ "stats_persist_period_sec=54321;"
439
+ "persist_stats_to_disk=true;"
440
+ "stats_history_buffer_size=14159;"
441
+ "allow_fallocate=true;"
442
+ "allow_mmap_reads=false;"
443
+ "use_direct_reads=false;"
444
+ "use_direct_io_for_flush_and_compaction=false;"
445
+ "max_log_file_size=4607;"
446
+ "advise_random_on_open=true;"
447
+ "enable_pipelined_write=false;"
448
+ "unordered_write=false;"
449
+ "allow_concurrent_memtable_write=true;"
450
+ "wal_recovery_mode=kPointInTimeRecovery;"
451
+ "enable_write_thread_adaptive_yield=true;"
452
+ "write_thread_slow_yield_usec=5;"
453
+ "write_thread_max_yield_usec=1000;"
454
+ "info_log_level=DEBUG_LEVEL;"
455
+ "dump_malloc_stats=false;"
456
+ "allow_2pc=false;"
457
+ "avoid_flush_during_recovery=false;"
458
+ "enforce_write_buffer_manager_during_recovery=true;"
459
+ "avoid_flush_during_shutdown=false;"
460
+ "allow_ingest_behind=false;"
461
+ "concurrent_prepare=false;"
462
+ "two_write_queues=false;"
463
+ "manual_wal_flush=false;"
464
+ "wal_compression=kZSTD;"
465
+ "background_close_inactive_wals=true;"
466
+ "seq_per_batch=false;"
467
+ "atomic_flush=false;"
468
+ "avoid_unnecessary_blocking_io=false;"
469
+ "log_readahead_size=0;"
470
+ "write_dbid_to_manifest=false;"
471
+ "best_efforts_recovery=false;"
472
+ "max_bgerror_resume_count=2;"
473
+ "bgerror_resume_retry_interval=1000000;"
474
+ "db_host_id=hostname;"
475
+ "lowest_used_cache_tier=kNonVolatileBlockTier;"
476
+ "allow_data_in_errors=false;"
477
+ "enforce_single_del_contracts=false;"
478
+ "daily_offpeak_time_utc=08:30-19:00;"
479
+ "follower_refresh_catchup_period_ms=123;"
480
+ "follower_catchup_retry_count=456;"
481
+ "follower_catchup_retry_wait_ms=789;"
482
+ "metadata_write_temperature=kCold;"
483
+ "wal_write_temperature=kHot;"
484
+ "background_close_inactive_wals=true;"
485
+ "write_dbid_to_manifest=true;"
486
+ "write_identity_file=true;"
487
+ "verify_manifest_content_on_close=false;"
488
+ "prefix_seek_opt_in_only=true;",
489
+ new_options));
484
490
 
485
491
  ASSERT_EQ(unset_bytes_base, NumUnsetBytes(new_options_ptr, sizeof(DBOptions),
486
492
  kDBOptionsExcluded));
@@ -508,7 +514,7 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
508
514
  // ColumnFamilyOptions.
509
515
  const OffsetGap kColumnFamilyOptionsExcluded = {
510
516
  {offsetof(struct ColumnFamilyOptions, inplace_callback),
511
- sizeof(UpdateStatus(*)(char*, uint32_t*, Slice, std::string*))},
517
+ sizeof(UpdateStatus (*)(char*, uint32_t*, Slice, std::string*))},
512
518
  {offsetof(struct ColumnFamilyOptions,
513
519
  memtable_insert_with_hint_prefix_extractor),
514
520
  sizeof(std::shared_ptr<const SliceTransform>)},
@@ -541,8 +547,6 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
541
547
  sizeof(std::shared_ptr<CompressionManager>)},
542
548
  {offsetof(struct ColumnFamilyOptions, prefix_extractor),
543
549
  sizeof(std::shared_ptr<const SliceTransform>)},
544
- {offsetof(struct ColumnFamilyOptions, snap_refresh_nanos),
545
- sizeof(uint64_t)},
546
550
  {offsetof(struct ColumnFamilyOptions, table_factory),
547
551
  sizeof(std::shared_ptr<TableFactory>)},
548
552
  {offsetof(struct ColumnFamilyOptions, cf_paths),
@@ -677,7 +681,8 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
677
681
  "preserve_internal_time_seconds=86400;"
678
682
  "compaction_options_fifo={max_table_files_size=3;allow_"
679
683
  "compaction=true;age_for_warm=0;file_temperature_age_thresholds={{"
680
- "temperature=kCold;age=12345}};};"
684
+ "temperature=kCold;age=12345}};max_data_files_size=1073741824;"
685
+ "use_kv_ratio_compaction=false;};"
681
686
  "blob_cache=1M;"
682
687
  "memtable_protection_bytes_per_key=2;"
683
688
  "persist_user_defined_timestamps=true;"
@@ -690,7 +695,8 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
690
695
  "memtable_op_scan_flush_trigger=123;"
691
696
  "memtable_avg_op_scan_flush_trigger=12;"
692
697
  "cf_allow_ingest_behind=1;"
693
- "verify_output_flags=2049;",
698
+ "memtable_batch_lookup_optimization=1;"
699
+ "verify_output_flags=2053;",
694
700
  new_options));
695
701
 
696
702
  ASSERT_NE(new_options->blob_cache.get(), nullptr);
@@ -1752,6 +1752,19 @@ TEST_F(OptionsTest, MutableCFOptions) {
1752
1752
  config_options, cf_opts, {{"paranoid_file_checks", "false"}}, &cf_opts));
1753
1753
  ASSERT_EQ(cf_opts.paranoid_file_checks, false);
1754
1754
 
1755
+ // Test verify_output_flags with kVerifyFileChecksum (bit 2)
1756
+ // 2052 = 4 (kVerifyFileChecksum) | 2048 (kEnableForRemoteCompaction)
1757
+ ASSERT_OK(GetColumnFamilyOptionsFromString(
1758
+ config_options, cf_opts, "verify_output_flags=2052;", &cf_opts));
1759
+ ASSERT_NE(
1760
+ (cf_opts.verify_output_flags & VerifyOutputFlags::kVerifyFileChecksum),
1761
+ VerifyOutputFlags::kVerifyNone);
1762
+ ASSERT_NE((cf_opts.verify_output_flags &
1763
+ VerifyOutputFlags::kEnableForRemoteCompaction),
1764
+ VerifyOutputFlags::kVerifyNone);
1765
+ ASSERT_EQ(
1766
+ (cf_opts.verify_output_flags & VerifyOutputFlags::kVerifyBlockChecksum),
1767
+ VerifyOutputFlags::kVerifyNone);
1755
1768
  // Should replace the factory with the new setting
1756
1769
  ASSERT_OK(GetColumnFamilyOptionsFromMap(
1757
1770
  config_options, cf_opts,
@@ -2417,6 +2430,7 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
2417
2430
  {"max_compaction_bytes", "21"},
2418
2431
  {"soft_rate_limit", "1.1"},
2419
2432
  {"hard_rate_limit", "2.1"},
2433
+ {"snap_refresh_nanos", "1000000"},
2420
2434
  {"rate_limit_delay_max_milliseconds", "100"},
2421
2435
  {"hard_pending_compaction_bytes_limit", "211"},
2422
2436
  {"arena_block_size", "22"},
@@ -59,33 +59,31 @@ static inline bool HasJemalloc() { return true; }
59
59
 
60
60
  // Declare non-standard jemalloc APIs as weak symbols. We can null-check these
61
61
  // symbols to detect whether jemalloc is linked with the binary.
62
- extern "C" JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW *
62
+ extern "C" JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW*
63
63
  mallocx(size_t, int) JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1)
64
64
  __attribute__((__weak__));
65
- extern "C" JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW *
66
- rallocx(void *, size_t, int) JEMALLOC_ALLOC_SIZE(2) __attribute__((__weak__));
67
- extern "C" size_t JEMALLOC_NOTHROW xallocx(void *, size_t, size_t, int)
65
+ extern "C" JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW*
66
+ rallocx(void*, size_t, int) JEMALLOC_ALLOC_SIZE(2) __attribute__((__weak__));
67
+ extern "C" size_t JEMALLOC_NOTHROW xallocx(void*, size_t, size_t, int)
68
68
  __attribute__((__weak__));
69
- extern "C" size_t JEMALLOC_NOTHROW sallocx(const void *, int)
70
- JEMALLOC_ATTR(pure) __attribute__((__weak__));
71
- extern "C" void JEMALLOC_NOTHROW dallocx(void *, int) __attribute__((__weak__));
72
- extern "C" void JEMALLOC_NOTHROW sdallocx(void *, size_t, int)
69
+ extern "C" size_t JEMALLOC_NOTHROW sallocx(const void*, int) JEMALLOC_ATTR(pure)
70
+ __attribute__((__weak__));
71
+ extern "C" void JEMALLOC_NOTHROW dallocx(void*, int) __attribute__((__weak__));
72
+ extern "C" void JEMALLOC_NOTHROW sdallocx(void*, size_t, int)
73
73
  __attribute__((__weak__));
74
74
  extern "C" size_t JEMALLOC_NOTHROW nallocx(size_t, int) JEMALLOC_ATTR(pure)
75
75
  __attribute__((__weak__));
76
- extern "C" int JEMALLOC_NOTHROW mallctl(const char *, void *, size_t *, void *,
76
+ extern "C" int JEMALLOC_NOTHROW mallctl(const char*, void*, size_t*, void*,
77
77
  size_t) __attribute__((__weak__));
78
- extern "C" int JEMALLOC_NOTHROW mallctlnametomib(const char *, size_t *,
79
- size_t *)
80
- __attribute__((__weak__));
81
- extern "C" int JEMALLOC_NOTHROW mallctlbymib(const size_t *, size_t, void *,
82
- size_t *, void *, size_t)
78
+ extern "C" int JEMALLOC_NOTHROW mallctlnametomib(const char*, size_t*, size_t*)
83
79
  __attribute__((__weak__));
84
- extern "C" void JEMALLOC_NOTHROW
85
- malloc_stats_print(void (*)(void *, const char *), void *, const char *)
80
+ extern "C" int JEMALLOC_NOTHROW mallctlbymib(const size_t*, size_t, void*,
81
+ size_t*, void*, size_t)
86
82
  __attribute__((__weak__));
83
+ extern "C" void JEMALLOC_NOTHROW malloc_stats_print(
84
+ void (*)(void*, const char*), void*, const char*) __attribute__((__weak__));
87
85
  extern "C" size_t JEMALLOC_NOTHROW
88
- malloc_usable_size(JEMALLOC_USABLE_SIZE_CONST void *) JEMALLOC_CXX_THROW
86
+ malloc_usable_size(JEMALLOC_USABLE_SIZE_CONST void*) JEMALLOC_CXX_THROW
89
87
  __attribute__((__weak__));
90
88
 
91
89
  // Check if Jemalloc is linked with the binary. Note the main program might be
@@ -69,6 +69,10 @@ constexpr bool kMustFreeHeapAllocations = false;
69
69
  #define TSAN_SUPPRESSION
70
70
  #endif // TSAN_SUPPRESSION
71
71
 
72
+ // Fail in debug build with a useful message, for automatically grouping
73
+ // related failures
74
+ #define DEBUG_FAIL(msg) assert(false && msg)
75
+
72
76
  // Compile-time CPU feature testing compatibility
73
77
  //
74
78
  // A way to be extra sure these defines have been included.
@@ -74,28 +74,5 @@ using OnceType = intptr_t;
74
74
  #define LEVELDB_ONCE_INIT 0
75
75
  void InitOnce(port::OnceType*, void (*initializer)());
76
76
 
77
- // ------------------ Compression -------------------
78
-
79
- // Store the snappy compression of "input[0,input_length-1]" in *output.
80
- // Returns false if snappy is not supported by this port.
81
- bool Snappy_Compress(const char* input, size_t input_length,
82
- std::string* output);
83
-
84
- // If input[0,input_length-1] looks like a valid snappy compressed
85
- // buffer, store the size of the uncompressed data in *result and
86
- // return true. Else return false.
87
- bool Snappy_GetUncompressedLength(const char* input, size_t length,
88
- size_t* result);
89
-
90
- // Attempt to snappy uncompress input[0,input_length-1] into *output.
91
- // Returns true if successful, false if the input is invalid lightweight
92
- // compressed data.
93
- //
94
- // REQUIRES: at least the first "n" bytes of output[] must be writable
95
- // where "n" is the result of a successful call to
96
- // Snappy_GetUncompressedLength.
97
- bool Snappy_Uncompress(const char* input_data, size_t input_length,
98
- char* output);
99
-
100
77
  } // namespace port
101
78
  } // namespace ROCKSDB_NAMESPACE
@@ -18,6 +18,7 @@ void PrintAndFreeStack(void* /*callstack*/, int /*num_frames*/) {}
18
18
  void* SaveStack(int* /*num_frames*/, int /*first_frames_to_skip*/) {
19
19
  return nullptr;
20
20
  }
21
+ void RegisterCrashCallback(CrashCallback /*callback*/) {}
21
22
  } // namespace port
22
23
  } // namespace ROCKSDB_NAMESPACE
23
24
 
@@ -320,6 +321,7 @@ void* SaveStack(int* num_frames, int first_frames_to_skip) {
320
321
  static std::atomic<uint64_t> g_thread_handling_stack_trace{0};
321
322
  static int g_recursion_count = 0;
322
323
  static std::atomic<bool> g_at_exit_called{false};
324
+ static std::atomic<CrashCallback> g_crash_callback{nullptr};
323
325
 
324
326
  static void StackTraceHandler(int sig) {
325
327
  fprintf(stderr, "Received signal %d (%s)\n", sig, strsignal(sig));
@@ -360,6 +362,12 @@ static void StackTraceHandler(int sig) {
360
362
  fprintf(stderr, "In a race with process already exiting...\n");
361
363
  }
362
364
 
365
+ // Invoke registered crash callback before printing stack trace
366
+ auto callback = g_crash_callback.load(std::memory_order_acquire);
367
+ if (callback) {
368
+ callback();
369
+ }
370
+
363
371
  // skip the top three signal handler related frames
364
372
  PrintStack(3);
365
373
 
@@ -398,13 +406,41 @@ static void AtExit() {
398
406
  g_at_exit_called.store(true, std::memory_order_release);
399
407
  }
400
408
 
409
+ // Lightweight handler for graceful termination signals (SIGTERM, SIGINT).
410
+ // Prints the crash callback (e.g., ring buffer) but skips the
411
+ // expensive GDB/LLDB stack trace, since these are intentional terminations.
412
+ static void TerminationHandler(int sig) {
413
+ char buf[64];
414
+ int len = snprintf(buf, sizeof(buf), "Received signal %d (%s)\n", sig,
415
+ strsignal(sig));
416
+ if (len > 0) {
417
+ auto unused __attribute__((unused)) = write(STDOUT_FILENO, buf, len);
418
+ }
419
+ auto callback = g_crash_callback.load(std::memory_order_acquire);
420
+ if (callback) {
421
+ callback();
422
+ }
423
+ signal(sig, SIG_DFL);
424
+ raise(sig);
425
+ }
426
+
427
+ void RegisterCrashCallback(CrashCallback callback) {
428
+ g_crash_callback.store(callback, std::memory_order_release);
429
+ }
430
+
401
431
  void InstallStackTraceHandler() {
402
432
  // just use the plain old signal as it's simple and sufficient
403
433
  // for this use case
434
+ // Crash signals — invoke full stack trace + ring buffer
404
435
  signal(SIGILL, StackTraceHandler);
405
436
  signal(SIGSEGV, StackTraceHandler);
406
437
  signal(SIGBUS, StackTraceHandler);
407
438
  signal(SIGABRT, StackTraceHandler);
439
+ signal(SIGFPE, StackTraceHandler);
440
+ signal(SIGQUIT, StackTraceHandler);
441
+ // Termination signals — print ring buffer only, no stack trace
442
+ signal(SIGTERM, TerminationHandler);
443
+ signal(SIGINT, TerminationHandler);
408
444
  atexit(AtExit);
409
445
  // Allow ouside debugger to attach, even with Yama security restrictions.
410
446
  // This is needed even outside of PrintStack() so that external mechanisms
@@ -27,5 +27,14 @@ void PrintAndFreeStack(void* callstack, int num_frames);
27
27
  // Save the current callstack
28
28
  void* SaveStack(int* num_frame, int first_frames_to_skip = 0);
29
29
 
30
+ // Register a callback to be invoked when a fatal signal is received,
31
+ // before the stack trace is printed. This is useful for printing diagnostic
32
+ // information (e.g., recently injected errors) when a crash occurs.
33
+ // The callback must only call async-signal-safe functions (write, snprintf,
34
+ // etc.) or functions that are safe enough in practice (fprintf to stderr).
35
+ // Only one callback is supported; subsequent calls overwrite the previous one.
36
+ using CrashCallback = void (*)();
37
+ void RegisterCrashCallback(CrashCallback callback);
38
+
30
39
  } // namespace port
31
40
  } // namespace ROCKSDB_NAMESPACE
@@ -96,6 +96,7 @@ LIB_SOURCES = \
96
96
  db/version_edit.cc \
97
97
  db/version_edit_handler.cc \
98
98
  db/version_set.cc \
99
+ db/version_util.cc \
99
100
  db/wal_edit.cc \
100
101
  db/wal_manager.cc \
101
102
  db/wide/wide_column_serialization.cc \
@@ -182,6 +183,7 @@ LIB_SOURCES = \
182
183
  table/block_based/block_based_table_builder.cc \
183
184
  table/block_based/block_based_table_factory.cc \
184
185
  table/block_based/block_based_table_iterator.cc \
186
+ table/block_based/multi_scan_index_iterator.cc \
185
187
  table/block_based/block_based_table_reader.cc \
186
188
  table/block_based/block_builder.cc \
187
189
  table/block_based/block_cache.cc \
@@ -264,6 +266,7 @@ LIB_SOURCES = \
264
266
  util/string_util.cc \
265
267
  util/thread_local.cc \
266
268
  util/threadpool_imp.cc \
269
+ util/io_dispatcher_imp.cc \
267
270
  util/udt_util.cc \
268
271
  util/write_batch_util.cc \
269
272
  util/xxhash.cc \
@@ -332,6 +335,9 @@ LIB_SOURCES = \
332
335
  utilities/transactions/write_unprepared_txn.cc \
333
336
  utilities/transactions/write_unprepared_txn_db.cc \
334
337
  utilities/ttl/db_ttl_impl.cc \
338
+ utilities/trie_index/bitvector.cc \
339
+ utilities/trie_index/louds_trie.cc \
340
+ utilities/trie_index/trie_index_factory.cc \
335
341
  utilities/types_util.cc \
336
342
  utilities/wal_filter.cc \
337
343
  utilities/write_batch_with_index/write_batch_with_index.cc \
@@ -489,6 +495,7 @@ TEST_MAIN_SOURCES = \
489
495
  db/db_basic_test.cc \
490
496
  db/db_block_cache_test.cc \
491
497
  db/db_bloom_filter_test.cc \
498
+ db/db_compaction_abort_test.cc \
492
499
  db/db_compaction_filter_test.cc \
493
500
  db/db_compaction_test.cc \
494
501
  db/db_clip_test.cc \
@@ -620,6 +627,7 @@ TEST_MAIN_SOURCES = \
620
627
  util/hash_test.cc \
621
628
  util/heap_test.cc \
622
629
  util/interval_test.cc \
630
+ util/io_dispatcher_test.cc \
623
631
  util/random_test.cc \
624
632
  util/rate_limiter_test.cc \
625
633
  util/repeatable_thread_test.cc \
@@ -641,6 +649,7 @@ TEST_MAIN_SOURCES = \
641
649
  utilities/cassandra/cassandra_serialize_test.cc \
642
650
  utilities/checkpoint/checkpoint_test.cc \
643
651
  utilities/env_timed_test.cc \
652
+ utilities/fault_injection_fs_test.cc \
644
653
  utilities/memory/memory_test.cc \
645
654
  utilities/merge_operators/string_append/stringappend_test.cc \
646
655
  utilities/object_registry_test.cc \
@@ -658,10 +667,13 @@ TEST_MAIN_SOURCES = \
658
667
  utilities/transactions/lock/point/point_lock_manager_test.cc \
659
668
  utilities/transactions/lock/point/point_lock_manager_stress_test.cc \
660
669
  utilities/transactions/write_prepared_transaction_test.cc \
670
+ utilities/transactions/write_prepared_transaction_seqno_test.cc \
661
671
  utilities/transactions/write_unprepared_transaction_test.cc \
662
672
  utilities/transactions/write_committed_transaction_ts_test.cc \
663
673
  utilities/transactions/timestamped_snapshot_test.cc \
664
674
  utilities/ttl/ttl_test.cc \
675
+ utilities/trie_index/trie_index_db_test.cc \
676
+ utilities/trie_index/trie_index_test.cc \
665
677
  utilities/types_util_test.cc \
666
678
  utilities/util_merge_operators_test.cc \
667
679
  utilities/write_batch_with_index/write_batch_with_index_test.cc \
@@ -51,8 +51,7 @@ Status AdaptiveTableFactory::NewTableReader(
51
51
  footer.table_magic_number() == kLegacyPlainTableMagicNumber) {
52
52
  return plain_table_factory_->NewTableReader(
53
53
  table_reader_options, std::move(file), file_size, table);
54
- } else if (footer.table_magic_number() == kBlockBasedTableMagicNumber ||
55
- footer.table_magic_number() == kLegacyBlockBasedTableMagicNumber) {
54
+ } else if (footer.table_magic_number() == kBlockBasedTableMagicNumber) {
56
55
  return block_based_table_factory_->NewTableReader(
57
56
  ro, table_reader_options, std::move(file), file_size, table,
58
57
  prefetch_index_and_filter_in_cache);
@@ -63,7 +63,8 @@ InternalIteratorBase<IndexValue>* BinarySearchIndexReader::NewIterator(
63
63
  internal_comparator()->user_comparator(),
64
64
  rep->get_global_seqno(BlockType::kIndex), iter, kNullStats, true,
65
65
  index_has_first_key(), index_key_includes_seq(), index_value_is_full(),
66
- false /* block_contents_pinned */, user_defined_timestamps_persisted());
66
+ false /* block_contents_pinned */, user_defined_timestamps_persisted(),
67
+ nullptr /* prefix_index */, rep->table_options.index_block_search_type);
67
68
 
68
69
  assert(it != nullptr);
69
70
  index_block.TransferTo(it);