@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
@@ -11,6 +11,7 @@
11
11
 
12
12
  #include <cstdlib>
13
13
  #include <map>
14
+ #include <memory>
14
15
  #include <unordered_set>
15
16
  #include <vector>
16
17
 
@@ -89,10 +90,12 @@ using ROCKSDB_NAMESPACE::EnvOptions;
89
90
  using ROCKSDB_NAMESPACE::EventListener;
90
91
  using ROCKSDB_NAMESPACE::ExportImportFilesMetaData;
91
92
  using ROCKSDB_NAMESPACE::ExternalFileIngestionInfo;
93
+ using ROCKSDB_NAMESPACE::FileChecksumGenFactory;
92
94
  using ROCKSDB_NAMESPACE::FileLock;
93
95
  using ROCKSDB_NAMESPACE::FilterPolicy;
94
96
  using ROCKSDB_NAMESPACE::FlushJobInfo;
95
97
  using ROCKSDB_NAMESPACE::FlushOptions;
98
+ using ROCKSDB_NAMESPACE::GetFileChecksumGenCrc32cFactory;
96
99
  using ROCKSDB_NAMESPACE::HistogramData;
97
100
  using ROCKSDB_NAMESPACE::HyperClockCacheOptions;
98
101
  using ROCKSDB_NAMESPACE::ImportColumnFamilyOptions;
@@ -112,6 +115,7 @@ using ROCKSDB_NAMESPACE::NewCompactOnDeletionCollectorFactory;
112
115
  using ROCKSDB_NAMESPACE::NewGenericRateLimiter;
113
116
  using ROCKSDB_NAMESPACE::NewLRUCache;
114
117
  using ROCKSDB_NAMESPACE::NewRibbonFilterPolicy;
118
+ using ROCKSDB_NAMESPACE::NewSstPartitionerFixedPrefixFactory;
115
119
  using ROCKSDB_NAMESPACE::OpenAndCompactOptions;
116
120
  using ROCKSDB_NAMESPACE::OptimisticTransactionDB;
117
121
  using ROCKSDB_NAMESPACE::OptimisticTransactionOptions;
@@ -133,9 +137,11 @@ using ROCKSDB_NAMESPACE::Snapshot;
133
137
  using ROCKSDB_NAMESPACE::SstFileManager;
134
138
  using ROCKSDB_NAMESPACE::SstFileMetaData;
135
139
  using ROCKSDB_NAMESPACE::SstFileWriter;
140
+ using ROCKSDB_NAMESPACE::SstPartitionerFactory;
136
141
  using ROCKSDB_NAMESPACE::Status;
137
142
  using ROCKSDB_NAMESPACE::StderrLogger;
138
143
  using ROCKSDB_NAMESPACE::SubcompactionJobInfo;
144
+ using ROCKSDB_NAMESPACE::TableFactory;
139
145
  using ROCKSDB_NAMESPACE::TablePropertiesCollectorFactory;
140
146
  using ROCKSDB_NAMESPACE::Transaction;
141
147
  using ROCKSDB_NAMESPACE::TransactionDB;
