@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
@@ -97,7 +97,7 @@ DBTestBase::DBTestBase(const std::string path, bool env_do_fsync)
97
97
  EXPECT_OK(DestroyDB(dbname_, delete_options));
98
98
  // Destroy it for not alternative WAL dir is used.
99
99
  EXPECT_OK(DestroyDB(dbname_, options));
100
- db_ = nullptr;
100
+ db_.reset();
101
101
  Reopen(options);
102
102
  Random::GetTLSInstance()->Reset(0xdeadbeef);
103
103
  }
@@ -520,7 +520,7 @@ Options DBTestBase::GetOptions(
520
520
  }
521
521
  case kBlockBasedTableWithLatestFormat: {
522
522
  // In case different from default
523
- table_options.format_version = kLatestFormatVersion;
523
+ table_options.format_version = kLatestBbtFormatVersion;
524
524
  break;
525
525
  }
526
526
  case kOptimizeFiltersForHits: {
@@ -664,7 +664,8 @@ Status DBTestBase::TryReopenWithColumnFamilies(
664
664
  DBOptions db_opts = DBOptions(options[0]);
665
665
  last_options_ = options[0];
666
666
  MaybeInstallTimeElapseOnlySleep(db_opts);
667
- return DB::Open(db_opts, dbname_, column_families, &handles_, &db_);
667
+ Status s = DB::Open(db_opts, dbname_, column_families, &handles_, &db_);
668
+ return s;
668
669
  }
669
670
 
670
671
  Status DBTestBase::TryReopenWithColumnFamilies(
@@ -674,6 +675,28 @@ Status DBTestBase::TryReopenWithColumnFamilies(
674
675
  return TryReopenWithColumnFamilies(cfs, v_opts);
675
676
  }
676
677
 
678
+ Status DBTestBase::TryReopenReadOnlyWithColumnFamilies(
679
+ const std::vector<std::string>& cfs, const std::vector<Options>& options) {
680
+ Close();
681
+ EXPECT_EQ(cfs.size(), options.size());
682
+ std::vector<ColumnFamilyDescriptor> column_families;
683
+ for (size_t i = 0; i < cfs.size(); ++i) {
684
+ column_families.emplace_back(cfs[i], options[i]);
685
+ }
686
+ DBOptions db_opts = DBOptions(options[0]);
687
+ last_options_ = options[0];
688
+ MaybeInstallTimeElapseOnlySleep(db_opts);
689
+ return DB::OpenForReadOnly(db_opts, dbname_, column_families, &handles_,
690
+ &db_);
691
+ }
692
+
693
+ Status DBTestBase::TryReopenReadOnlyWithColumnFamilies(
694
+ const std::vector<std::string>& cfs, const Options& options) {
695
+ Close();
696
+ std::vector<Options> v_opts(cfs.size(), options);
697
+ return TryReopenReadOnlyWithColumnFamilies(cfs, v_opts);
698
+ }
699
+
677
700
  void DBTestBase::Reopen(const Options& options) {
678
701
  ASSERT_OK(TryReopen(options));
679
702
  }
@@ -683,8 +706,7 @@ void DBTestBase::Close() {
683
706
  EXPECT_OK(db_->DestroyColumnFamilyHandle(h));
684
707
  }
685
708
  handles_.clear();
686
- delete db_;
687
- db_ = nullptr;
709
+ db_.reset();
688
710
  }
689
711
 
690
712
  void DBTestBase::DestroyAndReopen(const Options& options) {
@@ -709,7 +731,8 @@ void DBTestBase::Destroy(const Options& options, bool delete_cf_paths) {
709
731
  Status DBTestBase::ReadOnlyReopen(const Options& options) {
710
732
  Close();
711
733
  MaybeInstallTimeElapseOnlySleep(options);
712
- return DB::OpenForReadOnly(options, dbname_, &db_);
734
+ Status s = DB::OpenForReadOnly(options, dbname_, &db_);
735
+ return s;
713
736
  }
714
737
 
715
738
  Status DBTestBase::EnforcedReadOnlyReopen(const Options& options) {
@@ -720,7 +743,8 @@ Status DBTestBase::EnforcedReadOnlyReopen(const Options& options) {
720
743
  std::make_shared<ReadOnlyFileSystem>(env_->GetFileSystem());
721
744
  env_read_only_ = std::make_shared<CompositeEnvWrapper>(env_, fs_read_only);
722
745
  options_copy.env = env_read_only_.get();
723
- return DB::OpenForReadOnly(options_copy, dbname_, &db_);
746
+ Status s = DB::OpenForReadOnly(options_copy, dbname_, &db_);
747
+ return s;
724
748
  }
725
749
 
726
750
  Status DBTestBase::TryReopen(const Options& options) {
@@ -735,7 +759,8 @@ Status DBTestBase::TryReopen(const Options& options) {
735
759
  // clears the block cache.
736
760
  last_options_ = options;
737
761
  MaybeInstallTimeElapseOnlySleep(options);
738
- return DB::Open(options, dbname_, &db_);
762
+ Status s = DB::Open(options, dbname_, &db_);
763
+ return s;
739
764
  }
740
765
 
741
766
  bool DBTestBase::IsDirectIOSupported() {
@@ -1162,7 +1187,7 @@ int DBTestBase::NumTableFilesAtLevel(int level, int cf) {
1162
1187
  int DBTestBase::NumTableFilesAtLevel(int level, ColumnFamilyHandle* cfh,
1163
1188
  DB* db) {
1164
1189
  if (!db) {
1165
- db = db_;
1190
+ db = db_.get();
1166
1191
  }
1167
1192
  std::string property;
1168
1193
  EXPECT_TRUE(db->GetProperty(
@@ -1208,7 +1233,7 @@ std::string DBTestBase::FilesPerLevel(int cf) {
1208
1233
 
1209
1234
  std::string DBTestBase::FilesPerLevel(ColumnFamilyHandle* cfh, DB* db) {
1210
1235
  if (!db) {
1211
- db = db_;
1236
+ db = db_.get();
1212
1237
  }
1213
1238
  int num_levels = db->NumberLevels(cfh);
1214
1239
  std::string result;
@@ -1072,7 +1072,7 @@ class DBTestBase : public testing::Test {
1072
1072
  SpecialEnv* env_;
1073
1073
  std::shared_ptr<Env> env_read_only_;
1074
1074
  std::shared_ptr<Env> env_guard_;
1075
- DB* db_;
1075
+ std::unique_ptr<DB> db_;
1076
1076
  std::vector<ColumnFamilyHandle*> handles_;
1077
1077
 
1078
1078
  int option_config_;
@@ -1157,7 +1157,7 @@ class DBTestBase : public testing::Test {
1157
1157
  const anon::OptionsOverride& options_override =
1158
1158
  anon::OptionsOverride()) const;
1159
1159
 
1160
- DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_); }
1160
+ DBImpl* dbfull() { return static_cast_with_check<DBImpl>(db_.get()); }
1161
1161
 
1162
1162
  void CreateColumnFamilies(const std::vector<std::string>& cfs,
1163
1163
  const Options& options);
@@ -1177,6 +1177,12 @@ class DBTestBase : public testing::Test {
1177
1177
  Status TryReopenWithColumnFamilies(const std::vector<std::string>& cfs,
1178
1178
  const Options& options);
1179
1179
 
1180
+ Status TryReopenReadOnlyWithColumnFamilies(
1181
+ const std::vector<std::string>& cfs, const std::vector<Options>& options);
1182
+
1183
+ Status TryReopenReadOnlyWithColumnFamilies(
1184
+ const std::vector<std::string>& cfs, const Options& options);
1185
+
1180
1186
  void Reopen(const Options& options);
1181
1187
 
1182
1188
  void Close();
@@ -395,13 +395,13 @@ TEST_P(DBWALTestWithTimestamp, RecoverAndNoFlush) {
395
395
  read_opts.timestamp = &ts_slice;
396
396
  ASSERT_OK(CreateAndReopenWithTs({"pikachu"}, ts_options, persist_udt,
397
397
  avoid_flush_during_recovery));
398
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"), 0U);
398
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"), 0U);
399
399
  ASSERT_OK(Put(1, "foo", ts1, "v1"));
400
400
  ASSERT_OK(Put(1, "baz", ts1, "v5"));
401
401
 
402
402
  ASSERT_OK(ReopenColumnFamiliesWithTs({"pikachu"}, ts_options, persist_udt,
403
403
  avoid_flush_during_recovery));
404
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"), 0U);
404
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"), 0U);
405
405
  // Do a timestamped read with ts1 after second reopen.
406
406
  CheckGet(read_opts, 1, "foo", "v1", ts1);
407
407
  CheckGet(read_opts, 1, "baz", "v5", ts1);
@@ -415,7 +415,7 @@ TEST_P(DBWALTestWithTimestamp, RecoverAndNoFlush) {
415
415
 
416
416
  ASSERT_OK(ReopenColumnFamiliesWithTs({"pikachu"}, ts_options, persist_udt,
417
417
  avoid_flush_during_recovery));
418
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"), 0U);
418
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"), 0U);
419
419
  std::string ts3;
420
420
  PutFixed64(&ts3, 3);
421
421
  ASSERT_OK(Put(1, "foo", ts3, "v4"));
@@ -466,14 +466,14 @@ TEST_P(DBWALTestWithTimestamp, RecoverAndFlush) {
466
466
 
467
467
  ASSERT_OK(CreateAndReopenWithTs({"pikachu"}, ts_options, persist_udt));
468
468
  // No flush, no sst files, because of no data.
469
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"), 0U);
469
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"), 0U);
470
470
  ASSERT_OK(Put(1, largest_ukey_without_ts, write_ts, "v1"));
471
471
  ASSERT_OK(Put(1, smallest_ukey_without_ts, write_ts, "v5"));
472
472
 
473
473
  ASSERT_OK(ReopenColumnFamiliesWithTs({"pikachu"}, ts_options, persist_udt));
474
474
  // Memtable recovered from WAL flushed because `avoid_flush_during_recovery`
475
475
  // defaults to false, created one L0 file.
476
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"), 1U);
476
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"), 1U);
477
477
 
478
478
  std::vector<std::vector<FileMetaData>> level_to_files;
479
479
  dbfull()->TEST_GetFilesMetaData(handles_[1], &level_to_files);
@@ -600,9 +600,9 @@ TEST_F(DBWALTest, RecoverWithTableHandle) {
600
600
  for (const auto& level : files) {
601
601
  for (const auto& file : level) {
602
602
  if (options.max_open_files == kSmallMaxOpenFiles) {
603
- ASSERT_TRUE(file.table_reader_handle == nullptr);
603
+ ASSERT_TRUE(file.fd.pinned_reader.Get() == nullptr);
604
604
  } else {
605
- ASSERT_TRUE(file.table_reader_handle != nullptr);
605
+ ASSERT_TRUE(file.fd.pinned_reader.Get() != nullptr);
606
606
  }
607
607
  }
608
608
  }
@@ -1347,7 +1347,7 @@ TEST_F(DBWALTest, RecoverCheckFileAmountWithSmallWriteBuffer) {
1347
1347
  auto tables = ListTableFiles(env_, dbname_);
1348
1348
  ASSERT_EQ(tables.size(), static_cast<size_t>(1));
1349
1349
  // Make sure 'dobrynia' was flushed: check sst files amount
1350
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
1350
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
1351
1351
  static_cast<uint64_t>(1));
1352
1352
  }
1353
1353
  // New WAL file
@@ -1363,16 +1363,16 @@ TEST_F(DBWALTest, RecoverCheckFileAmountWithSmallWriteBuffer) {
1363
1363
  options);
1364
1364
  {
1365
1365
  // No inserts => default is empty
1366
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
1366
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
1367
1367
  static_cast<uint64_t>(0));
1368
1368
  // First 4 keys goes to separate SSTs + 1 more SST for 2 smaller keys
1369
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"),
1369
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"),
1370
1370
  static_cast<uint64_t>(5));
1371
1371
  // 1 SST for big key + 1 SST for small one
1372
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
1372
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
1373
1373
  static_cast<uint64_t>(2));
1374
1374
  // 1 SST for all keys
1375
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
1375
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
1376
1376
  static_cast<uint64_t>(1));
1377
1377
  }
1378
1378
  }
@@ -1401,7 +1401,7 @@ TEST_F(DBWALTest, RecoverCheckFileAmount) {
1401
1401
  {
1402
1402
  auto tables = ListTableFiles(env_, dbname_);
1403
1403
  ASSERT_EQ(tables.size(), static_cast<size_t>(1));
1404
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
1404
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
1405
1405
  static_cast<uint64_t>(1));
1406
1406
  }
1407
1407
  // Memtable for 'nikitich' has flushed, new WAL file has opened
@@ -1425,7 +1425,7 @@ TEST_F(DBWALTest, RecoverCheckFileAmount) {
1425
1425
  {
1426
1426
  auto tables = ListTableFiles(env_, dbname_);
1427
1427
  ASSERT_EQ(tables.size(), static_cast<size_t>(2));
1428
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
1428
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
1429
1429
  static_cast<uint64_t>(2));
1430
1430
  }
1431
1431
 
@@ -1437,13 +1437,13 @@ TEST_F(DBWALTest, RecoverCheckFileAmount) {
1437
1437
  // first, second and third WALs went to the same SST.
1438
1438
  // So, there is 6 SSTs: three for 'nikitich', one for 'default', one for
1439
1439
  // 'dobrynia', one for 'pikachu'
1440
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
1440
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "default"),
1441
1441
  static_cast<uint64_t>(1));
1442
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
1442
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "nikitich"),
1443
1443
  static_cast<uint64_t>(3));
1444
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "dobrynia"),
1444
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "dobrynia"),
1445
1445
  static_cast<uint64_t>(1));
1446
- ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "pikachu"),
1446
+ ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_.get(), "pikachu"),
1447
1447
  static_cast<uint64_t>(1));
1448
1448
  }
