@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
@@ -83,7 +83,7 @@ int main(int argc, const char** argv) {
83
83
  options.create_if_missing = true;
84
84
  options.WAL_ttl_seconds = FLAGS_wal_ttl_seconds;
85
85
  options.WAL_size_limit_MB = FLAGS_wal_size_limit_MB;
86
- DB* db;
86
+ std::unique_ptr<DB> db;
87
87
  DestroyDB(default_db_path, options);
88
88
 
89
89
  Status s = DB::Open(options, default_db_path, &db);
@@ -94,7 +94,7 @@ int main(int argc, const char** argv) {
94
94
  }
95
95
 
96
96
  DataPumpThread dataPump;
97
- dataPump.db = db;
97
+ dataPump.db = db.get();
98
98
  env->StartThread(DataPumpThreadBody, &dataPump);
99
99
 
100
100
  std::unique_ptr<TransactionLogIterator> iter;
@@ -41,9 +41,8 @@ class SanityTest {
41
41
  if (!s.ok()) {
42
42
  return s;
43
43
  }
44
- DB* db = nullptr;
44
+ std::unique_ptr<DB> db;
45
45
  s = DB::Open(options, dbname, &db);
46
- std::unique_ptr<DB> db_guard(db);
47
46
  if (!s.ok()) {
48
47
  return s;
49
48
  }
@@ -58,10 +57,9 @@ class SanityTest {
58
57
  return db->Flush(FlushOptions());
59
58
  }
60
59
  Status Verify() {
61
- DB* db = nullptr;
60
+ std::unique_ptr<DB> db;
62
61
  std::string dbname = path_ + Name();
63
62
  Status s = DB::Open(GetOptions(), dbname, &db);
64
- std::unique_ptr<DB> db_guard(db);
65
63
  if (!s.ok()) {
66
64
  return s;
67
65
  }
@@ -16,7 +16,6 @@ namespace ROCKSDB_NAMESPACE {
16
16
 
17
17
  bool DbDumpTool::Run(const DumpOptions& dump_options,
18
18
  ROCKSDB_NAMESPACE::Options options) {
19
- ROCKSDB_NAMESPACE::DB* dbptr;
20
19
  ROCKSDB_NAMESPACE::Status status;
21
20
  std::unique_ptr<ROCKSDB_NAMESPACE::WritableFile> dumpfile;
22
21
  char hostname[1024];
@@ -31,16 +30,15 @@ bool DbDumpTool::Run(const DumpOptions& dump_options,
31
30
 
32
31
  // Open the database
33
32
  options.create_if_missing = false;
33
+ std::unique_ptr<ROCKSDB_NAMESPACE::DB> db;
34
34
  status = ROCKSDB_NAMESPACE::DB::OpenForReadOnly(options, dump_options.db_path,
35
- &dbptr);
35
+ &db);
36
36
  if (!status.ok()) {
37
37
  std::cerr << "Unable to open database '" << dump_options.db_path
38
38
  << "' for reading: " << status.ToString() << std::endl;
39
39
  return false;
40
40
  }
41
41
 
42
- const std::unique_ptr<ROCKSDB_NAMESPACE::DB> db(dbptr);
43
-
44
42
  status = env->NewWritableFile(dump_options.dump_location, &dumpfile,
45
43
  ROCKSDB_NAMESPACE::EnvOptions());
46
44
  if (!status.ok()) {
@@ -131,7 +129,6 @@ bool DbDumpTool::Run(const DumpOptions& dump_options,
131
129
 
132
130
  bool DbUndumpTool::Run(const UndumpOptions& undump_options,
133
131
  ROCKSDB_NAMESPACE::Options options) {
134
- ROCKSDB_NAMESPACE::DB* dbptr;
135
132
  ROCKSDB_NAMESPACE::Status status;
136
133
  ROCKSDB_NAMESPACE::Env* env;
137
134
  std::unique_ptr<ROCKSDB_NAMESPACE::SequentialFile> dumpfile;
@@ -180,15 +177,14 @@ bool DbUndumpTool::Run(const UndumpOptions& undump_options,
180
177
  }
181
178
 
182
179
  options.create_if_missing = true;
183
- status = ROCKSDB_NAMESPACE::DB::Open(options, undump_options.db_path, &dbptr);
180
+ std::unique_ptr<ROCKSDB_NAMESPACE::DB> db;
181
+ status = ROCKSDB_NAMESPACE::DB::Open(options, undump_options.db_path, &db);
184
182
  if (!status.ok()) {
185
183
  std::cerr << "Unable to open database '" << undump_options.db_path
186
184
  << "' for writing: " << status.ToString() << std::endl;
187
185
  return false;
188
186
  }
189
187
 
190
- const std::unique_ptr<ROCKSDB_NAMESPACE::DB> db(dbptr);
191
-
192
188
  uint32_t last_keysize = 64;
193
189
  size_t last_valsize = 1 << 20;
194
190
  std::unique_ptr<char[]> keyscratch(new char[last_keysize]);
@@ -25,7 +25,7 @@ DEFINE_bool(compact, false, "Compact the db after loading the dumped file");
25
25
  DEFINE_string(db_options, "",
26
26
  "Options string used to open the database that will be loaded");
27
27
 
28
- int main(int argc, char **argv) {
28
+ int main(int argc, char** argv) {
29
29
  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
30
30
 
31
31
  if (FLAGS_db_path == "" || FLAGS_dump_location == "") {
@@ -50,8 +50,7 @@ class IOTracerParserTest : public testing::Test {
50
50
  if (db_ != nullptr) {
51
51
  Options options;
52
52
  options.env = env_;
53
- delete db_;
54
- db_ = nullptr;
53
+ db_.reset();
55
54
  EXPECT_OK(DestroyDB(dbname_, options));
56
55
  }
57
56
  EXPECT_OK(env_->DeleteDir(test_path_));
@@ -97,7 +96,7 @@ class IOTracerParserTest : public testing::Test {
97
96
  ASSERT_EQ(0, ROCKSDB_NAMESPACE::io_tracer_parser(argc, argv));
98
97
  }
99
98
 
100
- DB* db_;
99
+ std::unique_ptr<DB> db_;
101
100
  Env* env_;
102
101
  EnvOptions env_options_;
103
102
  std::string trace_file_path_;
@@ -71,6 +71,8 @@ const std::string LDBCommand::ARG_CF_NAME = "column_family";
71
71
  const std::string LDBCommand::ARG_TTL = "ttl";
72
72
  const std::string LDBCommand::ARG_TTL_START = "start_time";
73
73
  const std::string LDBCommand::ARG_TTL_END = "end_time";
74
+ const std::string LDBCommand::ARG_USE_TXN = "use_txn";
75
+ const std::string LDBCommand::ARG_TXN_WRITE_POLICY = "txn_write_policy";
74
76
  const std::string LDBCommand::ARG_TIMESTAMP = "timestamp";
75
77
  const std::string LDBCommand::ARG_TRY_LOAD_OPTIONS = "try_load_options";
76
78
  const std::string LDBCommand::ARG_DISABLE_CONSISTENCY_CHECKS =
@@ -86,6 +88,7 @@ const std::string LDBCommand::ARG_COMPRESSION_TYPE = "compression_type";
86
88
  const std::string LDBCommand::ARG_COMPRESSION_MAX_DICT_BYTES =
87
89
  "compression_max_dict_bytes";
88
90
  const std::string LDBCommand::ARG_BLOCK_SIZE = "block_size";
91
+ const std::string LDBCommand::ARG_UNIFORM_CV_THRESHOLD = "uniform_cv_threshold";
89
92
  const std::string LDBCommand::ARG_AUTO_COMPACTION = "auto_compaction";
90
93
  const std::string LDBCommand::ARG_DB_WRITE_BUFFER_SIZE = "db_write_buffer_size";
91
94
  const std::string LDBCommand::ARG_WRITE_BUFFER_SIZE = "write_buffer_size";
@@ -481,10 +484,13 @@ LDBCommand::LDBCommand(const std::map<std::string, std::string>& options,
481
484
  const std::vector<std::string>& valid_cmd_line_options)
482
485
  : db_(nullptr),
483
486
  db_ttl_(nullptr),
487
+ db_txn_(nullptr),
484
488
  is_read_only_(is_read_only),
485
489
  is_key_hex_(false),
486
490
  is_value_hex_(false),
487
491
  is_db_ttl_(false),
492
+ is_db_txn_(false),
493
+ txn_write_policy_(0),
488
494
  timestamp_(false),
489
495
  try_load_options_(false),
490
496
  create_if_missing_(false),
@@ -528,6 +534,21 @@ LDBCommand::LDBCommand(const std::map<std::string, std::string>& options,
528
534
  is_key_hex_ = IsKeyHex(options, flags);
529
535
  is_value_hex_ = IsValueHex(options, flags);
530
536
  is_db_ttl_ = IsFlagPresent(flags, ARG_TTL);
537
+ is_db_txn_ = IsFlagPresent(flags, ARG_USE_TXN);
538
+ itr = options.find(ARG_TXN_WRITE_POLICY);
539
+ if (itr != options.end()) {
540
+ try {
541
+ txn_write_policy_ = std::stoi(itr->second);
542
+ if (txn_write_policy_ < 0 || txn_write_policy_ > 2) {
543
+ fprintf(stderr, "Invalid txn_write_policy: %d. Must be 0, 1, or 2.\n",
544
+ txn_write_policy_);
545
+ txn_write_policy_ = 0;
546
+ }
547
+ } catch (const std::exception&) {
548
+ fprintf(stderr, "Invalid txn_write_policy value: %s\n",
549
+ itr->second.c_str());
550
+ }
551
+ }
531
552
  timestamp_ = IsFlagPresent(flags, ARG_TIMESTAMP);
532
553
  try_load_options_ = IsTryLoadOptions(options, flags);
533
554
  force_consistency_checks_ =
@@ -551,7 +572,34 @@ void LDBCommand::OpenDB() {
551
572
  // Open the DB.
552
573
  Status st;
553
574
  std::vector<ColumnFamilyHandle*> handles_opened;
554
- if (is_db_ttl_) {
575
+ if (is_db_txn_) {
576
+ // TransactionDB mode
577
+ if (is_db_ttl_) {
578
+ exec_state_ = LDBCommandExecuteResult::Failed(
579
+ "Cannot use both --ttl and --use_txn flags together");
580
+ return;
581
+ }
582
+ if (!secondary_path_.empty() || !leader_path_.empty()) {
583
+ exec_state_ = LDBCommandExecuteResult::Failed(
584
+ "TransactionDB does not support secondary or follower mode");
585
+ return;
586
+ }
587
+ if (is_read_only_) {
588
+ exec_state_ = LDBCommandExecuteResult::Failed(
589
+ "TransactionDB does not support read-only mode");
590
+ return;
591
+ }
592
+ TransactionDBOptions txn_db_options;
593
+ txn_db_options.write_policy =
594
+ static_cast<TxnDBWritePolicy>(txn_write_policy_);
595
+ if (column_families_.empty()) {
596
+ st = TransactionDB::Open(options_, txn_db_options, db_path_, &db_txn_);
597
+ } else {
598
+ st = TransactionDB::Open(options_, txn_db_options, db_path_,
599
+ column_families_, &handles_opened, &db_txn_);
600
+ }
601
+ db_.reset(db_txn_);
602
+ } else if (is_db_ttl_) {
555
603
  // ldb doesn't yet support TTL DB with multiple column families
556
604
  if (!column_family_name_.empty() || !column_families_.empty()) {
557
605
  exec_state_ = LDBCommandExecuteResult::Failed(
@@ -566,7 +614,7 @@ void LDBCommand::OpenDB() {
566
614
  } else {
567
615
  st = DBWithTTL::Open(options_, db_path_, &db_ttl_);
568
616
  }
569
- db_ = db_ttl_;
617
+ db_.reset(db_ttl_);
570
618
  } else {
571
619
  if (!secondary_path_.empty() && !leader_path_.empty()) {
572
620
  exec_state_ = LDBCommandExecuteResult::Failed(
@@ -586,9 +634,7 @@ void LDBCommand::OpenDB() {
586
634
  } else if (!secondary_path_.empty()) {
587
635
  st = DB::OpenAsSecondary(options_, db_path_, secondary_path_, &db_);
588
636
  } else {
589
- std::unique_ptr<DB> dbptr;
590
- st = DB::OpenAsFollower(options_, db_path_, leader_path_, &dbptr);
591
- db_ = dbptr.release();
637
+ st = DB::OpenAsFollower(options_, db_path_, leader_path_, &db_);
592
638
  }
593
639
  } else {
594
640
  if (secondary_path_.empty() && leader_path_.empty()) {
@@ -598,10 +644,8 @@ void LDBCommand::OpenDB() {
598
644
  st = DB::OpenAsSecondary(options_, db_path_, secondary_path_,
599
645
  column_families_, &handles_opened, &db_);
600
646
  } else {
601
- std::unique_ptr<DB> dbptr;
602
647
  st = DB::OpenAsFollower(options_, db_path_, leader_path_,
603
- column_families_, &handles_opened, &dbptr);
604
- db_ = dbptr.release();
648
+ column_families_, &handles_opened, &db_);
605
649
  }
606
650
  }
607
651
  }
@@ -646,8 +690,9 @@ void LDBCommand::CloseDB() {
646
690
  }
647
691
  Status s = db_->Close();
648
692
  s.PermitUncheckedError();
649
- delete db_;
650
- db_ = nullptr;
693
+ db_.reset();
694
+ db_ttl_ = nullptr;
695
+ db_txn_ = nullptr;
651
696
  }
652
697
  }
653
698
 
@@ -673,6 +718,7 @@ std::vector<std::string> LDBCommand::BuildCmdLineOptions(
673
718
  ARG_LEADER_PATH,
674
719
  ARG_BLOOM_BITS,
675
720
  ARG_BLOCK_SIZE,
721
+ ARG_UNIFORM_CV_THRESHOLD,
676
722
  ARG_AUTO_COMPACTION,
677
723
  ARG_COMPRESSION_TYPE,
678
724
  ARG_COMPRESSION_MAX_DICT_BYTES,
@@ -692,7 +738,9 @@ std::vector<std::string> LDBCommand::BuildCmdLineOptions(
692
738
  ARG_BLOB_FILE_STARTING_LEVEL,
693
739
  ARG_PREPOPULATE_BLOB_CACHE,
694
740
  ARG_IGNORE_UNKNOWN_OPTIONS,
695
- ARG_CF_NAME};
741
+ ARG_CF_NAME,
742
+ ARG_USE_TXN,
743
+ ARG_TXN_WRITE_POLICY};
696
744
  ret.insert(ret.end(), options.begin(), options.end());
697
745
  return ret;
698
746
  }
@@ -983,6 +1031,13 @@ void LDBCommand::OverrideBaseCFOptions(ColumnFamilyOptions* cf_opts) {
983
1031
  }
984
1032
  }
985
1033
 
1034
+ double uniform_cv_threshold;
1035
+ if (ParseDoubleOption(option_map_, ARG_UNIFORM_CV_THRESHOLD,
1036
+ uniform_cv_threshold, exec_state_)) {
1037
+ use_table_options = true;
1038
+ table_options.uniform_cv_threshold = uniform_cv_threshold;
1039
+ }
1040
+
986
1041
  // Default comparator is BytewiseComparator, so only when it's not, it
987
1042
  // means user has a command line override.
988
1043
  if (options_.comparator != nullptr &&
@@ -2180,9 +2235,9 @@ void InternalDumpCommand::DoCommand() {
2180
2235
 
2181
2236
  // Cast as DBImpl to get internal iterator
2182
2237
  std::vector<KeyVersion> key_versions;
2183
- Status st =
2184
- GetAllKeyVersions(db_, GetCfHandle(), has_from_ ? from_ : OptSlice{},
2185
- has_to_ ? to_ : OptSlice{}, max_keys_, &key_versions);
2238
+ Status st = GetAllKeyVersions(
2239
+ db_.get(), GetCfHandle(), has_from_ ? from_ : OptSlice{},
2240
+ has_to_ ? to_ : OptSlice{}, max_keys_, &key_versions);
2186
2241
  if (!st.ok()) {
2187
2242
  exec_state_ = LDBCommandExecuteResult::Failed(st.ToString());
2188
2243
  return;
@@ -2301,7 +2356,8 @@ DBDumperCommand::DBDumperCommand(
2301
2356
  count_only_(false),
2302
2357
  count_delim_(false),
2303
2358
  print_stats_(false),
2304
- decode_blob_index_(false) {
2359
+ decode_blob_index_(false),
2360
+ dump_uncompressed_blobs_(false) {
2305
2361
  auto itr = options.find(ARG_FROM);
2306
2362
  if (itr != options.end()) {
2307
2363
  null_from_ = false;
@@ -2583,6 +2639,13 @@ void DBDumperCommand::DoDumpCommand() {
2583
2639
  }
2584
2640
  }
2585
2641
 
2642
+ // Check for iterator errors that may have occurred during iteration
2643
+ st = iter->status();
2644
+ if (!st.ok()) {
2645
+ exec_state_ =
2646
+ LDBCommandExecuteResult::Failed("Iterator error: " + st.ToString());
2647
+ }
2648
+
2586
2649
  if (num_buckets > 1 && is_db_ttl_) {
2587
2650
  PrintBucketCounts(bucket_counts, ttl_start, ttl_end, bucket_size,
2588
2651
  num_buckets);
@@ -4458,7 +4521,7 @@ void CheckPointCommand::DoCommand() {
4458
4521
  return;
4459
4522
  }
4460
4523
  Checkpoint* checkpoint;
4461
- Status status = Checkpoint::Create(db_, &checkpoint);
4524
+ Status status = Checkpoint::Create(db_.get(), &checkpoint);
4462
4525
  status = checkpoint->CreateCheckpoint(checkpoint_dir_);
4463
4526
  if (status.ok()) {
4464
4527
  fprintf(stdout, "OK\n");
@@ -4613,7 +4676,7 @@ void BackupCommand::DoCommand() {
4613
4676
  exec_state_ = LDBCommandExecuteResult::Failed(status.ToString());
4614
4677
  return;
4615
4678
  }
4616
- status = backup_engine->CreateNewBackup(db_);
4679
+ status = backup_engine->CreateNewBackup(db_.get());
4617
4680
  if (status.ok()) {
4618
4681
  fprintf(stdout, "create new backup OK\n");
4619
4682
  } else {
@@ -4728,7 +4791,6 @@ void DumpBlobFile(const std::string& filename, bool is_key_hex,
4728
4791
  dump_uncompressed_blobs ? blob_type : BlobDumpTool::DisplayType::kNone;
4729
4792
  BlobDumpTool::DisplayType show_blob =
4730
4793
  dump_uncompressed_blobs ? BlobDumpTool::DisplayType::kNone : blob_type;
4731
-
4732
4794
  BlobDumpTool::DisplayType show_key = is_key_hex
4733
4795
  ? BlobDumpTool::DisplayType::kHex
4734
4796
  : BlobDumpTool::DisplayType::kRaw;
@@ -4766,8 +4828,8 @@ DBFileDumperCommand::DBFileDumperCommand(
4766
4828
  void DBFileDumperCommand::Help(std::string& ret) {
4767
4829
  ret.append(" ");
4768
4830
  ret.append(DBFileDumperCommand::Name());
4769
- ret.append(" [--" + ARG_DECODE_BLOB_INDEX + "] ");
4770
- ret.append(" [--" + ARG_DUMP_UNCOMPRESSED_BLOBS + "] ");
4831
+ ret.append(" [--" + ARG_DECODE_BLOB_INDEX + "]");
4832
+ ret.append(" [--" + ARG_DUMP_UNCOMPRESSED_BLOBS + "]");
4771
4833
  ret.append("\n");
4772
4834
  }
4773
4835