@@ -235,6 +241,15 @@ struct rocksdb_filelock_t {
235
241
  struct rocksdb_logger_t {
236
242
  std::shared_ptr<Logger> rep;
237
243
  };
244
+ struct rocksdb_file_checksum_gen_factory_t {
245
+ std::shared_ptr<FileChecksumGenFactory> rep;
246
+ };
247
+ struct rocksdb_sst_partitioner_factory_t {
248
+ std::shared_ptr<SstPartitionerFactory> rep;
249
+ };
250
+ struct rocksdb_table_properties_collector_factory_t {
251
+ std::shared_ptr<TablePropertiesCollectorFactory> rep;
252
+ };
238
253
  struct rocksdb_lru_cache_options_t {
239
254
  LRUCacheOptions rep;
240
255
  };
@@ -581,7 +596,6 @@ struct rocksdb_slicetransform_t : public SliceTransform {
581
596
  char* (*transform_)(void*, const char* key, size_t length,
582
597
  size_t* dst_length);
583
598
  unsigned char (*in_domain_)(void*, const char* key, size_t length);
584
- unsigned char (*in_range_)(void*, const char* key, size_t length);
585
599
 
586
600
  ~rocksdb_slicetransform_t() override { (*destructor_)(state_); }
587
601
 
@@ -596,10 +610,6 @@ struct rocksdb_slicetransform_t : public SliceTransform {
596
610
  bool InDomain(const Slice& src) const override {
597
611
  return (*in_domain_)(state_, src.data(), src.size());
598
612
  }
599
-
600
- bool InRange(const Slice& src) const override {
601
- return (*in_range_)(state_, src.data(), src.size());
602
- }
603
613
  };
604
614
 
605
615
  struct rocksdb_universal_compaction_options_t {
@@ -920,6 +930,38 @@ rocksdb_compaction_service_options_override_create() {
920
930
  return new rocksdb_compaction_service_options_override_t;
921
931
  }
922
932
 
933
+ rocksdb_compaction_service_options_override_t*
934
+ rocksdb_compaction_service_options_override_create_from_options(
935
+ rocksdb_options_t* options) {
936
+ if (!options) {
937
+ return nullptr;
938
+ }
939
+
940
+ rocksdb_compaction_service_options_override_t* override_opts =
941
+ new rocksdb_compaction_service_options_override_t;
942
+
943
+ // Copy all relevant options from rocksdb_options_t
944
+ override_opts->rep.env = options->rep.env;
945
+ override_opts->rep.file_checksum_gen_factory =
946
+ options->rep.file_checksum_gen_factory;
947
+ override_opts->rep.comparator = options->rep.comparator;
948
+ override_opts->rep.merge_operator = options->rep.merge_operator;
949
+ override_opts->rep.compaction_filter = options->rep.compaction_filter;
950
+ override_opts->rep.compaction_filter_factory =
951
+ options->rep.compaction_filter_factory;
952
+ override_opts->rep.prefix_extractor = options->rep.prefix_extractor;
953
+ override_opts->rep.table_factory = options->rep.table_factory;
954
+ override_opts->rep.sst_partitioner_factory =
955
+ options->rep.sst_partitioner_factory;
956
+ override_opts->rep.listeners = options->rep.listeners;
957
+ override_opts->rep.statistics = options->rep.statistics;
958
+ override_opts->rep.info_log = options->rep.info_log;
959
+ override_opts->rep.table_properties_collector_factories =
960
+ options->rep.table_properties_collector_factories;
961
+
962
+ return override_opts;
963
+ }
964
+
923
965
  void rocksdb_compaction_service_options_override_destroy(
924
966
  rocksdb_compaction_service_options_override_t* override_options) {
925
967
  if (override_options) {
@@ -943,6 +985,111 @@ void rocksdb_compaction_service_options_override_set_comparator(
943
985
  }
944
986
  }
945
987
 
988
+ void rocksdb_compaction_service_options_override_set_merge_operator(
989
+ rocksdb_compaction_service_options_override_t* override_options,
990
+ rocksdb_mergeoperator_t* merge_operator) {
991
+ if (override_options && merge_operator) {
992
+ override_options->rep.merge_operator =
993
+ std::shared_ptr<MergeOperator>(merge_operator);
994
+ }
995
+ }
996
+
997
+ void rocksdb_compaction_service_options_override_set_compaction_filter(
998
+ rocksdb_compaction_service_options_override_t* override_options,
999
+ rocksdb_compactionfilter_t* compaction_filter) {
1000
+ if (override_options && compaction_filter) {
1001
+ override_options->rep.compaction_filter = compaction_filter;
1002
+ }
1003
+ }
1004
+
1005
+ void rocksdb_compaction_service_options_override_set_compaction_filter_factory(
1006
+ rocksdb_compaction_service_options_override_t* override_options,
1007
+ rocksdb_compactionfilterfactory_t* compaction_filter_factory) {
1008
+ if (override_options && compaction_filter_factory) {
1009
+ override_options->rep.compaction_filter_factory =
1010
+ std::shared_ptr<CompactionFilterFactory>(compaction_filter_factory);
1011
+ }
1012
+ }
1013
+
1014
+ void rocksdb_compaction_service_options_override_set_prefix_extractor(
1015
+ rocksdb_compaction_service_options_override_t* override_options,
1016
+ rocksdb_slicetransform_t* prefix_extractor) {
1017
+ if (override_options && prefix_extractor) {
1018
+ override_options->rep.prefix_extractor =
1019
+ std::shared_ptr<const SliceTransform>(prefix_extractor);
1020
+ }
1021
+ }
1022
+
1023
+ void rocksdb_compaction_service_options_override_set_block_based_table_factory(
1024
+ rocksdb_compaction_service_options_override_t* override_options,
1025
+ rocksdb_block_based_table_options_t* table_options) {
1026
+ if (override_options && table_options) {
1027
+ override_options->rep.table_factory = std::shared_ptr<TableFactory>(
1028
+ NewBlockBasedTableFactory(table_options->rep));
1029
+ }
1030
+ }
1031
+
1032
+ void rocksdb_compaction_service_options_override_set_cuckoo_table_factory(
1033
+ rocksdb_compaction_service_options_override_t* override_options,
1034
+ rocksdb_cuckoo_table_options_t* table_options) {
1035
+ if (override_options && table_options) {
1036
+ override_options->rep.table_factory = std::shared_ptr<TableFactory>(
1037
+ NewCuckooTableFactory(table_options->rep));
1038
+ }
1039
+ }
1040
+
1041
+ // Note: add_event_listener is defined later after rocksdb_eventlistener_t
1042
+ // struct
1043
+
1044
+ void rocksdb_compaction_service_options_override_set_statistics(
1045
+ rocksdb_compaction_service_options_override_t* override_options,
1046
+ rocksdb_options_t* options) {
1047
+ if (override_options && options) {
1048
+ override_options->rep.statistics = options->rep.statistics;
1049
+ }
1050
+ }
1051
+
1052
+ void rocksdb_compaction_service_options_override_set_info_log(
1053
+ rocksdb_compaction_service_options_override_t* override_options,
1054
+ rocksdb_logger_t* logger) {
1055
+ if (override_options && logger) {
1056
+ override_options->rep.info_log = logger->rep;
1057
+ }
1058
+ }
1059
+
1060
+ void rocksdb_compaction_service_options_override_set_option(
1061
+ rocksdb_compaction_service_options_override_t* override_options,
1062
+ const char* key, const char* value) {
1063
+ if (override_options && key && value) {
1064
+ override_options->rep.options_map[std::string(key)] = std::string(value);
1065
+ }
1066
+ }
1067
+
1068
+ void rocksdb_compaction_service_options_override_set_file_checksum_gen_factory(
1069
+ rocksdb_compaction_service_options_override_t* override_options,
1070
+ rocksdb_file_checksum_gen_factory_t* factory) {
1071
+ if (override_options && factory) {
1072
+ override_options->rep.file_checksum_gen_factory = factory->rep;
1073
+ }
1074
+ }
1075
+
1076
+ void rocksdb_compaction_service_options_override_set_sst_partitioner_factory(
1077
+ rocksdb_compaction_service_options_override_t* override_options,
1078
+ rocksdb_sst_partitioner_factory_t* factory) {
1079
+ if (override_options && factory) {
1080
+ override_options->rep.sst_partitioner_factory = factory->rep;
1081
+ }
1082
+ }
1083
+
1084
+ void rocksdb_compaction_service_options_override_add_table_properties_collector_factory(
1085
+ rocksdb_compaction_service_options_override_t* override_options,
1086
+ rocksdb_table_properties_collector_factory_t* factory) {
1087
+ if (override_options && factory) {
1088
+ override_options->rep.table_properties_collector_factories.push_back(
1089
+ factory->rep);
1090
+ }
1091
+ }
1092
+
946
1093
  // Atomic bool management for cancellation
947
1094
  unsigned char* rocksdb_open_and_compact_canceled_create() {
948
1095
  return reinterpret_cast<unsigned char*>(new std::atomic<bool>(false));
@@ -1071,12 +1218,12 @@ char* rocksdb_open_and_compact_with_options(
1071
1218
 
1072
1219
  rocksdb_t* rocksdb_open(const rocksdb_options_t* options, const char* name,
1073
1220
  char** errptr) {
1074
- DB* db;
1075
- if (SaveError(errptr, DB::Open(options->rep, std::string(name), &db))) {
1221
+ std::unique_ptr<DB> dbptr;
1222
+ if (SaveError(errptr, DB::Open(options->rep, std::string(name), &dbptr))) {
1076
1223
  return nullptr;
1077
1224
  }
1078
1225
  rocksdb_t* result = new rocksdb_t;
1079
- result->rep = db;
1226
+ result->rep = dbptr.release();
1080
1227
  return result;
1081
1228
  }
1082
1229
 
@@ -1096,13 +1243,14 @@ rocksdb_t* rocksdb_open_for_read_only(const rocksdb_options_t* options,
1096
1243
  const char* name,
1097
1244
  unsigned char error_if_wal_file_exists,
1098
1245
  char** errptr) {
1099
- DB* db;
1100
- if (SaveError(errptr, DB::OpenForReadOnly(options->rep, std::string(name),
1101
- &db, error_if_wal_file_exists))) {
1246
+ std::unique_ptr<DB> dbptr;
1247
+ if (SaveError(errptr,
1248
+ DB::OpenForReadOnly(options->rep, std::string(name), &dbptr,
1249
+ error_if_wal_file_exists))) {
1102
1250
  return nullptr;
1103
1251
  }
1104
1252
  rocksdb_t* result = new rocksdb_t;
1105
- result->rep = db;
1253
+ result->rep = dbptr.release();
1106
1254
  return result;
1107
1255
  }
1108
1256
 
@@ -1110,14 +1258,14 @@ rocksdb_t* rocksdb_open_as_secondary(const rocksdb_options_t* options,
1110
1258
  const char* name,
1111
1259
  const char* secondary_path,
1112
1260
  char** errptr) {
1113
- DB* db;
1261
+ std::unique_ptr<DB> dbptr;
1114
1262
  if (SaveError(errptr,
1115
1263
  DB::OpenAsSecondary(options->rep, std::string(name),
1116
- std::string(secondary_path), &db))) {
1264
+ std::string(secondary_path), &dbptr))) {
1117
1265
  return nullptr;
1118
1266
  }
1119
1267
  rocksdb_t* result = new rocksdb_t;
1120
- result->rep = db;
1268
+ result->rep = dbptr.release();
1121
1269
  return result;
1122
1270
  }
1123
1271
 
@@ -1431,11 +1579,11 @@ rocksdb_t* rocksdb_open_and_trim_history(
1431
1579
 
1432
1580
  std::string trim_ts_(trim_ts, trim_tslen);
1433
1581
 
1434
- DB* db;
1582
+ std::unique_ptr<DB> dbptr;
1435
1583
  std::vector<ColumnFamilyHandle*> handles;
1436
1584
  if (SaveError(errptr, DB::OpenAndTrimHistory(
1437
1585
  DBOptions(db_options->rep), std::string(name),
1438
- column_families, &handles, &db, trim_ts_))) {
1586
+ column_families, &handles, &dbptr, trim_ts_))) {
1439
1587
  return nullptr;
1440
1588
  }
1441
1589
 
@@ -1447,7 +1595,7 @@ rocksdb_t* rocksdb_open_and_trim_history(
1447
1595
  column_family_handles[i] = c_handle;
1448
1596
  }
1449
1597
  rocksdb_t* result = new rocksdb_t;
1450
- result->rep = db;
1598
+ result->rep = dbptr.release();
1451
1599
  return result;
1452
1600
  }
1453
1601
 
@@ -1463,10 +1611,10 @@ rocksdb_t* rocksdb_open_column_families(
1463
1611
  ColumnFamilyOptions(column_family_options[i]->rep));
1464
1612
  }
1465
1613
 
1466
- DB* db;
1614
+ std::unique_ptr<DB> dbptr;
1467
1615
  std::vector<ColumnFamilyHandle*> handles;
1468
1616
  if (SaveError(errptr, DB::Open(DBOptions(db_options->rep), std::string(name),
1469
- column_families, &handles, &db))) {
1617
+ column_families, &handles, &dbptr))) {
1470
1618
  return nullptr;
1471
1619
  }
1472
1620
 
@@ -1478,7 +1626,7 @@ rocksdb_t* rocksdb_open_column_families(
1478
1626
  column_family_handles[i] = c_handle;
1479
1627
  }
1480
1628
  rocksdb_t* result = new rocksdb_t;
1481
- result->rep = db;
1629
+ result->rep = dbptr.release();
1482
1630
  return result;
1483
1631
  }