1449
1449
  }
@@ -1521,9 +1521,9 @@ TEST_F(DBWALTest, DISABLED_RecycleMultipleWalsCrash) {
1521
1521
  // from an old incarnation of the WAL on recovery
1522
1522
  ASSERT_OK(db_->PauseBackgroundWork());
1523
1523
  ASSERT_OK(Put("ignore1", Random::GetTLSInstance()->RandomString(500)));
1524
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
1524
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
1525
1525
  ASSERT_OK(Put("ignore2", Random::GetTLSInstance()->RandomString(500)));
1526
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
1526
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
1527
1527
  ASSERT_OK(db_->ContinueBackgroundWork());
1528
1528
  ASSERT_OK(Flush());
1529
1529
  ASSERT_OK(Put("ignore3", Random::GetTLSInstance()->RandomString(500)));
@@ -1545,13 +1545,13 @@ TEST_F(DBWALTest, DISABLED_RecycleMultipleWalsCrash) {
1545
1545
  // gap in sequence numbers to interfere with recovery
1546
1546
  ASSERT_OK(db_->PauseBackgroundWork());
1547
1547
  ASSERT_OK(Put("key1", "val1"));
1548
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
1548
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
1549
1549
  ASSERT_OK(Put("key2", "val2"));
1550
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
1550
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
1551
1551
  // Need a gap in sequence numbers, so e.g. ingest external file
1552
1552
  // with an open snapshot
1553
1553
  {
1554
- ManagedSnapshot snapshot(db_);
1554
+ ManagedSnapshot snapshot(db_.get());
1555
1555
  ASSERT_OK(
1556
1556
  db_->IngestExternalFile({external_file1}, IngestExternalFileOptions()));
1557
1557
  }
@@ -1560,7 +1560,7 @@ TEST_F(DBWALTest, DISABLED_RecycleMultipleWalsCrash) {
1560
1560
  // Need an SST file that is logically after that WAL, so that dropping WAL
1561
1561
  // data is not a valid point in time.
1562
1562
  {
1563
- ManagedSnapshot snapshot(db_);
1563
+ ManagedSnapshot snapshot(db_.get());
1564
1564
  ASSERT_OK(
1565
1565
  db_->IngestExternalFile({external_file2}, IngestExternalFileOptions()));
1566
1566
  }
@@ -1613,7 +1613,7 @@ TEST_F(DBWALTest, SyncWalPartialFailure) {
1613
1613
  return s;
1614
1614
  }
1615
1615
 
1616
- AcqRelAtomic<uint32_t> syncs_before_failure_{UINT32_MAX};
1616
+ Atomic<uint32_t> syncs_before_failure_{UINT32_MAX};
1617
1617
 
1618
1618
  protected:
1619
1619
  class MyTestWritableFile : public FSWritableFileOwnerWrapper {
@@ -1655,10 +1655,10 @@ TEST_F(DBWALTest, SyncWalPartialFailure) {
1655
1655
  // with a single thread, to exercise as much logic as we reasonably can.
1656
1656
  ASSERT_OK(db_->PauseBackgroundWork());
1657
1657
  ASSERT_OK(Put("key1", "val1"));
1658
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
1658
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
1659
1659
  ASSERT_OK(db_->SyncWAL());
1660
1660
  ASSERT_OK(Put("key2", "val2"));
1661
- ASSERT_OK(static_cast_with_check<DBImpl>(db_)->TEST_SwitchMemtable());
1661
+ ASSERT_OK(dbfull()->TEST_SwitchMemtable());
1662
1662
  ASSERT_OK(Put("key3", "val3"));
1663
1663
 
1664
1664
  // Allow 1 of the WALs to sync, but another won't
@@ -1879,9 +1879,11 @@ TEST_F(DBWALTest, TrackAndVerifyWALsRecycleWAL) {
1879
1879
  // Drop `Put("key1", "old_value")` in the first WAL
1880
1880
  ASSERT_OK(test::TruncateFile(options.env, log_name, 0 /* new_length */));
1881
1881
 
1882
- Status s = DB::Open(options, dbname_, &db_);
1882
+ {
1883
+ Status s = DB::Open(options, dbname_, &db_);
1883
1884
 
1884
- ASSERT_OK(s);
1885
+ ASSERT_OK(s);
1886
+ }
1885
1887
 
1886
1888
  ASSERT_EQ("wal_to_recycle", Get("key_ignore2"));
1887
1889
  ASSERT_EQ("NOT_FOUND", Get("key1"));
@@ -1979,7 +1981,10 @@ TEST_P(DBWALTrackAndVerifyWALsWithParamsTest, Basic) {
1979
1981
  ASSERT_OK(options.env->DeleteFile(second_log_name));
1980
1982
  }
1981
1983
 
1982
- Status s = DB::Open(options, dbname_, &db_);
1984
+ Status s;
1985
+ {
1986
+ s = DB::Open(options, dbname_, &db_);
1987
+ }
1983
1988
 
1984
1989
  if (i == 0) {
1985
1990
  ASSERT_OK(s);
@@ -2266,11 +2271,10 @@ TEST_F(DBWALTest, RaceInstallFlushResultsWithWalObsoletion) {
2266
2271
  SyncPoint::GetInstance()->DisableProcessing();
2267
2272
  SyncPoint::GetInstance()->ClearAllCallBacks();
2268
2273
 
2269
- DB* db1 = nullptr;
2274
+ std::unique_ptr<DB> db1;
2270
2275
  Status s = DB::OpenForReadOnly(options, dbname_, &db1);
2271
2276
  ASSERT_OK(s);
2272
2277
  assert(db1);
2273
- delete db1;
2274
2278
  }
2275
2279
 
2276
2280
  TEST_F(DBWALTest, FixSyncWalOnObseletedWalWithNewManifestCausingMissingWAL) {
@@ -662,7 +662,7 @@ TEST_F(DBBasicTestWithTimestamp, TrimHistoryTest) {
662
662
  ASSERT_OK(db_->Put(WriteOptions(), "k1", Timestamp(4, 0), "v2"));
663
663
  ASSERT_OK(db_->Delete(WriteOptions(), "k1", Timestamp(5, 0)));
664
664
  ASSERT_OK(db_->Put(WriteOptions(), "k1", Timestamp(6, 0), "v3"));
665
- check_value_by_ts(db_, "k1", Timestamp(7, 0), Status::OK(), "v3",
665
+ check_value_by_ts(db_.get(), "k1", Timestamp(7, 0), Status::OK(), "v3",
666
666
  Timestamp(6, 0));
667
667
  ASSERT_OK(Flush());
668
668
  Close();
@@ -675,27 +675,27 @@ TEST_F(DBBasicTestWithTimestamp, TrimHistoryTest) {
675
675
  // Trim data whose version > Timestamp(5, 0), read(k1, ts(7)) <- NOT_FOUND.
676
676
  ASSERT_OK(DB::OpenAndTrimHistory(db_options, dbname_, column_families,
677
677
  &handles_, &db_, Timestamp(5, 0)));
678
- check_value_by_ts(db_, "k1", Timestamp(7, 0), Status::NotFound(), "",
678
+ check_value_by_ts(db_.get(), "k1", Timestamp(7, 0), Status::NotFound(), "",
679
679
  Timestamp(5, 0));
680
680
  Close();
681
681
 
682
682
  // Trim data whose timestamp > Timestamp(4, 0), read(k1, ts(7)) <- v2
683
683
  ASSERT_OK(DB::OpenAndTrimHistory(db_options, dbname_, column_families,
684
684
  &handles_, &db_, Timestamp(4, 0)));
685
- check_value_by_ts(db_, "k1", Timestamp(7, 0), Status::OK(), "v2",
685
+ check_value_by_ts(db_.get(), "k1", Timestamp(7, 0), Status::OK(), "v2",
686
686
  Timestamp(4, 0));
687
687
  Close();
688
688
 
689
689
  Reopen(options);
690
690
  ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), "k1",
691
691
  "k3", Timestamp(7, 0)));
692
- check_value_by_ts(db_, "k1", Timestamp(8, 0), Status::NotFound(), "",
692
+ check_value_by_ts(db_.get(), "k1", Timestamp(8, 0), Status::NotFound(), "",
693
693
  Timestamp(7, 0));
694
694
  Close();
695
695
  // Trim data whose timestamp > Timestamp(6, 0), read(k1, ts(8)) <- v2
696
696
  ASSERT_OK(DB::OpenAndTrimHistory(db_options, dbname_, column_families,
697
697
  &handles_, &db_, Timestamp(6, 0)));
698
- check_value_by_ts(db_, "k1", Timestamp(8, 0), Status::OK(), "v2",
698
+ check_value_by_ts(db_.get(), "k1", Timestamp(8, 0), Status::OK(), "v2",
699
699
  Timestamp(4, 0));
700
700
  Close();
701
701
  }
@@ -1427,8 +1427,12 @@ TEST_F(DBBasicTestWithTimestamp, ReseekToNextUserKey) {
1427
1427
  {
1428
1428
  std::string ts_str = Timestamp(static_cast<uint64_t>(kNumKeys + 1), 0);
1429
1429
  WriteBatch batch(0, 0, 0, kTimestampSize);
1430
- { ASSERT_OK(batch.Put("a", "new_value")); }
1431
- { ASSERT_OK(batch.Put("b", "new_value")); }
1430
+ {
1431
+ ASSERT_OK(batch.Put("a", "new_value"));
1432
+ }
1433
+ {
1434
+ ASSERT_OK(batch.Put("b", "new_value"));
1435
+ }
1432
1436
  s = batch.UpdateTimestamps(
1433
1437
  ts_str, [kTimestampSize](uint32_t) { return kTimestampSize; });
1434
1438
  ASSERT_OK(s);