@nxtedition/rocksdb 15.4.1 → 15.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/binding.cc +24 -15
  2. package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
  3. package/deps/rocksdb/rocksdb/BUCK +42 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
  5. package/deps/rocksdb/rocksdb/Makefile +59 -32
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
  8. package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
  10. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
  11. package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
  12. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
  14. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
  16. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
  17. package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
  24. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
  26. package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
  27. package/deps/rocksdb/rocksdb/db/builder.h +7 -0
  28. package/deps/rocksdb/rocksdb/db/c.cc +373 -57
  29. package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
  51. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  52. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
  54. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
  55. package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
  57. package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
  58. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
  59. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
  60. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
  61. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
  62. package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
  63. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
  64. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
  65. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
  66. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
  79. package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
  80. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
  81. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
  82. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
  83. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
  84. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
  85. package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
  86. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
  87. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
  88. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
  90. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
  91. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
  92. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
  93. package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
  94. package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
  95. package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
  96. package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
  97. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
  98. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
  99. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
  100. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
  101. package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
  102. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
  103. package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
  104. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
  105. package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
  108. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
  109. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
  111. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
  112. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
  113. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
  114. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
  115. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  116. package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
  117. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
  118. package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
  119. package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
  120. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
  121. package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
  122. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
  123. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  124. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
  125. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
  126. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
  127. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
  128. package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
  129. package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
  130. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
  131. package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
  132. package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
  133. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
  134. package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
  135. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  136. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
  137. package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
  138. package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
  139. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
  140. package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
  141. package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
  142. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
  143. package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
  144. package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
  145. package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
  146. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
  147. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
  148. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
  149. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
  150. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
  151. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
  159. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
  160. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
  161. package/deps/rocksdb/rocksdb/env/env.cc +1 -0
  162. package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
  163. package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
  164. package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
  165. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  166. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  167. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
  168. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
  169. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
  170. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
  171. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  172. package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
  173. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
  174. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
  175. package/deps/rocksdb/rocksdb/folly.mk +22 -5
  176. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
  178. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
  179. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
  180. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
  181. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
  182. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
  183. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
  187. package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
  192. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
  193. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
  194. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
  198. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
  200. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
  202. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
  203. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
  204. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
  205. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
  206. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
  207. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
  208. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
  209. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
  210. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  211. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
  212. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
  213. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
  214. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
  215. package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
  216. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
  217. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
  218. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
  219. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
  220. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
  221. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
  222. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
  223. package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
  224. package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
  225. package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
  226. package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
  227. package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
  228. package/deps/rocksdb/rocksdb/options/options.cc +5 -1
  229. package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
  230. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
  231. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
  232. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
  233. package/deps/rocksdb/rocksdb/port/lang.h +4 -0
  234. package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
  235. package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
  236. package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
  237. package/deps/rocksdb/rocksdb/src.mk +12 -0
  238. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
  239. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  240. package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
  241. package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
  247. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
  248. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
  249. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
  250. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
  251. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
  252. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
  253. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
  254. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
  255. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
  256. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
  258. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  259. package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
  260. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
  261. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
  262. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
  264. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
  265. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
  266. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
  267. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
  268. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
  269. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
  271. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
  272. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
  273. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
  274. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
  275. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
  276. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
  277. package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
  278. package/deps/rocksdb/rocksdb/table/format.cc +27 -15
  279. package/deps/rocksdb/rocksdb/table/format.h +41 -15
  280. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
  281. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
  282. package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
  283. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
  284. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  285. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
  286. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
  287. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
  288. package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
  289. package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
  290. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
  291. package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
  292. package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
  293. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
  294. package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
  295. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
  296. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
  297. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
  298. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
  299. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
  300. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
  301. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
  302. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
  303. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
  304. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
  305. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
  306. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
  307. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
  308. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
  309. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
  310. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
  311. package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
  312. package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
  313. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
  314. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
  315. package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
  316. package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
  317. package/deps/rocksdb/rocksdb/util/coding.h +14 -27
  318. package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
  319. package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
  320. package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
  321. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
  323. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
  324. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
  325. package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
  326. package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
  327. package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
  328. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
  329. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
  330. package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
  331. package/deps/rocksdb/rocksdb/util/math.h +3 -1
  332. package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
  333. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
  334. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
  335. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
  336. package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
  337. package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
  338. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
  339. package/deps/rocksdb/rocksdb/util/status.cc +3 -1
  340. package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
  341. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
  342. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
  343. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
  344. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
  345. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
  346. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
  347. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
  348. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
  349. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
  350. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
  351. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
  352. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
  353. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
  354. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
  355. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
  356. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
  357. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
  358. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  359. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
  360. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
  361. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
  362. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
  363. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
  364. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
  365. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
  366. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
  367. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
  368. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
  369. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
  370. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
  371. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
  372. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
  373. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
  374. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
  375. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
  376. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  377. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
  378. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
  379. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
  380. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
  381. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
  382. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
  383. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
  384. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
  385. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
  386. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
  387. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
  388. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
  389. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  390. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
  391. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
  392. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
  393. package/deps/rocksdb/rocksdb.gyp +7 -0
  394. package/iterator.js +2 -2
  395. package/package.json +1 -1
  396. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  397. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