1484
1632
 
@@ -1531,12 +1679,12 @@ rocksdb_t* rocksdb_open_for_read_only_column_families(
1531
1679
  ColumnFamilyOptions(column_family_options[i]->rep));
1532
1680
  }
1533
1681
 
1534
- DB* db;
1682
+ std::unique_ptr<DB> dbptr;
1535
1683
  std::vector<ColumnFamilyHandle*> handles;
1536
- if (SaveError(errptr,
1537
- DB::OpenForReadOnly(DBOptions(db_options->rep),
1538
- std::string(name), column_families,
1539
- &handles, &db, error_if_wal_file_exists))) {
1684
+ if (SaveError(errptr, DB::OpenForReadOnly(DBOptions(db_options->rep),
1685
+ std::string(name), column_families,
1686
+ &handles, &dbptr,
1687
+ error_if_wal_file_exists))) {
1540
1688
  return nullptr;
1541
1689
  }
1542
1690
 
@@ -1548,7 +1696,7 @@ rocksdb_t* rocksdb_open_for_read_only_column_families(
1548
1696
  column_family_handles[i] = c_handle;
1549
1697
  }
1550
1698
  rocksdb_t* result = new rocksdb_t;
1551
- result->rep = db;
1699
+ result->rep = dbptr.release();
1552
1700
  return result;
1553
1701
  }
