@nxtedition/rocksdb 15.4.0 → 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 (402) hide show
  1. package/binding.cc +24 -19
  2. package/cache.js +1 -1
  3. package/chained-batch.js +12 -3
  4. package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
  5. package/deps/rocksdb/rocksdb/BUCK +42 -0
  6. package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
  7. package/deps/rocksdb/rocksdb/Makefile +59 -32
  8. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
  9. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
  10. package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
  11. package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
  12. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
  13. package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
  14. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
  15. package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
  16. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
  18. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
  19. package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  25. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
  26. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
  27. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
  28. package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
  29. package/deps/rocksdb/rocksdb/db/builder.h +7 -0
  30. package/deps/rocksdb/rocksdb/db/c.cc +373 -57
  31. package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
  32. package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
  33. package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
  34. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
  53. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  54. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
  55. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
  57. package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
  58. package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
  59. package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
  60. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
  61. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
  62. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
  63. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
  64. package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
  65. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
  66. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
  67. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
  68. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
  81. package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
  82. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
  83. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
  84. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
  85. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
  86. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
  87. package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
  88. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
  89. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
  90. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
  91. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
  92. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
  93. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
  94. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
  95. package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
  96. package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
  97. package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
  98. package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
  99. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
  100. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
  101. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
  102. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
  103. package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
  104. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
  105. package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
  106. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
  107. package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
  108. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
  110. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
  111. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
  112. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
  113. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
  114. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
  115. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
  116. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
  117. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  118. package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
  119. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
  120. package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
  121. package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
  122. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
  123. package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
  124. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
  125. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  126. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
  127. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
  128. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
  129. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
  130. package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
  131. package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
  132. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
  133. package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
  134. package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
  135. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
  136. package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
  137. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  138. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
  139. package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
  140. package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
  141. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
  142. package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
  143. package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
  144. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
  145. package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
  146. package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
  147. package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
  148. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
  149. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
  150. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
  151. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
  152. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
  153. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
  159. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
  160. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
  161. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
  162. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
  163. package/deps/rocksdb/rocksdb/env/env.cc +1 -0
  164. package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
  165. package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
  166. package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
  167. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  168. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  169. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
  170. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
  171. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
  172. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
  173. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  174. package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
  175. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
  176. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
  177. package/deps/rocksdb/rocksdb/folly.mk +22 -5
  178. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
  179. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
  180. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
  181. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
  182. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
  183. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
  184. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
  185. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
  187. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
  188. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
  189. package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
  192. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
  194. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
  195. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
  196. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
  197. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
  198. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
  199. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
  200. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
  202. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
  203. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
  204. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
  205. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
  206. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
  207. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
  208. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
  209. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
  210. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
  211. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
  212. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  213. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
  214. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
  215. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
  216. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
  217. package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
  218. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
  219. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
  220. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
  221. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
  222. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
  223. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
  224. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
  225. package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
  226. package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
  227. package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
  228. package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
  229. package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
  230. package/deps/rocksdb/rocksdb/options/options.cc +5 -1
  231. package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
  232. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
  233. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
  234. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
  235. package/deps/rocksdb/rocksdb/port/lang.h +4 -0
  236. package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
  237. package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
  238. package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
  239. package/deps/rocksdb/rocksdb/src.mk +12 -0
  240. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
  241. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  242. package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
  243. package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
  247. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
  248. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
  249. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
  250. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
  251. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
  252. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
  253. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
  254. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
  255. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
  256. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
  257. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
  258. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
  259. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
  260. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  261. package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
  262. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
  263. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
  264. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
  265. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
  266. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
  267. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
  268. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
  269. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
  270. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
  271. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  272. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
  273. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
  274. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
  275. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
  276. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
  277. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
  278. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
  279. package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
  280. package/deps/rocksdb/rocksdb/table/format.cc +27 -15
  281. package/deps/rocksdb/rocksdb/table/format.h +41 -15
  282. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
  283. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
  284. package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
  285. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
  286. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  287. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
  288. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
  289. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
  290. package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
  291. package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
  292. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
  293. package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
  294. package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
  295. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
  296. package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
  297. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
  298. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
  299. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
  300. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
  301. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
  302. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
  303. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
  304. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
  305. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
  306. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
  307. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
  308. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
  309. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
  310. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
  311. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
  312. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
  313. package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
  314. package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
  315. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
  316. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
  317. package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
  318. package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
  319. package/deps/rocksdb/rocksdb/util/coding.h +14 -27
  320. package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
  321. package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
  322. package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
  323. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
  324. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
  325. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
  326. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
  327. package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
  328. package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
  329. package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
  330. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
  331. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
  332. package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
  333. package/deps/rocksdb/rocksdb/util/math.h +3 -1
  334. package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
  335. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
  336. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
  337. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
  338. package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
  339. package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
  340. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
  341. package/deps/rocksdb/rocksdb/util/status.cc +3 -1
  342. package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
  343. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
  344. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
  345. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
  346. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
  347. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
  348. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
  349. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
  350. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
  351. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
  352. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
  353. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
  354. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
  355. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
  356. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
  357. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
  358. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
  359. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
  360. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  361. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
  362. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
  363. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
  364. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
  365. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
  366. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
  367. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
  368. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
  369. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
  370. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
  371. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
  372. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
  373. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
  374. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
  375. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
  376. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
  377. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
  378. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  379. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
  380. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
  381. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
  382. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
  383. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
  384. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
  385. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
  386. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
  387. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
  388. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
  389. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
  390. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
  391. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  392. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
  393. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
  394. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
  395. package/deps/rocksdb/rocksdb.gyp +7 -0
  396. package/index.js +11 -2
  397. package/iterator.js +15 -7
  398. package/package.json +1 -1
  399. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  400. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