@@ -46,7 +46,7 @@ class CheckpointTest : public testing::Test {
46
46
  std::string dbname_;
47
47
  std::string alternative_wal_dir_;
48
48
  Env* env_;
49
- DB* db_;
49
+ std::unique_ptr<DB> db_;
50
50
  Options last_options_;
51
51
  std::vector<ColumnFamilyHandle*> handles_;
52
52
  std::string snapshot_name_;
@@ -65,7 +65,7 @@ class CheckpointTest : public testing::Test {
65
65
  EXPECT_OK(DestroyDB(dbname_, delete_options));
66
66
  // Destroy it for not alternative WAL dir is used.
67
67
  EXPECT_OK(DestroyDB(dbname_, options));
68
- db_ = nullptr;
68
+ db_.reset();
69
69
  snapshot_name_ = test::PerThreadDBPath(env_, "snapshot");
70
70
  std::string snapshot_tmp_name = snapshot_name_ + ".tmp";
71
71
  EXPECT_OK(DestroyDB(snapshot_name_, options));
@@ -102,6 +102,8 @@ class CheckpointTest : public testing::Test {
102
102
  DestroyDir(env_, export_path_).PermitUncheckedError();
103
103
  }
104
104
 
105
+ DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_.get()); }
106
+
105
107
  // Return the current option configuration.
106
108
  Options CurrentOptions() {
107
109
  Options options;
@@ -170,8 +172,7 @@ class CheckpointTest : public testing::Test {
170
172
  delete h;
171
173
  }
172
174
  handles_.clear();
173
- delete db_;
174
- db_ = nullptr;
175
+ db_.reset();
175
176
  }
176
177
 
