@nxtedition/rocksdb 15.4.1 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/binding.cc +70 -23
  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/index.js +70 -10
  395. package/iterator.js +25 -3
  396. package/max_rev_operator.h +9 -5
  397. package/package.json +1 -1
  398. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  399. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
@@ -16,30 +16,34 @@
16
16
  #include "rocksdb/options.h"
17
17
  #include "rocksdb/slice.h"
18
18
  #include "rocksdb/status.h"
19
+ #include "rocksdb/types.h"
19
20
 
20
21
  namespace ROCKSDB_NAMESPACE {
21
22
 
22
23
  // Prefix for user-defined index block names
23
- inline const std::string kUserDefinedIndexPrefix =
24
+ inline constexpr const char* kUserDefinedIndexPrefix =
24
25
  "rocksdb.user_defined_index.";
25
26
 
26
27
  // This is a public API for user-defined index builders.
27
28
  // It allows users to define their own index format and build custom
28
29
  // indexes during table building. Currently, only a monolithic index
29
30
  // block is supported (no partitioned index).
30
- //
31
- // This is currently supported only for a restricted set of use cases. The
32
- // CF must be ingest only, and only files containing Puts generated by
33
- // SstFileWriter are supported.
34
31
 
35
32
  // The interface for building user-defined index.
36
33
  class UserDefinedIndexBuilder {
37
34
  public:
38
- // Right now, we only support Puts. In the future, we may support merges,
39
- // deletions etc.
40
- enum ValueType {
41
- kValue,
42
- kTypeMax,
35
+ // Indicates the type of key-value entry being added via OnKeyAdded().
36
+ // UDI builders that only use AddIndexEntry() (e.g., trie-based indexes)
37
+ // can safely ignore this.
38
+ enum ValueType : uint8_t {
39
+ kValue = 0, // Put: the value is the full user value.
40
+ kDelete = 1, // Deletion (Delete, SingleDelete, or DeleteWithTimestamp):
41
+ // the value is typically empty.
42
+ kMerge = 2, // Merge operand: the value is a partial update.
43
+ kOther = 3, // Other types (e.g., blob reference, wide-column entity).
44
+ // The value format is type-specific and may not be the
45
+ // actual user data.
46
+ kTypeMax, // Sentinel — must be last. Value may change across releases.
43
47
  };
44
48
 
45
49
  // File offset and size of the data block
@@ -48,41 +52,68 @@ class UserDefinedIndexBuilder {
48
52
  uint64_t size;
49
53
  };
50
54
 
55
+ // Optional context for AddIndexEntry providing sequence numbers at block
56
+ // boundaries. Passed as a struct for forward-compatible extensibility
57
+ // (new fields can be added without breaking existing implementations).
58
+ struct IndexEntryContext {
59
+ // Sequence number of last_key_in_current_block.
60
+ SequenceNumber last_key_seq = 0;
61
+ // Sequence number of first_key_in_next_block (valid only when
62
+ // first_key_in_next_block != nullptr).
63
+ SequenceNumber first_key_seq = 0;
64
+ };
65
+
51
66
  virtual ~UserDefinedIndexBuilder() = default;
52
67
 
53
- // Add a new index entry to index block. The key for the new index entry
54
- // should be >= last_key_in_current_block and < first_key_in_next_block.
55
- // The previous index entry key and the new index entry key cover
56
- // all the keys in the data block associated with the new index entry.
68
+ // Add a new index entry for a data block boundary.
69
+ //
70
+ // The keys are user keys (without the 8-byte internal key trailer).
57
71
  //
58
- // The last_key_in_current_block and first_key_in_next_block will be user
59
- // keys, i.e the user key string, and optionally the user timestamp if one
60
- // is configured, without a sequence number suffix.
72
+ // The UDI is free to compute a separator between the two user keys and
73
+ // store it along with the block handle. The separator must satisfy:
74
+ // last_key_in_current_block <= separator < first_key_in_next_block
75
+ // in user-key order (ignoring sequence numbers).
61
76
  //
62
77
  // Called before the OnKeyAdded() call for first_key_in_next_block.
63
- // @last_key_in_current_block: The last key in the current data block
64
- // @first_key_in_next_block: it will be nullptr if the entry being added is
65
- // the last one in the table
66
- // @block_handle: offset/size of the data block referenced by this index
67
- // entry. This should be stored along with the index entry
68
- // key
69
- // @separator_scratch: a scratch buffer to back a computed separator between
70
- // those, as needed. May be modified on each call.
71
- // @return: the key or separator stored in the index, which could be
72
- // last_key_in_current_block or a computed separator backed by
73
- // separator_scratch.
78
+ // @last_key_in_current_block: The last user key in the current data block
79
+ // @first_key_in_next_block: First user key in the next data block, or
80
+ // nullptr if this is the last block
81
+ // @block_handle: offset/size of the data block
82
+ // @separator_scratch: scratch buffer for a computed separator
83
+ // @context: sequence number context for block boundaries. The sequence
84
+ // numbers are needed when the same user key spans a data block boundary
85
+ // (e.g., when snapshots keep multiple versions of a key). Without
86
+ // sequence numbers, the UDI cannot produce a separator that distinguishes
87
+ // the two blocks. This mirrors the internal index's behavior of switching
88
+ // to full internal-key separators (see
89
+ // ShortenedIndexBuilder::must_use_separator_with_seq_).
90
+ // Implementations that don't need sequence numbers can ignore the context.
91
+ // @return: the separator stored in the index
74
92
  virtual Slice AddIndexEntry(const Slice& last_key_in_current_block,
75
93
  const Slice* first_key_in_next_block,
76
94
  const BlockHandle& block_handle,
77
- std::string* separator_scratch) = 0;
95
+ std::string* separator_scratch,
96
+ const IndexEntryContext& context) = 0;
78
97
 
79
- // This method will be called whenever a key is added. The subclasses may
80
- // override OnKeyAdded() if they need to collect additional information.
81
- // The type argument indicates whether the value is a full value or partial.
82
- // At the moment, only full values are supported.
98
+ // Called for every key-value pair added to the SST file. UDI builders may
99
+ // override this to collect per-key information (e.g., for secondary
100
+ // indexes). Builders that only use separator keys from AddIndexEntry()
101
+ // (e.g., trie-based indexes) can leave this as a no-op.
83
102
  //
84
- // The key will be a user key. RocksDB guarantees that there will only be
85
- // one entry for each key in the file/index.
103
+ // @key: The user key (without sequence number or type suffix).
104
+ // @type: The entry type kValue (Put), kDelete, kMerge, or kOther.
105
+ // For kDelete entries, the value may be empty. For kOther, the
106
+ // value format is type-specific and may not be actual user data.
107
+ // @value: The associated value (may be empty for deletions).
108
+ //
109
+ // NOTE: In SST files produced by flush or compaction, there may be multiple
110
+ // entries for the same user key with different sequence numbers (e.g., when
111
+ // snapshots are active). UDI builders that use OnKeyAdded() should be
112
+ // prepared for this.
113
+ //
114
+ // Thread safety: For a given builder instance, OnKeyAdded() and
115
+ // AddIndexEntry() are always called from a single thread. Builders do
116
+ // not need internal synchronization.
86
117
  virtual void OnKeyAdded(const Slice& /*key*/, ValueType /*type*/,
87
118
  const Slice& /*value*/) {}
88
119
 
@@ -104,13 +135,36 @@ class UserDefinedIndexIterator {
104
135
  // this as an opportunity to do any prefetching and buffering of results.
105
136
  virtual void Prepare(const ScanOptions scan_opts[], size_t num_opts) = 0;
106
137
 
138
+ // Optional context for SeekAndGetResult providing the target sequence
139
+ // number. Passed as a struct for forward-compatible extensibility.
140
+ struct SeekContext {
141
+ // Sequence number of the target key. Used by UDI implementations that
142
+ // encode sequence numbers (when the same user key spans multiple data
143
+ // blocks) to locate the correct block.
144
+ SequenceNumber target_seq = 0;
145
+ };
146
+
147
+ // Position the index iterator at the very first index entry. The result
148
+ // must be populated the same way as SeekAndGetResult.
149
+ //
150
+ // The default implementation calls SeekAndGetResult with an empty key,
151
+ // which works for BytewiseComparator (empty string is the smallest key).
152
+ // Implementations should override this if they can reach the first entry
153
+ // more efficiently or if they use a comparator where empty is not smallest.
154
+ virtual Status SeekToFirstAndGetResult(IterateResult* result) {
155
+ return SeekAndGetResult(Slice(), result, SeekContext{});
156
+ }
157
+
107
158
  // Given the target key, position the index iterator at the index entry
108
- // with the smallest key >= target. The result must be updated with the
109
- // index key, and the bound_check_result. The bound_check_result should
110
- // be set to kOutOfBound if no block satisfies the target key and
111
- // termination criteria, kInbound if the data block is definitely fully
112
- // within bounds, or kUnknown if the data block could be partially
113
- // within bounds.
159
+ // for the data block that may contain the target.
160
+ //
161
+ // The target is a user key.
162
+ //
163
+ // The result must be updated with the index key and bound_check_result.
164
+ // bound_check_result should be kOutOfBound if no block satisfies the
165
+ // target, kInbound if the data block is definitely within bounds, or
166
+ // kUnknown if partially within bounds.
167
+ //
114
168
  // The UDI implementation needs to be careful about returning kOutOfBound.
115
169
  // If a limit key is specified in ScanOptions, an implementation that
116
170
  // does not store the first key in the block for the corresponding index
@@ -119,8 +173,14 @@ class UserDefinedIndexIterator {
119
173
  // is out of bounds w.r.t the limit. Other termination criteria (specified
120
174
  // in property_bag) may cause the scan to terminate earlier, in which case
121
175
  // kOutOfBound can be returned earlier.
122
- virtual Status SeekAndGetResult(const Slice& target,
123
- IterateResult* result) = 0;
176
+ //
177
+ // @context: sequence number context for the seek. The sequence number is
178
+ // needed when the same user key spans multiple data blocks with different
179
+ // sequence numbers. Without it, the UDI cannot distinguish which block to
180
+ // return for a given (user_key, seqno) target. Implementations that don't
181
+ // need sequence numbers can ignore the context.
182
+ virtual Status SeekAndGetResult(const Slice& target, IterateResult* result,
183
+ const SeekContext& context) = 0;
124
184
 
125
185
  // Advance to the next index entry. The result must be populated similar
126
186
  // to SeekAndGetResult.
@@ -152,7 +212,7 @@ struct UserDefinedIndexOption {
152
212
  // Factory for creating user-defined index builders.
153
213
  class UserDefinedIndexFactory : public Customizable {
154
214
  public:
155
- virtual ~UserDefinedIndexFactory() = default;
215
+ ~UserDefinedIndexFactory() override = default;
156
216
 
157
217
  static const char* Type() { return "UserDefinedIndexFactory"; }
158
218
 
@@ -174,14 +234,14 @@ class UserDefinedIndexFactory : public Customizable {
174
234
  std::unique_ptr<UserDefinedIndexBuilder>& builder) const {
175
235
  builder.reset(NewBuilder());
176
236
  return Status::OK();
177
- };
237
+ }
178
238
 
179
239
  virtual Status NewReader(
180
240
  const UserDefinedIndexOption& /*option*/, Slice& index_block,
181
241
  std::unique_ptr<UserDefinedIndexReader>& reader) const {
182
242
  reader = NewReader(index_block);
183
243
  return Status::OK();
184
- };
244
+ }
185
245
  };
186
246
 
187
247
  } // namespace ROCKSDB_NAMESPACE
@@ -66,7 +66,7 @@ class DBWithTTL : public StackableDB {
66
66
  virtual Status GetTtl(ColumnFamilyHandle* h, int32_t* ttl) = 0;
67
67
 
68
68
  protected:
69
- explicit DBWithTTL(DB* db) : StackableDB(db) {}
69
+ explicit DBWithTTL(std::unique_ptr<DB>&& db) : StackableDB(std::move(db)) {}
70
70
  };
71
71
 
72
72
  } // namespace ROCKSDB_NAMESPACE
@@ -11,6 +11,7 @@
11
11
  #include <algorithm>
12
12
  #include <functional>
13
13
  #include <map>
14
+ #include <memory>
14
15
  #include <sstream>
15
16
  #include <string>
16
17
  #include <vector>
@@ -23,6 +24,7 @@
23
24
  #include "rocksdb/slice.h"
24
25
  #include "rocksdb/utilities/db_ttl.h"
25
26
  #include "rocksdb/utilities/ldb_cmd_execute_result.h"
27
+ #include "rocksdb/utilities/transaction_db.h"
26
28
 
27
29
  namespace ROCKSDB_NAMESPACE {
28
30
 
@@ -42,6 +44,8 @@ class LDBCommand {
42
44
  static const std::string ARG_TTL;
43
45
  static const std::string ARG_TTL_START;
44
46
  static const std::string ARG_TTL_END;
47
+ static const std::string ARG_USE_TXN;
48
+ static const std::string ARG_TXN_WRITE_POLICY;
45
49
  static const std::string ARG_TIMESTAMP;
46
50
  static const std::string ARG_TRY_LOAD_OPTIONS;
47
51
  static const std::string ARG_IGNORE_UNKNOWN_OPTIONS;
@@ -53,6 +57,7 @@ class LDBCommand {
53
57
  static const std::string ARG_COMPRESSION_TYPE;
54
58
  static const std::string ARG_COMPRESSION_MAX_DICT_BYTES;
55
59
  static const std::string ARG_BLOCK_SIZE;
60
+ static const std::string ARG_UNIFORM_CV_THRESHOLD;
56
61
  static const std::string ARG_AUTO_COMPACTION;
57
62
  static const std::string ARG_DB_WRITE_BUFFER_SIZE;
58
63
  static const std::string ARG_WRITE_BUFFER_SIZE;
@@ -163,8 +168,9 @@ class LDBCommand {
163
168
  std::string secondary_path_;
164
169
  std::string leader_path_;
165
170
  std::string column_family_name_;
166
- DB* db_;
171
+ std::unique_ptr<DB> db_;
167
172
  DBWithTTL* db_ttl_;
173
+ TransactionDB* db_txn_;
168
174
  std::map<std::string, ColumnFamilyHandle*> cf_handles_;
169
175
  std::map<uint32_t, const Comparator*> ucmps_;
170
176
 
@@ -183,6 +189,13 @@ class LDBCommand {
183
189
  /** If true, the value is treated as timestamp suffixed */
184
190
  bool is_db_ttl_;
185
191
 
192
+ /** If true, open the DB as TransactionDB */
193
+ bool is_db_txn_;
194
+
195
+ /** Transaction write policy (0=WRITE_COMMITTED, 1=WRITE_PREPARED,
196
+ * 2=WRITE_UNPREPARED) */
197
+ int txn_write_policy_;
198
+
186
199
  // If true, the kvs are output with their insert/modify timestamp in a ttl db
187
200
  bool timestamp_;
188
201
 
@@ -6,6 +6,7 @@
6
6
  #pragma once
7
7
 
8
8
  #include <map>
9
+ #include <memory>
9
10
  #include <string>
10
11
  #include <unordered_set>
11
12
  #include <vector>
@@ -39,8 +40,11 @@ class MemoryUtil {
39
40
  // only report the usage of the input "cache_set" without
40
41
  // including those Cache usage inside the input list "dbs"
41
42
  // of DBs.
43
+ //
44
+ // Supports vectors of DB* or unique_ptr<DB>.
45
+ template <typename DBPtr>
42
46
  static Status GetApproximateMemoryUsageByType(
43
- const std::vector<DB*>& dbs,
47
+ const std::vector<DBPtr>& dbs,
44
48
  const std::unordered_set<const Cache*> cache_set,
45
49
  std::map<MemoryUtil::UsageType, uint64_t>* usage_by_type);
46
50
  };
@@ -123,7 +123,8 @@ class OptimisticTransactionDB : public StackableDB {
123
123
 
124
124
  protected:
125
125
  // To Create an OptimisticTransactionDB, call Open()
126
- explicit OptimisticTransactionDB(DB* db) : StackableDB(db) {}
126
+ explicit OptimisticTransactionDB(std::unique_ptr<DB>&& db)
127
+ : StackableDB(std::move(db)) {}
127
128
  };
128
129
 
129
130
  } // namespace ROCKSDB_NAMESPACE
@@ -375,6 +375,8 @@ class StackableDB : public DB {
375
375
  void DisableManualCompaction() override {
376
376
  return db_->DisableManualCompaction();
377
377
  }
378
+ void AbortAllCompactions() override { return db_->AbortAllCompactions(); }
379
+ void ResumeAllCompactions() override { return db_->ResumeAllCompactions(); }
378
380
 
379
381
  Status WaitForCompact(
380
382
  const WaitForCompactOptions& wait_for_compact_options) override {
@@ -386,11 +388,6 @@ class StackableDB : public DB {
386
388
  return db_->NumberLevels(column_family);
387
389
  }
388
390
 
389
- using DB::MaxMemCompactionLevel;
390
- int MaxMemCompactionLevel(ColumnFamilyHandle* column_family) override {
391
- return db_->MaxMemCompactionLevel(column_family);
392
- }
393
-
394
391
  using DB::Level0StopWriteTrigger;
395
392
  int Level0StopWriteTrigger(ColumnFamilyHandle* column_family) override {
396
393
  return db_->Level0StopWriteTrigger(column_family);
@@ -549,10 +546,11 @@ class StackableDB : public DB {
549
546
  }
550
547
 
551
548
  using DB::SetOptions;
552
- Status SetOptions(ColumnFamilyHandle* column_family_handle,
553
- const std::unordered_map<std::string, std::string>&
554
- new_options) override {
555
- return db_->SetOptions(column_family_handle, new_options);
549
+ Status SetOptions(
550
+ const std::unordered_map<ColumnFamilyHandle*,
551
+ std::unordered_map<std::string, std::string>>&
552
+ column_families_opts_map) override {
553
+ return db_->SetOptions(column_families_opts_map);
556
554
  }
557
555
 
558
556
  Status SetDBOptions(const std::unordered_map<std::string, std::string>&
@@ -11,8 +11,8 @@
11
11
 
12
12
  // NOTE: in 'main' development branch, this should be the *next*
13
13
  // minor or major version number planned for release.
14
- #define ROCKSDB_MAJOR 10
15
- #define ROCKSDB_MINOR 10
14
+ #define ROCKSDB_MAJOR 11
15
+ #define ROCKSDB_MINOR 1
16
16
  #define ROCKSDB_PATCH 1
17
17
 
18
18
  // Make it easy to do conditional compilation based on version checks, i.e.
@@ -647,7 +647,7 @@ TEST_F(AutoRollLoggerTest, LogHeaderTest) {
647
647
  }
648
648
 
649
649
  TEST_F(AutoRollLoggerTest, LogFileExistence) {
650
- ROCKSDB_NAMESPACE::DB* db;
650
+ std::unique_ptr<ROCKSDB_NAMESPACE::DB> db;
651
651
  ROCKSDB_NAMESPACE::Options options;
652
652
  #ifdef OS_WIN
653
653
  // Replace all slashes in the path so windows CompSpec does not
@@ -664,7 +664,6 @@ TEST_F(AutoRollLoggerTest, LogFileExistence) {
664
664
  options.create_if_missing = true;
665
665
  ASSERT_OK(ROCKSDB_NAMESPACE::DB::Open(options, kTestDir, &db));
666
666
  ASSERT_OK(default_env->FileExists(kLogFile));
667
- delete db;
668
667
  }
669
668
 
670
669
  TEST_F(AutoRollLoggerTest, FileCreateFailure) {
@@ -83,7 +83,7 @@ TEST_P(MemoryAllocatorTest, DatabaseBlockCache) {
83
83
  auto cache = NewLRUCache(1024 * 1024, 6, false, 0.0, allocator_);
84
84
  table_options.block_cache = cache;
85
85
  options.table_factory.reset(NewBlockBasedTableFactory(table_options));
86
- DB* db = nullptr;
86
+ std::unique_ptr<DB> db;
87
87
  Status s = DB::Open(options, dbname, &db);
88
88
  ASSERT_OK(s);
89
89
  ASSERT_NE(db, nullptr);
@@ -115,7 +115,7 @@ TEST_P(MemoryAllocatorTest, DatabaseBlockCache) {
115
115
  // Close database
116
116
  s = db->Close();
117
117
  ASSERT_OK(s);
118
- delete db;
118
+ db.reset();
119
119
  ASSERT_OK(DestroyDB(dbname, options));
120
120
  }
121
121