@@ -131,24 +131,13 @@ using TablePropertiesCollection =
131
131
  class DB {
132
132
  public:
133
133
  // Open the database with the specified "name" for reads and writes.
134
- // Stores a pointer to a heap-allocated database in *dbptr and returns
135
- // OK on success.
136
- // Stores nullptr in *dbptr and returns a non-OK status on error, including
134
+ // On success, stores the database in *dbptr and returns OK.
135
+ // On error, resets *dbptr and returns a non-OK status, including
137
136
  // if the DB is already open (read-write) by another DB object. (This
138
137
  // guarantee depends on options.env->LockFile(), which might not provide
139
138
  // this guarantee in a custom Env implementation.)
140
- //
141
- // Caller must delete *dbptr when it is no longer needed.
142
139
  static Status Open(const Options& options, const std::string& name,
143
140
  std::unique_ptr<DB>* dbptr);
144
- // DEPRECATED: raw pointer variant
145
- static Status Open(const Options& options, const std::string& name,
146
- DB** dbptr) {
147
- std::unique_ptr<DB> smart_ptr;
148
- Status s = Open(options, name, &smart_ptr);
149
- *dbptr = smart_ptr.release();
150
- return s;
151
- }
152
141
 
153
142
  // Open DB with column families.
154
143
  // db_options specify database specific options
@@ -162,21 +151,12 @@ class DB {
162
151
  // If everything is OK, handles will on return be the same size
163
152
  // as column_families --- handles[i] will be a handle that you
164
153
  // will use to operate on column family column_family[i].
165
- // Before delete DB, you have to close All column families by calling
154
+ // Before destroying the DB, you have to close all column families by calling
166
155
  // DestroyColumnFamilyHandle() with all the handles.
167
156
  static Status Open(const DBOptions& db_options, const std::string& name,
168
157
  const std::vector<ColumnFamilyDescriptor>& column_families,
169
158
  std::vector<ColumnFamilyHandle*>* handles,
170
159
  std::unique_ptr<DB>* dbptr);
171
- // DEPRECATED: raw pointer variant
172
- static Status Open(const DBOptions& db_options, const std::string& name,
173
- const std::vector<ColumnFamilyDescriptor>& column_families,
174
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) {
175
- std::unique_ptr<DB> smart_ptr;
176
- Status s = Open(db_options, name, column_families, handles, &smart_ptr);
177
- *dbptr = smart_ptr.release();
178
- return s;
179
- }
180
160
 
181
161
  // OpenForReadOnly() creates a Read-only instance that supports reads alone.
182
162
  //
@@ -195,16 +175,6 @@ class DB {
195
175
  static Status OpenForReadOnly(const Options& options, const std::string& name,
196
176
  std::unique_ptr<DB>* dbptr,
197
177
  bool error_if_wal_file_exists = false);
198
- // DEPRECATED: raw pointer variant
199
- static Status OpenForReadOnly(const Options& options, const std::string& name,
200
- DB** dbptr,
201
- bool error_if_wal_file_exists = false) {
202
- std::unique_ptr<DB> smart_ptr;
203
- Status s =
204
- OpenForReadOnly(options, name, &smart_ptr, error_if_wal_file_exists);
205
- *dbptr = smart_ptr.release();
206
- return s;
207
- }
208
178
 
209
179
  // Open the database for read only with column families.
210
180
  //
@@ -218,18 +188,6 @@ class DB {
218
188
  const std::vector<ColumnFamilyDescriptor>& column_families,
219
189
  std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
220
190
  bool error_if_wal_file_exists = false);
221
- // DEPRECATED: raw pointer variant
222
- static Status OpenForReadOnly(
223
- const DBOptions& db_options, const std::string& name,
224
- const std::vector<ColumnFamilyDescriptor>& column_families,
225
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
226
- bool error_if_wal_file_exists = false) {
227
- std::unique_ptr<DB> smart_ptr;
228
- Status s = OpenForReadOnly(db_options, name, column_families, handles,
229
- &smart_ptr, error_if_wal_file_exists);
230
- *dbptr = smart_ptr.release();
231
- return s;
232
- }
233
191
 
234
192
  // OpenAsSecondary() creates a secondary instance that supports read-only
235
193
  // operations and supports dynamic catch up with the primary (through a
@@ -251,8 +209,6 @@ class DB {
251
209
  // The secondary_path argument points to a directory where the secondary
252
210
  // instance stores its info log.
253
211
  // The dbptr is an out-arg corresponding to the opened secondary instance.
254
- // The pointer points to a heap-allocated database, and the caller should
255
- // delete it after use.
256
212
  //
257
213
  // Return OK on success, non-OK on failures.
258
214
  //
@@ -265,14 +221,6 @@ class DB {
265
221
  static Status OpenAsSecondary(const Options& options, const std::string& name,
266
222
  const std::string& secondary_path,
267
223
  std::unique_ptr<DB>* dbptr);
268
- // DEPRECATED: raw pointer variant
269
- static Status OpenAsSecondary(const Options& options, const std::string& name,
270
- const std::string& secondary_path, DB** dbptr) {
271
- std::unique_ptr<DB> smart_ptr;
272
- Status s = OpenAsSecondary(options, name, secondary_path, &smart_ptr);
273
- *dbptr = smart_ptr.release();
274
- return s;
275
- }
276
224
 
277
225
  // Open DB as secondary instance with specified column families
278
226
  //
@@ -301,9 +249,8 @@ class DB {
301
249
  // The handles is an out-arg corresponding to the opened database column
302
250
  // family handles.
303
251
  // The dbptr is an out-arg corresponding to the opened secondary instance.
304
- // The pointer points to a heap-allocated database, and the caller should
305
- // delete it after use. Before deleting the dbptr, the user should also
306
- // delete the pointers stored in handles vector.
252
+ // Before destroying the DB, the user should call
253
+ // DestroyColumnFamilyHandle() on all the handles.
307
254
  //
308
255
  // Return OK on success, non-OK on failures.
309
256
  static Status OpenAsSecondary(
@@ -311,18 +258,6 @@ class DB {
311
258
  const std::string& secondary_path,
312
259
  const std::vector<ColumnFamilyDescriptor>& column_families,
313
260
  std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr);
314
- // DEPRECATED: raw pointer variant
315
- static Status OpenAsSecondary(
316
- const DBOptions& db_options, const std::string& name,
317
- const std::string& secondary_path,
318
- const std::vector<ColumnFamilyDescriptor>& column_families,
319
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) {
320
- std::unique_ptr<DB> smart_ptr;
321
- Status s = OpenAsSecondary(db_options, name, secondary_path,
322
- column_families, handles, &smart_ptr);
323
- *dbptr = smart_ptr.release();
324
- return s;
325
- }
326
261
 
327
262
  // EXPERIMENTAL
328
263
 
@@ -389,18 +324,6 @@ class DB {
389
324
  const std::vector<ColumnFamilyDescriptor>& column_families,
390
325
  std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
391
326
  std::string trim_ts);
392
- // DEPRECATED: raw pointer variant
393
- static Status OpenAndTrimHistory(
394
- const DBOptions& db_options, const std::string& dbname,
395
- const std::vector<ColumnFamilyDescriptor>& column_families,
396
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
397
- std::string trim_ts) {
398
- std::unique_ptr<DB> smart_ptr;
399
- Status s = OpenAndTrimHistory(db_options, dbname, column_families, handles,
400
- &smart_ptr, trim_ts);
401
- *dbptr = smart_ptr.release();
402
- return s;
403
- }
404
327
 
405
328
  // Manually, synchronously attempt to resume DB writes after a write failure
406
329
  // to the underlying filesystem. See
@@ -1063,7 +986,7 @@ class DB {
1063
986
  // call one of the Seek methods on the iterator before using it).
1064
987
  //
1065
988
  // Caller should delete the iterator when it is no longer needed.
1066
- // The returned iterator should be deleted before this db is deleted.
989
+ // The returned iterator should be deleted before this db is destroyed.
1067
990
  virtual Iterator* NewIterator(const ReadOptions& options,
1068
991
  ColumnFamilyHandle* column_family) = 0;
1069
992
  virtual Iterator* NewIterator(const ReadOptions& options) {
@@ -1071,7 +994,7 @@ class DB {
1071
994
  }
1072
995
  // Returns iterators from a consistent database state across multiple
1073
996
  // column families. Iterators are heap allocated and need to be deleted
1074
- // before the db is deleted
997
+ // before the db is destroyed
1075
998
  virtual Status NewIterators(
1076
999
  const ReadOptions& options,
1077
1000
  const std::vector<ColumnFamilyHandle*>& column_families,
@@ -1253,6 +1176,10 @@ class DB {
1253
1176
  // sorted runs being processed by currently running compactions.
1254
1177
  static const std::string kNumRunningCompactionSortedRuns;
1255
1178
 
1179
+ // "rocksdb.compaction-abort-count" - returns the current value of the
1180
+ // compaction abort counter.
1181
+ static const std::string kCompactionAbortCount;
1182
+
1256
1183
  // "rocksdb.background-errors" - returns accumulated number of background
1257
1184
  // errors.
1258
1185
  static const std::string kBackgroundErrors;
@@ -1628,15 +1555,39 @@ class DB {
1628
1555
  // s = db->SetOptions(cfh, {{"block_based_table_factory",
1629
1556
  // "{prepopulate_block_cache=kDisable;}"}});
1630
1557
  virtual Status SetOptions(
1631
- ColumnFamilyHandle* /*column_family*/,
1632
- const std::unordered_map<std::string, std::string>& /*opts_map*/) {
1633
- return Status::NotSupported("Not implemented");
1558
+ ColumnFamilyHandle* column_family,
1559
+ const std::unordered_map<std::string, std::string>& opts_map) {
1560
+ return SetOptions(std::vector<ColumnFamilyHandle*>{column_family},
1561
+ opts_map);
1634
1562
  }
1635
1563
  // Shortcut for SetOptions on the default column family handle.
1636
1564
  virtual Status SetOptions(
1637
1565
  const std::unordered_map<std::string, std::string>& new_options) {
1638
1566
  return SetOptions(DefaultColumnFamily(), new_options);
1639
1567
  }
1568
+ // Shortcut where you want to apply the same options to multiple column
1569
+ // families. Beneficial for avoiding reserialization of OPTIONS file.
1570
+ virtual Status SetOptions(
1571
+ const std::vector<ColumnFamilyHandle*>& column_families,
1572
+ const std::unordered_map<std::string, std::string>& opts_map) {
1573
+ std::unordered_map<ColumnFamilyHandle*,
1574
+ std::unordered_map<std::string, std::string>>
1575
+ column_families_opts_map;
1576
+ column_families_opts_map.reserve(column_families.size());
1577
+ for (auto* cf : column_families) {
1578
+ column_families_opts_map[cf] = opts_map;
1579
+ }
1580
+ return SetOptions(column_families_opts_map);
1581
+ }
1582
+ // SetOptions with potentially different options per column family. It is
1583
+ // typically better to batch all option changes together as the OPTIONS file
1584
+ // is written to once per SetOptions call.
1585
+ virtual Status SetOptions(
1586
+ const std::unordered_map<ColumnFamilyHandle*,
1587
+ std::unordered_map<std::string, std::string>>&
1588
+ /*column_families_opts_map*/) {
1589
+ return Status::NotSupported("Not implemented");
1590
+ }
1640
1591
 
1641
1592
  // Like SetOptions but for DBOptions, including the same caveats for
1642
1593
  // usability, reliability, and performance. See GetDBOptionsFromMap() (and
@@ -1707,6 +1658,46 @@ class DB {
1707
1658
  // DisableManualCompaction() has been called.
1708
1659
  virtual void EnableManualCompaction() = 0;
1709
1660
 
1661
+ // Abort all compaction work/jobs. This function will signal all
1662
+ // running compactions (both automatic and manual, background and foreground)
1663
+ // to abort and will wait for them to finish or abort before returning. After
1664
+ // this function returns, new compaction work will be aborted immediately
1665
+ // until ResumeAllCompactions() is called.
1666
+ //
1667
+ // The compaction abort is checked periodically (every 1000 keys processed),
1668
+ // so ongoing compactions should abort as well within a reasonable time.
1669
+ // This function blocks until all compactions have completed or aborted.
1670
+ //
1671
+ // Any output files from aborted compactions are automatically cleaned up,
1672
+ // ensuring no partial compaction results are installed, except for resumable
1673
+ // compaction.
1674
+ //
1675
+ // This function supports concurrent abort requests from multiple callers
1676
+ // without coordination between them. The call count is tracked, and
1677
+ // compactions only resume after the number of ResumeAllCompactions() calls
1678
+ // matches number of AbortAllCompactions() calls.
1679
+ //
1680
+ // Differences with other compaction control APIs:
1681
+ // - DisableManualCompaction(): Only pauses manual compactions, waits for
1682
+ // them to finish naturally. AbortAllCompactions() actively cancels both
1683
+ // automatic and manual compactions.
1684
+ // - PauseBackgroundWork(): Pauses all background work (flush + compaction),
1685
+ // waits for work to finish naturally. AbortAllCompactions() only affects
1686
+ // compactions and actively cancels them.
1687
+ //
1688
+ // Note: Compaction service (remote compaction) is not currently supported.
1689
+ // Aborted compactions return Status::Incomplete with subcode
1690
+ // kCompactionAborted.
1691
+ virtual void AbortAllCompactions() = 0;
1692
+
1693
+ // Resume all compactions that were aborted by AbortAllCompactions().
1694
+ // This function must be called as many times as AbortAllCompactions()
1695
+ // has been called in order to resume compactions. This reference-counting
1696
+ // behavior ensures that if multiple callers independently request an
1697
+ // abort, compactions will not resume until all of them have called
1698
+ // ResumeAllCompactions().
1699
+ virtual void ResumeAllCompactions() = 0;
1700
+
1710
1701
  // Wait for all flush and compactions jobs to finish. Jobs to wait include the
1711
1702
  // unscheduled (queued, but not scheduled yet). If the db is shutting down,
1712
1703
  // Status::ShutdownInProgress will be returned.
@@ -1723,16 +1714,6 @@ class DB {
1723
1714
  virtual int NumberLevels(ColumnFamilyHandle* column_family) = 0;
1724
1715
  virtual int NumberLevels() { return NumberLevels(DefaultColumnFamily()); }
1725
1716
 
1726
- // DEPRECATED:
1727
- // Maximum level to which a new compacted memtable is pushed if it
1728
- // does not create overlap.
1729
- virtual int MaxMemCompactionLevel(ColumnFamilyHandle* /*column_family*/) {
1730
- return 0;
1731
- }
1732
- virtual int MaxMemCompactionLevel() {
1733
- return MaxMemCompactionLevel(DefaultColumnFamily());
1734
- }
1735
-
1736
1717
  // Number of files in level-0 that would stop writes.
1737
1718
  virtual int Level0StopWriteTrigger(ColumnFamilyHandle* column_family) = 0;
1738
1719
  virtual int Level0StopWriteTrigger() {
@@ -86,7 +86,7 @@ Status UpdateManifestForFilesState(
86
86
  // keys in a category to return an empty sequence of segments.
87
87
  //
88
88
  // To eliminate a confusing distinction between a segment that is empty vs.
89
- // "not present" for a particular key, each key is logically assiciated with
89
+ // "not present" for a particular key, each key is logically associated with
90
90
  // an infinite sequence of segments, including some infinite tail of 0-length
91
91
  // segments. In practice, we only represent a finite sequence that (at least)
92
92
  // covers the non-trivial segments.
@@ -220,7 +220,7 @@ Status UpdateManifestForFilesState(
220
220
  // whole key.
221
221
  // * Range query - Whether there {definitely isn't, might be} any entries
222
222
  // within a lower and upper key bound, in an SST file (or partition, etc.).
223
- // NOTE: For this disucssion, we ignore the detail of inclusive vs.
223
+ // NOTE: For this discussion, we ignore the detail of inclusive vs.
224
224
  // exclusive bounds by assuming a generalized notion of "bound" (vs. key)
225
225
  // that conveniently represents spaces between keys. For details, see
226
226
  // https://github.com/facebook/rocksdb/pull/11434
@@ -300,7 +300,7 @@ Status UpdateManifestForFilesState(
300
300
  // * Keys x and z are in categories in category set s, and
301
301
  // * Key y is ordered x < y < z according to the CF comparator,
302
302
  // then both
303
- // * The common segment prefix property is satisifed through ordinal i-1
303
+ // * The common segment prefix property is satisfied through ordinal i-1
304
304
  // and with category set s
305
305
  // * x_i..j <= y_i..j <= z_i..j according to segment comparator c, where
306
306
  // x_i..j is the concatenation of segments i through j of key x (etc.).
@@ -115,14 +115,14 @@ class ExternalTableReader {
115
115
  // Point lookup the given key and return its value
116
116
  virtual Status Get(const ReadOptions& read_options, const Slice& key,
117
117
  const SliceTransform* prefix_extractor,
118
- std::string* value) = 0;
118
+ PinnableSlice* value) = 0;
119
119
 
120
120
  // Point lookup the given vector of keys and return the values, as well
121
121
  // as status of each individual lookup in statuses.
122
122
  virtual void MultiGet(const ReadOptions& read_options,
123
123
  const std::vector<Slice>& keys,
124
124
  const SliceTransform* prefix_extractor,
125
- std::vector<std::string>* values,
125
+ std::vector<PinnableSlice>* values,
126
126
  std::vector<Status>* statuses) = 0;
127
127
 
128
128
  // Allocate and return the contents of the properties block. If the builder
@@ -22,7 +22,12 @@ namespace ROCKSDB_NAMESPACE {
22
22
  // The unknown file checksum.
23
23
  constexpr char kUnknownFileChecksum[] = "";
24
24
  // The unknown sst file checksum function name.
25
+ // Indicates that the file metadata says that no checksum factory was configured
26
+ // when the file was written.
25
27
  constexpr char kUnknownFileChecksumFuncName[] = "Unknown";
28
+ // Used when opening a file and there is no file checksum metadata to propagate
29
+ // at all.
30
+ constexpr char kNoFileChecksumFuncName[] = "Unavailable";
26
31
  // The standard DB file checksum function name.
27
32
  // This is the name of the checksum function returned by
28
33
  // GetFileChecksumGenCrc32cFactory();
@@ -201,6 +201,19 @@ struct FileOptions : EnvOptions {
201
201
  // FSWritableFile object creation.
202
202
  Env::WriteLifeTimeHint write_hint = Env::WLTH_NOT_SET;
203
203
 
204
+ // File checksum of the file being opened. Empty string if no checksum is
205
+ // available.
206
+ std::string file_checksum;
207
+
208
+ // Name of the checksum function used to compute file_checksum. Set to
209
+ // kUnknownFileChecksumFuncName when file was created without a checksum
210
+ // factory. Set to kNoFileChecksumFuncName when no checksum metadata is
211
+ // available.
212
+ // Production FileSystems will accept empty values for both
213
+ // file_checksum and file_checksum_func_name, but internally within RocksDB
214
+ // that is forbidden for checking/auditing purposes.
215
+ std::string file_checksum_func_name;
216
+
204
217
  FileOptions() : EnvOptions(), handoff_checksum_type(ChecksumType::kCRC32c) {}
205
218
 
206
219
  FileOptions(const DBOptions& opts)
@@ -216,7 +229,9 @@ struct FileOptions : EnvOptions {
216
229
  io_options(opts.io_options),
217
230
  temperature(opts.temperature),
218
231
  handoff_checksum_type(opts.handoff_checksum_type),
219
- write_hint(opts.write_hint) {}
232
+ write_hint(opts.write_hint),
233
+ file_checksum(opts.file_checksum),
234
+ file_checksum_func_name(opts.file_checksum_func_name) {}
220
235
 
221
236
  FileOptions& operator=(const FileOptions&) = default;
222
237
  };
@@ -750,7 +765,7 @@ class FileSystem : public Customizable {
750
765
  // Abort the read IO requests submitted asynchronously. Underlying FS is
751
766
  // required to support AbortIO API. AbortIO implementation should ensure that
752
767
  // the all the read requests related to io_handles should be aborted and
753
- // it shouldn't call the callback for these io_handles.
768
+ // it should call the callback for these io_handles.
754
769
  virtual IOStatus AbortIO(std::vector<void*>& /*io_handles*/) {
755
770
  return IOStatus::OK();
756
771
  }
@@ -44,7 +44,7 @@ void call(Function f, Tuple t) {
44
44
  template <typename... Args>
45
45
  class FunctorWrapper {
46
46
  public:
47
- explicit FunctorWrapper(std::function<void(Args...)> functor, Args &&...args)
47
+ explicit FunctorWrapper(std::function<void(Args...)> functor, Args&&... args)
48
48
  : functor_(std::move(functor)), args_(std::forward<Args>(args)...) {}
49
49
 
50
50
  void invoke() { detail::call(functor_, args_); }