177
178
  void DestroyAndReopen(const Options& options) {
@@ -268,14 +269,12 @@ class CheckpointTest : public testing::Test {
268
269
  TEST_F(CheckpointTest, GetSnapshotLink) {
269
270
  for (uint64_t log_size_for_flush : {0, 1000000}) {
270
271
  Options options;
271
- DB* snapshotDB;
272
272
  ReadOptions roptions;
273
273
  std::string result;
274
274
  Checkpoint* checkpoint;
275
275
 
276
276
  options = CurrentOptions();
277
- delete db_;
278
- db_ = nullptr;
277
+ db_.reset();
279
278
  ASSERT_OK(DestroyDB(dbname_, options));
280
279
 
281
280
  // Create a database
@@ -284,7 +283,7 @@ TEST_F(CheckpointTest, GetSnapshotLink) {
284
283
  std::string key = std::string("foo");
285
284
  ASSERT_OK(Put(key, "v1"));
286
285
  // Take a snapshot
287
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
286
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
288
287
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_, log_size_for_flush));
289
288
  ASSERT_OK(Put(key, "v2"));
290
289
  ASSERT_EQ("v2", Get(key));
@@ -292,13 +291,12 @@ TEST_F(CheckpointTest, GetSnapshotLink) {
292
291
  ASSERT_EQ("v2", Get(key));
293
292
  // Open snapshot and verify contents while DB is running
294
293
  options.create_if_missing = false;
294
+ std::unique_ptr<DB> snapshotDB;
295
295
  ASSERT_OK(DB::Open(options, snapshot_name_, &snapshotDB));
296
296
  ASSERT_OK(snapshotDB->Get(roptions, key, &result));
297
297
  ASSERT_EQ("v1", result);
298
- delete snapshotDB;
299
- snapshotDB = nullptr;
300
- delete db_;
301
- db_ = nullptr;
298
+ snapshotDB.reset();
299
+ db_.reset();
302
300
 
303
301
  // Destroy original DB
304
302
  ASSERT_OK(DestroyDB(dbname_, options));
@@ -308,8 +306,7 @@ TEST_F(CheckpointTest, GetSnapshotLink) {
308
306
  dbname_ = snapshot_name_;
309
307
  ASSERT_OK(DB::Open(options, dbname_, &db_));
310
308
  ASSERT_EQ("v1", Get(key));
311
- delete db_;
312
- db_ = nullptr;
309
+ db_.reset();
313
310
  ASSERT_OK(DestroyDB(dbname_, options));
314
311
  delete checkpoint;
315
312
 
@@ -335,7 +332,7 @@ TEST_F(CheckpointTest, CheckpointWithBlob) {
335
332
 
336
333
  // Create a checkpoint
337
334
  Checkpoint* checkpoint = nullptr;
338
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
335
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
339
336
 
340
337
  std::unique_ptr<Checkpoint> checkpoint_guard(checkpoint);
341
338
 
@@ -360,11 +357,9 @@ TEST_F(CheckpointTest, CheckpointWithBlob) {
360
357
 
361
358
  // Make sure the checkpoint can be opened and the blob value read
362
359
  options.create_if_missing = false;
363
- DB* checkpoint_db = nullptr;
360
+ std::unique_ptr<DB> checkpoint_db;
364
361
  ASSERT_OK(DB::Open(options, snapshot_name_, &checkpoint_db));
365
362
 
366
- std::unique_ptr<DB> checkpoint_db_guard(checkpoint_db);
367
-
368
363
  PinnableSlice value;
369
364
  ASSERT_OK(checkpoint_db->Get(
370
365
  ReadOptions(), checkpoint_db->DefaultColumnFamily(), key, &value));
@@ -393,7 +388,7 @@ TEST_F(CheckpointTest, ExportColumnFamilyWithLinks) {
393
388
  ASSERT_OK(Put(key, "v1"));
394
389
 
395
390
  Checkpoint* checkpoint;
396
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
391
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
397
392
 
398
393
  // Export the Tables and verify
399
394
  ASSERT_OK(checkpoint->ExportColumnFamily(db_->DefaultColumnFamily(),
@@ -427,7 +422,7 @@ TEST_F(CheckpointTest, ExportColumnFamilyWithLinks) {
427
422
  ASSERT_OK(db_->Put(WriteOptions(), cfh_reverse_comp_, key, "v1"));
428
423
 
429
424
  Checkpoint* checkpoint;
430
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
425
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
431
426
 
432
427
  // Export the Tables and verify
433
428
  ASSERT_OK(checkpoint->ExportColumnFamily(cfh_reverse_comp_, export_path_,
@@ -439,6 +434,28 @@ TEST_F(CheckpointTest, ExportColumnFamilyWithLinks) {
439
434
  }
440
435
  }
441
436
 
437
+ TEST_F(CheckpointTest, ExportEmptyColumnFamily) {
438
+ // Verify that exporting a column family with no levels (empty CF) does not
439
+ // leak the allocated ExportImportFilesMetaData and correctly sets *metadata.
440
+ auto options = CurrentOptions();
441
+ options.create_if_missing = true;
442
+ CreateAndReopenWithCF({}, options);
443
+
444
+ // Do NOT put any data — the default CF has no levels.
445
+
446
+ Checkpoint* checkpoint;
447
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
448
+
449
+ ASSERT_OK(checkpoint->ExportColumnFamily(db_->DefaultColumnFamily(),
450
+ export_path_, &metadata_));
451
+ // metadata_ must be set even when the CF has no files.
452
+ ASSERT_NE(metadata_, nullptr);
453
+ ASSERT_EQ(metadata_->files.size(), 0);
454
+ ASSERT_EQ(metadata_->db_comparator_name, options.comparator->Name());
455
+
456
+ delete checkpoint;
457
+ }
458
+
442
459
  TEST_F(CheckpointTest, ExportColumnFamilyNegativeTest) {
443
460
  // Create a database
444
461
  auto options = CurrentOptions();
@@ -449,7 +466,7 @@ TEST_F(CheckpointTest, ExportColumnFamilyNegativeTest) {
449
466
  ASSERT_OK(Put(key, "v1"));
450
467
 
451
468
  Checkpoint* checkpoint;
452
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
469
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
453
470
 
454
471
  // Export onto existing directory
455
472
  ASSERT_OK(env_->CreateDirIfMissing(export_path_));
@@ -482,7 +499,6 @@ TEST_F(CheckpointTest, CheckpointCF) {
482
499
  ASSERT_OK(Put(4, "four", "four"));
483
500
  ASSERT_OK(Put(5, "five", "five"));
484
501
 
485
- DB* snapshotDB;
486
502
  ReadOptions roptions;
487
503
  std::string result;
488
504
  std::vector<ColumnFamilyHandle*> cphandles;
@@ -490,7 +506,7 @@ TEST_F(CheckpointTest, CheckpointCF) {
490
506
  // Take a snapshot
491
507
  ROCKSDB_NAMESPACE::port::Thread t([&]() {
492
508
  Checkpoint* checkpoint;
493
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
509
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
494
510
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_));
495
511
  delete checkpoint;
496
512
  });
@@ -519,6 +535,7 @@ TEST_F(CheckpointTest, CheckpointCF) {
519
535
  for (size_t i = 0; i < cfs.size(); ++i) {
520
536
  column_families.emplace_back(cfs[i], options);
521
537
  }
538
+ std::unique_ptr<DB> snapshotDB;
522
539
  ASSERT_OK(DB::Open(options, snapshot_name_, column_families, &cphandles,
523
540
  &snapshotDB));
524
541
  ASSERT_OK(snapshotDB->Get(roptions, cphandles[0], "Default", &result));
@@ -530,8 +547,7 @@ TEST_F(CheckpointTest, CheckpointCF) {
530
547
  delete h;
531
548
  }
532
549
  cphandles.clear();
533
- delete snapshotDB;
534
- snapshotDB = nullptr;
550
+ snapshotDB.reset();
535
551
  }
536
552
 
537
553
  TEST_F(CheckpointTest, CheckpointCFNoFlush) {
@@ -545,7 +561,6 @@ TEST_F(CheckpointTest, CheckpointCFNoFlush) {
545
561
  ASSERT_OK(Flush());
546
562
  ASSERT_OK(Put(2, "two", "two"));
547
563
 
548
- DB* snapshotDB;
549
564
  ReadOptions roptions;
550
565
  std::string result;
551
566
  std::vector<ColumnFamilyHandle*> cphandles;
@@ -558,7 +573,7 @@ TEST_F(CheckpointTest, CheckpointCFNoFlush) {
558
573
  });
559
574
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
560
575
  Checkpoint* checkpoint;
561
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
576
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
562
577
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_, 1000000));
563
578
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
564
579
 
@@ -577,6 +592,7 @@ TEST_F(CheckpointTest, CheckpointCFNoFlush) {
577
592
  for (size_t i = 0; i < cfs.size(); ++i) {
578
593
  column_families.emplace_back(cfs[i], options);
579
594
  }
595
+ std::unique_ptr<DB> snapshotDB;
580
596
  ASSERT_OK(DB::Open(options, snapshot_name_, column_families, &cphandles,
581
597
  &snapshotDB));
582
598
  ASSERT_OK(snapshotDB->Get(roptions, cphandles[0], "Default", &result));
@@ -589,8 +605,7 @@ TEST_F(CheckpointTest, CheckpointCFNoFlush) {
589
605
  delete h;
590
606
  }
591
607
  cphandles.clear();
592
- delete snapshotDB;
593
- snapshotDB = nullptr;
608
+ snapshotDB.reset();
594
609
  }
595
610
 
596
611
  TEST_F(CheckpointTest, CurrentFileModifiedWhileCheckpointing) {
@@ -615,7 +630,7 @@ TEST_F(CheckpointTest, CurrentFileModifiedWhileCheckpointing) {
615
630
 
616
631
  ROCKSDB_NAMESPACE::port::Thread t([&]() {
617
632
  Checkpoint* checkpoint;
618
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
633
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
619
634
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_));
620
635
  delete checkpoint;
621
636
  });
@@ -627,12 +642,10 @@ TEST_F(CheckpointTest, CurrentFileModifiedWhileCheckpointing) {
627
642
 
628
643
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
629
644
 
630
- DB* snapshotDB;
631
645
  // Successful Open() implies that CURRENT pointed to the manifest in the
632
646
  // checkpoint.
647
+ std::unique_ptr<DB> snapshotDB;
633
648
  ASSERT_OK(DB::Open(options, snapshot_name_, &snapshotDB));
634
- delete snapshotDB;
635
- snapshotDB = nullptr;
636
649
  }
637
650
 
638
651
  TEST_F(CheckpointTest, CurrentFileModifiedWhileCheckpointing2PC) {
@@ -752,7 +765,7 @@ TEST_F(CheckpointTest, CurrentFileModifiedWhileCheckpointing2PC) {
752
765
  TEST_F(CheckpointTest, CheckpointInvalidDirectoryName) {
753
766
  for (std::string checkpoint_dir : {"", "/", "////"}) {
754
767
  Checkpoint* checkpoint;
755
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
768
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
756
769
  ASSERT_TRUE(
757
770
  checkpoint->CreateCheckpoint(checkpoint_dir).IsInvalidArgument());
758
771
  delete checkpoint;
@@ -765,7 +778,7 @@ TEST_F(CheckpointTest, CheckpointWithParallelWrites) {
765
778
  ASSERT_OK(Put("key1", "val1"));
766
779
  port::Thread thread([this]() { ASSERT_OK(Put("key2", "val2")); });
767
780
  Checkpoint* checkpoint;
768
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
781
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
769
782
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_));
770
783
  delete checkpoint;
771
784
  thread.join();
@@ -816,24 +829,24 @@ TEST_P(CheckpointTestWithWalParams, CheckpointWithUnsyncedDataDropped) {
816
829
  // * one active WAL, not synced
817
830
  // with a single thread, so that we have at least one that can be hard
818
831
  // linked, etc.
819
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->PauseBackgroundWork());
820
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
832
+ ASSERT_OK(dbfull()->PauseBackgroundWork());
833
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
821
834
  ASSERT_OK(db_->SyncWAL());
822
835
  }
823
836
  ASSERT_OK(Put("key2", "val2"));
824
837
  if (GetLogSizeForFlush() > 0) {
825
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
838
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
826
839
  }
827
840
  ASSERT_OK(Put("key3", "val3"));
828
841
  Checkpoint* checkpoint;
829
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
842
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
830
843
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_, GetLogSizeForFlush()));
831
844
  delete checkpoint;
832
845
  ASSERT_OK(fault_fs->DropUnsyncedFileData());
833
846
  // make sure it's openable even though whatever data that wasn't synced got
834
847
  // dropped.
835
848
  options.env = env_;
836
- DB* snapshot_db;
849
+ std::unique_ptr<DB> snapshot_db;
837
850
  ASSERT_OK(DB::Open(options, snapshot_name_, &snapshot_db));
838
851
  ReadOptions read_opts;
839
852
  std::string get_result;
@@ -843,9 +856,8 @@ TEST_P(CheckpointTestWithWalParams, CheckpointWithUnsyncedDataDropped) {
843
856
  ASSERT_EQ("val2", get_result);
844
857
  ASSERT_OK(snapshot_db->Get(read_opts, "key3", &get_result));
845
858
  ASSERT_EQ("val3", get_result);
846
- delete snapshot_db;
847
- delete db_;
848
- db_ = nullptr;
859
+ snapshot_db.reset();
860
+ db_.reset();
849
861
  }
850
862
 
851
863
  TEST_F(CheckpointTest, CheckpointReadOnlyDB) {
@@ -855,18 +867,17 @@ TEST_F(CheckpointTest, CheckpointReadOnlyDB) {
855
867
  Options options = CurrentOptions();
856
868
  ASSERT_OK(ReadOnlyReopen(options));
857
869
  Checkpoint* checkpoint = nullptr;
858
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
870
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
859
871
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_));
860
872
  delete checkpoint;
861
873
  checkpoint = nullptr;
862
874
  Close();
863
- DB* snapshot_db = nullptr;
875
+ std::unique_ptr<DB> snapshot_db;
864
876
  ASSERT_OK(DB::Open(options, snapshot_name_, &snapshot_db));
865
877
  ReadOptions read_opts;
866
878
  std::string get_result;
867
879
  ASSERT_OK(snapshot_db->Get(read_opts, "foo", &get_result));
868
880
  ASSERT_EQ("foo_value", get_result);
869
- delete snapshot_db;
870
881
  }
871
882
 
872
883
  TEST_F(CheckpointTest, CheckpointWithLockWAL) {
@@ -876,7 +887,7 @@ TEST_F(CheckpointTest, CheckpointWithLockWAL) {
876
887
  ASSERT_OK(db_->LockWAL());
877
888
 
878
889
  Checkpoint* checkpoint = nullptr;
879
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
890
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
880
891
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_));
881
892
  delete checkpoint;
882
893
  checkpoint = nullptr;
@@ -884,13 +895,12 @@ TEST_F(CheckpointTest, CheckpointWithLockWAL) {
884
895
  ASSERT_OK(db_->UnlockWAL());
885
896
  Close();
886
897
 
887
- DB* snapshot_db = nullptr;
898
+ std::unique_ptr<DB> snapshot_db;
888
899
  ASSERT_OK(DB::Open(options, snapshot_name_, &snapshot_db));
889
900
  ReadOptions read_opts;
890
901
  std::string get_result;
891
902
  ASSERT_OK(snapshot_db->Get(read_opts, "foo", &get_result));
892
903
  ASSERT_EQ("foo_value", get_result);
893
- delete snapshot_db;
894
904
  }
895
905
 
896
906
  TEST_F(CheckpointTest, CheckpointReadOnlyDBWithMultipleColumnFamilies) {
@@ -905,7 +915,7 @@ TEST_F(CheckpointTest, CheckpointReadOnlyDBWithMultipleColumnFamilies) {
905
915
  {kDefaultColumnFamilyName, "pikachu", "eevee"}, options);
906
916
  ASSERT_OK(s);
907
917
  Checkpoint* checkpoint = nullptr;
908
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
918
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
909
919
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_));
910
920
  delete checkpoint;
911
921
  checkpoint = nullptr;
@@ -915,7 +925,7 @@ TEST_F(CheckpointTest, CheckpointReadOnlyDBWithMultipleColumnFamilies) {
915
925
  {kDefaultColumnFamilyName, options},
916
926
  {"pikachu", options},
917
927
  {"eevee", options}};
918
- DB* snapshot_db = nullptr;
928
+ std::unique_ptr<DB> snapshot_db;
919
929
  std::vector<ColumnFamilyHandle*> snapshot_handles;
920
930
  s = DB::Open(options, snapshot_name_, column_families, &snapshot_handles,
921
931
  &snapshot_db);
@@ -932,7 +942,6 @@ TEST_F(CheckpointTest, CheckpointReadOnlyDBWithMultipleColumnFamilies) {
932
942
  delete snapshot_h;
933
943
  }
934
944
  snapshot_handles.clear();
935
- delete snapshot_db;
936
945
  }
937
946
 
938
947
  TEST_F(CheckpointTest, CheckpointWithDbPath) {
@@ -942,7 +951,7 @@ TEST_F(CheckpointTest, CheckpointWithDbPath) {
942
951
  ASSERT_OK(Put("key1", "val1"));
943
952
  ASSERT_OK(Flush());
944
953
  Checkpoint* checkpoint;
945
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
954
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
946
955
  // Currently not supported
947
956
  ASSERT_TRUE(checkpoint->CreateCheckpoint(snapshot_name_).IsNotSupported());
948
957
  delete checkpoint;
@@ -964,7 +973,7 @@ TEST_F(CheckpointTest, CheckpointWithArchievedLog) {
964
973
  ASSERT_OK(Put("key2", std::string(1024, 'a')));
965
974
 
966
975
  Checkpoint* checkpoint;
967
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
976
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
968
977
  TEST_SYNC_POINT("CheckpointTest:CheckpointWithArchievedLog");
969
978
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_, 1024 * 1024));
970
979
  // unflushed log size < 1024 * 1024 < total file size including archived log,
@@ -973,7 +982,7 @@ TEST_F(CheckpointTest, CheckpointWithArchievedLog) {
973
982
  delete checkpoint;
974
983
  checkpoint = nullptr;
975
984
 
976
- DB* snapshot_db;
985
+ std::unique_ptr<DB> snapshot_db;
977
986
  ASSERT_OK(DB::Open(options, snapshot_name_, &snapshot_db));
978
987
  ReadOptions read_opts;
979
988
  std::string get_result;
@@ -982,7 +991,6 @@ TEST_F(CheckpointTest, CheckpointWithArchievedLog) {
982
991
  get_result.clear();
983
992
  ASSERT_OK(snapshot_db->Get(read_opts, "key2", &get_result));
984
993
  ASSERT_EQ(std::string(1024, 'a'), get_result);
985
- delete snapshot_db;
986
994
  }
987
995
 
988
996
  class CheckpointDestroyTest : public CheckpointTest,
@@ -1013,7 +1021,7 @@ TEST_P(CheckpointDestroyTest, DisableEnableSlowDeletion) {
1013
1021
  ASSERT_EQ(NumTableFilesAtLevel(1), 2);
1014
1022
 
1015
1023
  Checkpoint* checkpoint;
1016
- ASSERT_OK(Checkpoint::Create(db_, &checkpoint));
1024
+ ASSERT_OK(Checkpoint::Create(db_.get(), &checkpoint));
1017
1025
  ASSERT_OK(checkpoint->CreateCheckpoint(snapshot_name_));
1018
1026
 
1019
1027
  delete checkpoint;
@@ -1023,7 +1031,7 @@ TEST_P(CheckpointDestroyTest, DisableEnableSlowDeletion) {
1023
1031
  ASSERT_EQ(NumTableFilesAtLevel(0), 0);
1024
1032
  ASSERT_EQ(NumTableFilesAtLevel(1), 2);
1025
1033
 
1026
- DB* snapshot_db;
1034
+ std::unique_ptr<DB> snapshot_db;
1027
1035
  ASSERT_OK(DB::Open(options, snapshot_name_, &snapshot_db));
1028
1036
  ReadOptions read_opts;
1029
1037
  std::string get_result;
@@ -1031,11 +1039,10 @@ TEST_P(CheckpointDestroyTest, DisableEnableSlowDeletion) {
1031
1039
  ASSERT_EQ("a", get_result);
1032
1040
  ASSERT_OK(snapshot_db->Get(read_opts, "bar", &get_result));
1033
1041
  ASSERT_EQ("val9", get_result);
1034
- delete snapshot_db;
1042
+ snapshot_db.reset();
1035
1043
 
1036
1044
  // Make sure original obsolete files for hard linked files are all deleted.
1037
- DBImpl* db_impl = static_cast_with_check<DBImpl>(db_);
1038
- db_impl->TEST_DeleteObsoleteFiles();
1045
+ dbfull()->TEST_DeleteObsoleteFiles();
1039
1046
  auto sfm = static_cast_with_check<SstFileManagerImpl>(
1040
1047
  options.sst_file_manager.get());
1041
1048
  ASSERT_NE(nullptr, sfm);
@@ -7,6 +7,7 @@
7
7
 
8
8
  #include "db/db_impl/db_impl.h"
9
9
  #include "rocksdb/utilities/options_type.h"
10
+ #include "util/cast_util.h"
10
11
 
11
12
  namespace ROCKSDB_NAMESPACE {
12
13
 
@@ -77,7 +78,7 @@ Status GetAllKeyVersions(DB* db, ColumnFamilyHandle* cfh, OptSlice begin_key,
77
78
  }
78
79
  key_versions->clear();
79
80
 
80
- DBImpl* idb = static_cast<DBImpl*>(db->GetRootDB());
81
+ DBImpl* idb = static_cast_with_check<DBImpl>(db->GetRootDB());
81
82
  auto icmp = InternalKeyComparator(idb->GetOptions(cfh).comparator);
82
83
  ReadOptions read_options;
83
84
  Arena arena;