1554
1702
 
@@ -1564,12 +1712,12 @@ rocksdb_t* rocksdb_open_as_secondary_column_families(
1564
1712
  std::string(column_family_names[i]),
1565
1713
  ColumnFamilyOptions(column_family_options[i]->rep));
1566
1714
  }
1567
- DB* db;
1715
+ std::unique_ptr<DB> dbptr;
1568
1716
  std::vector<ColumnFamilyHandle*> handles;
1569
- if (SaveError(errptr, DB::OpenAsSecondary(DBOptions(db_options->rep),
1570
- std::string(name),
1571
- std::string(secondary_path),
1572
- column_families, &handles, &db))) {
1717
+ if (SaveError(errptr, DB::OpenAsSecondary(
1718
+ DBOptions(db_options->rep), std::string(name),
1719
+ std::string(secondary_path), column_families,
1720
+ &handles, &dbptr))) {
1573
1721
  return nullptr;
1574
1722
  }
1575
1723
  for (size_t i = 0; i != handles.size(); ++i) {
@@ -1580,7 +1728,7 @@ rocksdb_t* rocksdb_open_as_secondary_column_families(
1580
1728
  column_family_handles[i] = c_handle;
1581
1729
  }
1582
1730
  rocksdb_t* result = new rocksdb_t;
1583
- result->rep = db;
1731
+ result->rep = dbptr.release();
1584
1732
  return result;
1585
1733
  }
1586
1734
 
@@ -1611,9 +1759,13 @@ rocksdb_column_family_handle_t* rocksdb_create_column_family(
1611
1759
  rocksdb_t* db, const rocksdb_options_t* column_family_options,
1612
1760
  const char* column_family_name, char** errptr) {
1613
1761
  rocksdb_column_family_handle_t* handle = new rocksdb_column_family_handle_t;
1614
- SaveError(errptr, db->rep->CreateColumnFamily(
1615
- ColumnFamilyOptions(column_family_options->rep),
1616
- std::string(column_family_name), &(handle->rep)));
1762
+ handle->rep = nullptr;
1763
+ if (SaveError(errptr, db->rep->CreateColumnFamily(
1764
+ ColumnFamilyOptions(column_family_options->rep),
1765
+ std::string(column_family_name), &(handle->rep)))) {
1766
+ delete handle;
1767
+ return nullptr;
1768
+ }
1617
1769
  handle->immortal = false;
1618
1770
  return handle;
1619
1771
  }
@@ -2891,12 +3043,19 @@ class H : public WriteBatch::Handler {
2891
3043
  void* state_;
2892
3044
  void (*put_)(void*, const char* k, size_t klen, const char* v, size_t vlen);
2893
3045
  void (*deleted_)(void*, const char* k, size_t klen);
3046
+ void (*log_data_)(void*, const char* blob, size_t blob_len);
3047
+
2894
3048
  void Put(const Slice& key, const Slice& value) override {
2895
3049
  (*put_)(state_, key.data(), key.size(), value.data(), value.size());
2896
3050
  }
2897
3051
  void Delete(const Slice& key) override {
2898
3052
  (*deleted_)(state_, key.data(), key.size());
2899
3053
  }
3054
+ void LogData(const Slice& blob) override {
3055
+ if (log_data_) {
3056
+ (*log_data_)(state_, blob.data(), blob.size());
3057
+ }
3058
+ }
2900
3059
  };
2901
3060
 
2902
3061
  class HCF : public WriteBatch::Handler {
@@ -2907,6 +3066,8 @@ class HCF : public WriteBatch::Handler {
2907
3066
  void (*deleted_cf_)(void*, uint32_t cfid, const char* k, size_t klen);
2908
3067
  void (*merge_cf_)(void*, uint32_t cfid, const char* k, size_t klen,
2909
3068
  const char* v, size_t vlen);
3069
+ void (*log_data_)(void*, const char* blob, size_t blob_len);
3070
+
2910
3071
  Status PutCF(uint32_t column_family_id, const Slice& key,
2911
3072
  const Slice& value) override {
2912
3073
  (*put_cf_)(state_, column_family_id, key.data(), key.size(), value.data(),
@@ -2923,6 +3084,11 @@ class HCF : public WriteBatch::Handler {
2923
3084
  value.size());
2924
3085
  return Status::OK();
2925
3086
  }
3087
+ void LogData(const Slice& blob) override {
3088
+ if (log_data_) {
3089
+ (*log_data_)(state_, blob.data(), blob.size());
3090
+ }
3091
+ }
2926
3092
  };
2927
3093
 
2928
3094
  void rocksdb_writebatch_iterate(rocksdb_writebatch_t* b, void* state,
@@ -2934,6 +3100,20 @@ void rocksdb_writebatch_iterate(rocksdb_writebatch_t* b, void* state,
2934
3100
  handler.state_ = state;
2935
3101
  handler.put_ = put;
2936
3102
  handler.deleted_ = deleted;
3103
+ handler.log_data_ = nullptr;
3104
+ b->rep.Iterate(&handler);
3105
+ }
3106
+
3107
+ void rocksdb_writebatch_iterate_ld(
3108
+ rocksdb_writebatch_t* b, void* state,
3109
+ void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
3110
+ void (*deleted)(void*, const char* k, size_t klen),
3111
+ void (*log_data)(void*, const char* blob, size_t blob_len)) {
3112
+ H handler;
3113
+ handler.state_ = state;
3114
+ handler.put_ = put;
3115
+ handler.deleted_ = deleted;
3116
+ handler.log_data_ = log_data;
2937
3117
  b->rep.Iterate(&handler);
2938
3118
  }
2939
3119
 
@@ -2949,6 +3129,24 @@ void rocksdb_writebatch_iterate_cf(
2949
3129
  handler.put_cf_ = put_cf;
2950
3130
  handler.deleted_cf_ = deleted_cf;
2951
3131
  handler.merge_cf_ = merge_cf;
3132
+ handler.log_data_ = nullptr;
3133
+ b->rep.Iterate(&handler);
3134
+ }
3135
+
3136
+ void rocksdb_writebatch_iterate_cf_ld(
3137
+ rocksdb_writebatch_t* b, void* state,
3138
+ void (*put_cf)(void*, uint32_t cfid, const char* k, size_t klen,
3139
+ const char* v, size_t vlen),
3140
+ void (*deleted_cf)(void*, uint32_t cfid, const char* k, size_t klen),
3141
+ void (*merge_cf)(void*, uint32_t cfid, const char* k, size_t klen,
3142
+ const char* v, size_t vlen),
3143
+ void (*log_data)(void*, const char* blob, size_t blob_len)) {
3144
+ HCF handler;
3145
+ handler.state_ = state;
3146
+ handler.put_cf_ = put_cf;
3147
+ handler.deleted_cf_ = deleted_cf;
3148
+ handler.merge_cf_ = merge_cf;
3149
+ handler.log_data_ = log_data;
2952
3150
  b->rep.Iterate(&handler);
2953
3151
  }
2954
3152
 
@@ -3549,6 +3747,11 @@ void rocksdb_block_based_options_set_format_version(
3549
3747
  options->rep.format_version = v;
3550
3748
  }
3551
3749
 
3750
+ void rocksdb_block_based_options_set_separate_key_value_in_data_block(
3751
+ rocksdb_block_based_table_options_t* options, unsigned char v) {
3752
+ options->rep.separate_key_value_in_data_block = v;
3753
+ }
3754
+
3552
3755
  void rocksdb_block_based_options_set_index_type(
3553
3756
  rocksdb_block_based_table_options_t* options, int v) {
3554
3757
  options->rep.index_type = static_cast<BlockBasedTableOptions::IndexType>(v);
@@ -3560,6 +3763,12 @@ void rocksdb_block_based_options_set_data_block_index_type(
3560
3763
  static_cast<BlockBasedTableOptions::DataBlockIndexType>(v);
3561
3764
  }
3562
3765
 
3766
+ void rocksdb_block_based_options_set_index_block_search_type(
3767
+ rocksdb_block_based_table_options_t* options, int v) {
3768
+ options->rep.index_block_search_type =
3769
+ static_cast<BlockBasedTableOptions::BlockSearchType>(v);
3770
+ }
3771
+
3563
3772
  void rocksdb_block_based_options_set_data_block_hash_ratio(
3564
3773
  rocksdb_block_based_table_options_t* options, double v) {
3565
3774
  options->rep.data_block_hash_table_util_ratio = v;
@@ -3612,6 +3821,11 @@ void rocksdb_block_based_options_set_unpartitioned_pinning_tier(
3612
3821
  static_cast<ROCKSDB_NAMESPACE::PinningTier>(v);
3613
3822
  }
3614
3823
 
3824
+ void rocksdb_block_based_options_set_block_align(
3825
+ rocksdb_block_based_table_options_t* options, unsigned char v) {
3826
+ options->rep.block_align = v;
3827
+ }
3828
+
3615
3829
  /* FlushJobInfo */
3616
3830
 
3617
3831
  const char* rocksdb_flushjobinfo_cf_name(const rocksdb_flushjobinfo_t* info,
@@ -3967,6 +4181,15 @@ void rocksdb_options_add_eventlistener(rocksdb_options_t* opt,
3967
4181
  opt->rep.listeners.emplace_back(std::shared_ptr<EventListener>(t));
3968
4182
  }
3969
4183
 
4184
+ void rocksdb_compaction_service_options_override_add_event_listener(
4185
+ rocksdb_compaction_service_options_override_t* override_options,
4186
+ rocksdb_eventlistener_t* event_listener) {
4187
+ if (override_options && event_listener) {
4188
+ override_options->rep.listeners.emplace_back(
4189
+ std::shared_ptr<EventListener>(event_listener));
4190
+ }
4191
+ }
4192
+
3970
4193
  rocksdb_cuckoo_table_options_t* rocksdb_cuckoo_options_create() {
3971
4194
  return new rocksdb_cuckoo_table_options_t;
3972
4195
  }
@@ -4132,6 +4355,15 @@ unsigned char rocksdb_options_get_paranoid_checks(rocksdb_options_t* opt) {
4132
4355
  return opt->rep.paranoid_checks;
4133
4356
  }
4134
4357
 
4358
+ void rocksdb_options_set_open_files_async(rocksdb_options_t* opt,
4359
+ unsigned char v) {
4360
+ opt->rep.open_files_async = v;
4361
+ }
4362
+
4363
+ unsigned char rocksdb_options_get_open_files_async(rocksdb_options_t* opt) {
4364
+ return opt->rep.open_files_async;
4365
+ }
4366
+
4135
4367
  void rocksdb_options_set_db_paths(rocksdb_options_t* opt,
4136
4368
  const rocksdb_dbpath_t** dbpath_values,
4137
4369
  size_t num_paths) {
@@ -4178,6 +4410,65 @@ rocksdb_logger_t* rocksdb_logger_create_callback_logger(
4178
4410
 
4179
4411
  void rocksdb_logger_destroy(rocksdb_logger_t* logger) { delete logger; }
4180
4412
 
4413
+ /* File Checksum Gen Factory */
4414
+
4415
+ rocksdb_file_checksum_gen_factory_t*
4416
+ rocksdb_file_checksum_gen_crc32c_factory_create() {
4417
+ rocksdb_file_checksum_gen_factory_t* factory =
4418
+ new rocksdb_file_checksum_gen_factory_t;
4419
+ factory->rep = GetFileChecksumGenCrc32cFactory();
4420
+ return factory;
4421
+ }
4422
+
4423
+ void rocksdb_file_checksum_gen_factory_destroy(
4424
+ rocksdb_file_checksum_gen_factory_t* factory) {
4425
+ delete factory;
4426
+ }
4427
+
4428
+ void rocksdb_options_set_file_checksum_gen_factory(
4429
+ rocksdb_options_t* opt, rocksdb_file_checksum_gen_factory_t* factory) {
4430
+ if (opt && factory) {
4431
+ opt->rep.file_checksum_gen_factory = factory->rep;
4432
+ }
4433
+ }
4434
+
4435
+ /* SST Partitioner Factory */
4436
+
4437
+ rocksdb_sst_partitioner_factory_t*
4438
+ rocksdb_sst_partitioner_fixed_prefix_factory_create(size_t prefix_len) {
4439
+ rocksdb_sst_partitioner_factory_t* factory =
4440
+ new rocksdb_sst_partitioner_factory_t;
4441
+ factory->rep = NewSstPartitionerFixedPrefixFactory(prefix_len);
4442
+ return factory;
4443
+ }
4444
+
4445
+ void rocksdb_sst_partitioner_factory_destroy(
4446
+ rocksdb_sst_partitioner_factory_t* factory) {
4447
+ delete factory;
4448
+ }
4449
+
4450
+ void rocksdb_options_set_sst_partitioner_factory(
4451
+ rocksdb_options_t* opt, rocksdb_sst_partitioner_factory_t* factory) {
4452
+ if (opt && factory) {
4453
+ opt->rep.sst_partitioner_factory = factory->rep;
4454
+ }
4455
+ }
4456
+
4457
+ /* Table Properties Collector Factory */
4458
+
4459
+ void rocksdb_table_properties_collector_factory_destroy(
4460
+ rocksdb_table_properties_collector_factory_t* factory) {
4461
+ delete factory;
4462
+ }
4463
+
4464
+ void rocksdb_options_add_table_properties_collector_factory(
4465
+ rocksdb_options_t* opt,
4466
+ rocksdb_table_properties_collector_factory_t* factory) {
4467
+ if (opt && factory) {
4468
+ opt->rep.table_properties_collector_factories.push_back(factory->rep);
4469
+ }
4470
+ }
4471
+
4181
4472
  void rocksdb_options_set_env(rocksdb_options_t* opt, rocksdb_env_t* env) {
4182
4473
  opt->rep.env = (env ? env->rep : nullptr);
4183
4474
  }
@@ -4394,16 +4685,6 @@ unsigned char rocksdb_options_get_skip_stats_update_on_db_open(
4394
4685
  return opt->rep.skip_stats_update_on_db_open;
4395
4686
  }
4396
4687
 
4397
- void rocksdb_options_set_skip_checking_sst_file_sizes_on_db_open(
4398
- rocksdb_options_t* opt, unsigned char val) {
4399
- opt->rep.skip_checking_sst_file_sizes_on_db_open = val;
4400
- }
4401
-
4402
- unsigned char rocksdb_options_get_skip_checking_sst_file_sizes_on_db_open(
4403
- rocksdb_options_t* opt) {
4404
- return opt->rep.skip_checking_sst_file_sizes_on_db_open;
4405
- }
4406
-
4407
4688
  /* Blob Options Settings */
4408
4689
  void rocksdb_options_set_enable_blob_files(rocksdb_options_t* opt,
4409
4690
  unsigned char val) {
@@ -5521,6 +5802,16 @@ uint64_t rocksdb_perfcontext_metric(rocksdb_perfcontext_t* context,
5521
5802
  return rep->internal_range_del_reseek_count;
5522
5803
  case rocksdb_block_read_cpu_time:
5523
5804
  return rep->block_read_cpu_time;
5805
+ case rocksdb_data_block_read_byte:
5806
+ return rep->data_block_read_byte;
5807
+ case rocksdb_index_block_read_byte:
5808
+ return rep->index_block_read_byte;
5809
+ case rocksdb_filter_block_read_byte:
5810
+ return rep->filter_block_read_byte;
5811
+ case rocksdb_compression_dict_block_read_byte:
5812
+ return rep->compression_dict_block_read_byte;
5813
+ case rocksdb_metadata_block_read_byte:
5814
+ return rep->metadata_block_read_byte;
5524
5815
  default:
5525
5816
  break;
5526
5817
  }
@@ -5819,11 +6110,6 @@ unsigned char rocksdb_readoptions_get_tailing(rocksdb_readoptions_t* opt) {
5819
6110
  return opt->rep.tailing;
5820
6111
  }
5821
6112
 
5822
- void rocksdb_readoptions_set_managed(rocksdb_readoptions_t* opt,
5823
- unsigned char v) {
5824
- opt->rep.managed = v;
5825
- }
5826
-
5827
6113
  void rocksdb_readoptions_set_readahead_size(rocksdb_readoptions_t* opt,
5828
6114
  size_t v) {
5829
6115
  opt->rep.readahead_size = v;
@@ -6624,14 +6910,12 @@ rocksdb_slicetransform_t* rocksdb_slicetransform_create(
6624
6910
  char* (*transform)(void*, const char* key, size_t length,
6625
6911
  size_t* dst_length),
6626
6912
  unsigned char (*in_domain)(void*, const char* key, size_t length),
6627
- unsigned char (*in_range)(void*, const char* key, size_t length),
6628
6913
  const char* (*name)(void*)) {
6629
6914
  rocksdb_slicetransform_t* result = new rocksdb_slicetransform_t;
6630
6915
  result->state_ = state;
6631
6916
  result->destructor_ = destructor;
6632
6917
  result->transform_ = transform;
6633
6918
  result->in_domain_ = in_domain;
6634
- result->in_range_ = in_range;
6635
6919
  result->name_ = name;
6636
6920
  return result;
6637
6921
  }
@@ -6647,7 +6931,6 @@ struct SliceTransformWrapper : public rocksdb_slicetransform_t {
6647
6931
  return rep_->Transform(src);
6648
6932
  }
6649
6933
  bool InDomain(const Slice& src) const override { return rep_->InDomain(src); }
6650
- bool InRange(const Slice& src) const override { return rep_->InRange(src); }
6651
6934
  static void DoNothing(void*) {}
6652
6935
  };
6653
6936
 
@@ -6771,6 +7054,27 @@ uint64_t rocksdb_fifo_compaction_options_get_max_table_files_size(
6771
7054
  return fifo_opts->rep.max_table_files_size;
6772
7055
  }
6773
7056
 
7057
+ void rocksdb_fifo_compaction_options_set_max_data_files_size(
7058
+ rocksdb_fifo_compaction_options_t* fifo_opts, uint64_t size) {
7059
+ fifo_opts->rep.max_data_files_size = size;
7060
+ }
7061
+
7062
+ uint64_t rocksdb_fifo_compaction_options_get_max_data_files_size(
7063
+ rocksdb_fifo_compaction_options_t* fifo_opts) {
7064
+ return fifo_opts->rep.max_data_files_size;
7065
+ }
7066
+
7067
+ void rocksdb_fifo_compaction_options_set_use_kv_ratio_compaction(
7068
+ rocksdb_fifo_compaction_options_t* fifo_opts,
7069
+ unsigned char use_kv_ratio_compaction) {
7070
+ fifo_opts->rep.use_kv_ratio_compaction = use_kv_ratio_compaction;
7071
+ }
7072
+
7073
+ unsigned char rocksdb_fifo_compaction_options_get_use_kv_ratio_compaction(
7074
+ rocksdb_fifo_compaction_options_t* fifo_opts) {
7075
+ return fifo_opts->rep.use_kv_ratio_compaction;
7076
+ }
7077
+
6774
7078
  void rocksdb_fifo_compaction_options_destroy(
6775
7079
  rocksdb_fifo_compaction_options_t* fifo_opts) {
6776
7080
  delete fifo_opts;
@@ -7244,9 +7548,13 @@ rocksdb_column_family_handle_t* rocksdb_transactiondb_create_column_family(
7244
7548
  const rocksdb_options_t* column_family_options,
7245
7549
  const char* column_family_name, char** errptr) {
7246
7550
  rocksdb_column_family_handle_t* handle = new rocksdb_column_family_handle_t;
7247
- SaveError(errptr, txn_db->rep->CreateColumnFamily(
7248
- ColumnFamilyOptions(column_family_options->rep),
7249
- std::string(column_family_name), &(handle->rep)));
7551
+ handle->rep = nullptr;
7552
+ if (SaveError(errptr, txn_db->rep->CreateColumnFamily(
7553
+ ColumnFamilyOptions(column_family_options->rep),
7554
+ std::string(column_family_name), &(handle->rep)))) {
7555
+ delete handle;
7556
+ return nullptr;
7557
+ }
7250
7558
  handle->immortal = false;
7251
7559
  return handle;
7252
7560
  }
@@ -8346,6 +8654,14 @@ void rocksdb_enable_manual_compaction(rocksdb_t* db) {
8346
8654
  db->rep->EnableManualCompaction();
8347
8655
  }
8348
8656
 
8657
+ void rocksdb_abort_all_compactions(rocksdb_t* db) {
8658
+ db->rep->AbortAllCompactions();
8659
+ }
8660
+
8661
+ void rocksdb_resume_all_compactions(rocksdb_t* db) {
8662
+ db->rep->ResumeAllCompactions();
8663
+ }
8664
+
8349
8665
  rocksdb_statistics_histogram_data_t*
8350
8666
  rocksdb_statistics_histogram_data_create() {
8351
8667
  return new rocksdb_statistics_histogram_data_t{};