@nxtedition/rocksdb 15.4.0 → 15.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/binding.cc +24 -19
  2. package/cache.js +1 -1
  3. package/chained-batch.js +12 -3
  4. package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
  5. package/deps/rocksdb/rocksdb/BUCK +42 -0
  6. package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
  7. package/deps/rocksdb/rocksdb/Makefile +59 -32
  8. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
  9. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
  10. package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
  11. package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
  12. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
  13. package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
  14. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
  15. package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
  16. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
  18. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
  19. package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  25. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
  26. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
  27. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
  28. package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
  29. package/deps/rocksdb/rocksdb/db/builder.h +7 -0
  30. package/deps/rocksdb/rocksdb/db/c.cc +373 -57
  31. package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
  32. package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
  33. package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
  34. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
  53. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  54. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
  55. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
  57. package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
  58. package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
  59. package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
  60. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
  61. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
  62. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
  63. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
  64. package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
  65. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
  66. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
  67. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
  68. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
  81. package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
  82. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
  83. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
  84. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
  85. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
  86. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
  87. package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
  88. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
  89. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
  90. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
  91. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
  92. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
  93. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
  94. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
  95. package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
  96. package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
  97. package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
  98. package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
  99. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
  100. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
  101. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
  102. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
  103. package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
  104. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
  105. package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
  106. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
  107. package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
  108. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
  110. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
  111. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
  112. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
  113. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
  114. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
  115. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
  116. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
  117. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  118. package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
  119. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
  120. package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
  121. package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
  122. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
  123. package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
  124. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
  125. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  126. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
  127. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
  128. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
  129. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
  130. package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
  131. package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
  132. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
  133. package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
  134. package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
  135. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
  136. package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
  137. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  138. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
  139. package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
  140. package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
  141. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
  142. package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
  143. package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
  144. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
  145. package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
  146. package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
  147. package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
  148. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
  149. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
  150. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
  151. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
  152. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
  153. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
  159. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
  160. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
  161. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
  162. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
  163. package/deps/rocksdb/rocksdb/env/env.cc +1 -0
  164. package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
  165. package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
  166. package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
  167. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  168. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  169. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
  170. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
  171. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
  172. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
  173. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  174. package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
  175. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
  176. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
  177. package/deps/rocksdb/rocksdb/folly.mk +22 -5
  178. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
  179. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
  180. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
  181. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
  182. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
  183. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
  184. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
  185. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
  187. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
  188. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
  189. package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
  192. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
  194. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
  195. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
  196. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
  197. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
  198. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
  199. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
  200. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
  202. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
  203. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
  204. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
  205. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
  206. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
  207. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
  208. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
  209. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
  210. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
  211. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
  212. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  213. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
  214. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
  215. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
  216. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
  217. package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
  218. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
  219. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
  220. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
  221. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
  222. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
  223. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
  224. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
  225. package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
  226. package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
  227. package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
  228. package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
  229. package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
  230. package/deps/rocksdb/rocksdb/options/options.cc +5 -1
  231. package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
  232. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
  233. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
  234. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
  235. package/deps/rocksdb/rocksdb/port/lang.h +4 -0
  236. package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
  237. package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
  238. package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
  239. package/deps/rocksdb/rocksdb/src.mk +12 -0
  240. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
  241. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  242. package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
  243. package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
  247. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
  248. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
  249. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
  250. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
  251. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
  252. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
  253. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
  254. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
  255. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
  256. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
  257. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
  258. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
  259. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
  260. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  261. package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
  262. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
  263. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
  264. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
  265. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
  266. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
  267. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
  268. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
  269. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
  270. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
  271. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  272. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
  273. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
  274. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
  275. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
  276. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
  277. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
  278. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
  279. package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
  280. package/deps/rocksdb/rocksdb/table/format.cc +27 -15
  281. package/deps/rocksdb/rocksdb/table/format.h +41 -15
  282. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
  283. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
  284. package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
  285. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
  286. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  287. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
  288. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
  289. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
  290. package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
  291. package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
  292. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
  293. package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
  294. package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
  295. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
  296. package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
  297. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
  298. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
  299. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
  300. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
  301. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
  302. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
  303. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
  304. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
  305. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
  306. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
  307. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
  308. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
  309. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
  310. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
  311. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
  312. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
  313. package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
  314. package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
  315. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
  316. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
  317. package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
  318. package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
  319. package/deps/rocksdb/rocksdb/util/coding.h +14 -27
  320. package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
  321. package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
  322. package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
  323. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
  324. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
  325. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
  326. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
  327. package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
  328. package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
  329. package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
  330. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
  331. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
  332. package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
  333. package/deps/rocksdb/rocksdb/util/math.h +3 -1
  334. package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
  335. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
  336. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
  337. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
  338. package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
  339. package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
  340. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
  341. package/deps/rocksdb/rocksdb/util/status.cc +3 -1
  342. package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
  343. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
  344. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
  345. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
  346. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
  347. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
  348. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
  349. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
  350. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
  351. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
  352. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
  353. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
  354. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
  355. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
  356. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
  357. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
  358. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
  359. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
  360. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  361. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
  362. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
  363. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
  364. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
  365. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
  366. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
  367. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
  368. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
  369. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
  370. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
  371. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
  372. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
  373. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
  374. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
  375. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
  376. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
  377. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
  378. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  379. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
  380. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
  381. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
  382. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
  383. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
  384. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
  385. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
  386. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
  387. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
  388. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
  389. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
  390. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
  391. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  392. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
  393. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
  394. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
  395. package/deps/rocksdb/rocksdb.gyp +7 -0
  396. package/index.js +11 -2
  397. package/iterator.js +15 -7
  398. package/package.json +1 -1
  399. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  400. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
@@ -41,7 +41,9 @@ inline T BottomNBits(T v, int nbits) {
41
41
  #endif
42
42
  // Newer compilers compile this down to bzhi on x86, but some older
43
43
  // ones don't, thus the need for the intrinsic above.
44
- return static_cast<T>(v & ((T{1} << nbits) - 1));
44
+ using UnsignedT = std::make_unsigned_t<T>;
45
+ UnsignedT mask = (static_cast<UnsignedT>(1) << nbits) - 1;
46
+ return static_cast<T>(static_cast<UnsignedT>(v) & mask);
45
47
  }
46
48
 
47
49
  // Fast implementation of floor(log2(v)). Undefined for 0 or negative
@@ -34,15 +34,15 @@ namespace ROCKSDB_NAMESPACE {
34
34
 
35
35
  class MutexLock {
36
36
  public:
37
- explicit MutexLock(port::Mutex *mu) : mu_(mu) { this->mu_->Lock(); }
37
+ explicit MutexLock(port::Mutex* mu) : mu_(mu) { this->mu_->Lock(); }
38
38
  // No copying allowed
39
- MutexLock(const MutexLock &) = delete;
40
- void operator=(const MutexLock &) = delete;
39
+ MutexLock(const MutexLock&) = delete;
40
+ void operator=(const MutexLock&) = delete;
41
41
 
42
42
  ~MutexLock() { this->mu_->Unlock(); }
43
43
 
44
44
  private:
45
- port::Mutex *const mu_;
45
+ port::Mutex* const mu_;
46
46
  };
47
47
 
48
48
  //
@@ -52,15 +52,15 @@ class MutexLock {
52
52
  //
53
53
  class ReadLock {
54
54
  public:
55
- explicit ReadLock(port::RWMutex *mu) : mu_(mu) { this->mu_->ReadLock(); }
55
+ explicit ReadLock(port::RWMutex* mu) : mu_(mu) { this->mu_->ReadLock(); }
56
56
  // No copying allowed
57
- ReadLock(const ReadLock &) = delete;
58
- void operator=(const ReadLock &) = delete;
57
+ ReadLock(const ReadLock&) = delete;
58
+ void operator=(const ReadLock&) = delete;
59
59
 
60
60
  ~ReadLock() { this->mu_->ReadUnlock(); }
61
61
 
62
62
  private:
63
- port::RWMutex *const mu_;
63
+ port::RWMutex* const mu_;
64
64
  };
65
65
 
66
66
  //
@@ -68,15 +68,15 @@ class ReadLock {
68
68
  //
69
69
  class ReadUnlock {
70
70
  public:
71
- explicit ReadUnlock(port::RWMutex *mu) : mu_(mu) { mu->AssertHeld(); }
71
+ explicit ReadUnlock(port::RWMutex* mu) : mu_(mu) { mu->AssertHeld(); }
72
72
  // No copying allowed
73
- ReadUnlock(const ReadUnlock &) = delete;
74
- ReadUnlock &operator=(const ReadUnlock &) = delete;
73
+ ReadUnlock(const ReadUnlock&) = delete;
74
+ ReadUnlock& operator=(const ReadUnlock&) = delete;
75
75
 
76
76
  ~ReadUnlock() { mu_->ReadUnlock(); }
77
77
 
78
78
  private:
79
- port::RWMutex *const mu_;
79
+ port::RWMutex* const mu_;
80
80
  };
81
81
 
82
82
  //
@@ -86,15 +86,15 @@ class ReadUnlock {
86
86
  //
87
87
  class WriteLock {
88
88
  public:
89
- explicit WriteLock(port::RWMutex *mu) : mu_(mu) { this->mu_->WriteLock(); }
89
+ explicit WriteLock(port::RWMutex* mu) : mu_(mu) { this->mu_->WriteLock(); }
90
90
  // No copying allowed
91
- WriteLock(const WriteLock &) = delete;
92
- void operator=(const WriteLock &) = delete;
91
+ WriteLock(const WriteLock&) = delete;
92
+ void operator=(const WriteLock&) = delete;
93
93
 
94
94
  ~WriteLock() { this->mu_->WriteUnlock(); }
95
95
 
96
96
  private:
97
- port::RWMutex *const mu_;
97
+ port::RWMutex* const mu_;
98
98
  };
99
99
 
100
100
  //
@@ -145,12 +145,12 @@ struct ALIGN_AS(CACHE_LINE_SIZE) CacheAlignedWrapper {
145
145
  template <class T>
146
146
  struct Unwrap {
147
147
  using type = T;
148
- static type &Go(T &t) { return t; }
148
+ static type& Go(T& t) { return t; }
149
149
  };
150
150
  template <class T>
151
151
  struct Unwrap<CacheAlignedWrapper<T>> {
152
152
  using type = T;
153
- static type &Go(CacheAlignedWrapper<T> &t) { return t.obj_; }
153
+ static type& Go(CacheAlignedWrapper<T>& t) { return t.obj_; }
154
154
  };
155
155
 
156
156
  //
@@ -169,7 +169,7 @@ class Striped {
169
169
  : stripe_count_(stripe_count), data_(new T[stripe_count]) {}
170
170
 
171
171
  using Unwrapped = typename Unwrap<T>::type;
172
- Unwrapped &Get(const Key &key, uint64_t seed = 0) {
172
+ Unwrapped& Get(const Key& key, uint64_t seed = 0) {
173
173
  size_t index = FastRangeGeneric(hash_(key, seed), stripe_count_);
174
174
  return Unwrap<T>::Go(data_[index]);
175
175
  }
@@ -545,10 +545,10 @@ namespace ribbon {
545
545
  // solution satisfying all the cr@start -> rr entries added.
546
546
  template <bool kFirstCoeffAlwaysOne, typename BandingStorage,
547
547
  typename BacktrackStorage>
548
- bool BandingAdd(BandingStorage *bs, typename BandingStorage::Index start,
548
+ bool BandingAdd(BandingStorage* bs, typename BandingStorage::Index start,
549
549
  typename BandingStorage::ResultRow rr,
550
- typename BandingStorage::CoeffRow cr, BacktrackStorage *bts,
551
- typename BandingStorage::Index *backtrack_pos) {
550
+ typename BandingStorage::CoeffRow cr, BacktrackStorage* bts,
551
+ typename BandingStorage::Index* backtrack_pos) {
552
552
  using CoeffRow = typename BandingStorage::CoeffRow;
553
553
  using ResultRow = typename BandingStorage::ResultRow;
554
554
  using Index = typename BandingStorage::Index;
@@ -608,8 +608,8 @@ bool BandingAdd(BandingStorage *bs, typename BandingStorage::Index start,
608
608
  //
609
609
  template <typename BandingStorage, typename BacktrackStorage,
610
610
  typename BandingHasher, typename InputIterator>
611
- bool BandingAddRange(BandingStorage *bs, BacktrackStorage *bts,
612
- const BandingHasher &bh, InputIterator begin,
611
+ bool BandingAddRange(BandingStorage* bs, BacktrackStorage* bts,
612
+ const BandingHasher& bh, InputIterator begin,
613
613
  InputIterator end) {
614
614
  using CoeffRow = typename BandingStorage::CoeffRow;
615
615
  using Index = typename BandingStorage::Index;
@@ -703,7 +703,7 @@ bool BandingAddRange(BandingStorage *bs, BacktrackStorage *bts,
703
703
  //
704
704
  template <typename BandingStorage, typename BandingHasher,
705
705
  typename InputIterator>
706
- bool BandingAddRange(BandingStorage *bs, const BandingHasher &bh,
706
+ bool BandingAddRange(BandingStorage* bs, const BandingHasher& bh,
707
707
  InputIterator begin, InputIterator end) {
708
708
  using Index = typename BandingStorage::Index;
709
709
  struct NoopBacktrackStorage {
@@ -754,7 +754,7 @@ bool BandingAddRange(BandingStorage *bs, const BandingHasher &bh,
754
754
  // Back-substitution for generating a solution from BandingStorage to
755
755
  // SimpleSolutionStorage.
756
756
  template <typename SimpleSolutionStorage, typename BandingStorage>
757
- void SimpleBackSubst(SimpleSolutionStorage *sss, const BandingStorage &bs) {
757
+ void SimpleBackSubst(SimpleSolutionStorage* sss, const BandingStorage& bs) {
758
758
  using CoeffRow = typename BandingStorage::CoeffRow;
759
759
  using Index = typename BandingStorage::Index;
760
760
  using ResultRow = typename BandingStorage::ResultRow;
@@ -815,7 +815,7 @@ template <typename SimpleSolutionStorage>
815
815
  typename SimpleSolutionStorage::ResultRow SimpleQueryHelper(
816
816
  typename SimpleSolutionStorage::Index start_slot,
817
817
  typename SimpleSolutionStorage::CoeffRow cr,
818
- const SimpleSolutionStorage &sss) {
818
+ const SimpleSolutionStorage& sss) {
819
819
  using CoeffRow = typename SimpleSolutionStorage::CoeffRow;
820
820
  using ResultRow = typename SimpleSolutionStorage::ResultRow;
821
821
 
@@ -833,8 +833,8 @@ typename SimpleSolutionStorage::ResultRow SimpleQueryHelper(
833
833
  // General PHSF query a key from SimpleSolutionStorage.
834
834
  template <typename SimpleSolutionStorage, typename PhsfQueryHasher>
835
835
  typename SimpleSolutionStorage::ResultRow SimplePhsfQuery(
836
- const typename PhsfQueryHasher::Key &key, const PhsfQueryHasher &hasher,
837
- const SimpleSolutionStorage &sss) {
836
+ const typename PhsfQueryHasher::Key& key, const PhsfQueryHasher& hasher,
837
+ const SimpleSolutionStorage& sss) {
838
838
  const typename PhsfQueryHasher::Hash hash = hasher.GetHash(key);
839
839
 
840
840
  static_assert(sizeof(typename SimpleSolutionStorage::Index) ==
@@ -850,9 +850,9 @@ typename SimpleSolutionStorage::ResultRow SimplePhsfQuery(
850
850
 
851
851
  // Filter query a key from SimpleSolutionStorage.
852
852
  template <typename SimpleSolutionStorage, typename FilterQueryHasher>
853
- bool SimpleFilterQuery(const typename FilterQueryHasher::Key &key,
854
- const FilterQueryHasher &hasher,
855
- const SimpleSolutionStorage &sss) {
853
+ bool SimpleFilterQuery(const typename FilterQueryHasher::Key& key,
854
+ const FilterQueryHasher& hasher,
855
+ const SimpleSolutionStorage& sss) {
856
856
  const typename FilterQueryHasher::Hash hash = hasher.GetHash(key);
857
857
  const typename SimpleSolutionStorage::ResultRow expected =
858
858
  hasher.GetResultRowFromHash(hash);
@@ -968,9 +968,9 @@ bool SimpleFilterQuery(const typename FilterQueryHasher::Key &key,
968
968
 
969
969
  // A helper for InterleavedBackSubst.
970
970
  template <typename BandingStorage>
971
- inline void BackSubstBlock(typename BandingStorage::CoeffRow *state,
971
+ inline void BackSubstBlock(typename BandingStorage::CoeffRow* state,
972
972
  typename BandingStorage::Index num_columns,
973
- const BandingStorage &bs,
973
+ const BandingStorage& bs,
974
974
  typename BandingStorage::Index start_slot) {
975
975
  using CoeffRow = typename BandingStorage::CoeffRow;
976
976
  using Index = typename BandingStorage::Index;
@@ -1004,8 +1004,8 @@ inline void BackSubstBlock(typename BandingStorage::CoeffRow *state,
1004
1004
  // Back-substitution for generating a solution from BandingStorage to
1005
1005
  // InterleavedSolutionStorage.
1006
1006
  template <typename InterleavedSolutionStorage, typename BandingStorage>
1007
- void InterleavedBackSubst(InterleavedSolutionStorage *iss,
1008
- const BandingStorage &bs) {
1007
+ void InterleavedBackSubst(InterleavedSolutionStorage* iss,
1008
+ const BandingStorage& bs) {
1009
1009
  using CoeffRow = typename BandingStorage::CoeffRow;
1010
1010
  using Index = typename BandingStorage::Index;
1011
1011
 
@@ -1084,12 +1084,12 @@ void InterleavedBackSubst(InterleavedSolutionStorage *iss,
1084
1084
  // Prefetch memory for a key in InterleavedSolutionStorage.
1085
1085
  template <typename InterleavedSolutionStorage, typename PhsfQueryHasher>
1086
1086
  inline void InterleavedPrepareQuery(
1087
- const typename PhsfQueryHasher::Key &key, const PhsfQueryHasher &hasher,
1088
- const InterleavedSolutionStorage &iss,
1089
- typename PhsfQueryHasher::Hash *saved_hash,
1090
- typename InterleavedSolutionStorage::Index *saved_segment_num,
1091
- typename InterleavedSolutionStorage::Index *saved_num_columns,
1092
- typename InterleavedSolutionStorage::Index *saved_start_bit) {
1087
+ const typename PhsfQueryHasher::Key& key, const PhsfQueryHasher& hasher,
1088
+ const InterleavedSolutionStorage& iss,
1089
+ typename PhsfQueryHasher::Hash* saved_hash,
1090
+ typename InterleavedSolutionStorage::Index* saved_segment_num,
1091
+ typename InterleavedSolutionStorage::Index* saved_num_columns,
1092
+ typename InterleavedSolutionStorage::Index* saved_start_bit) {
1093
1093
  using Hash = typename PhsfQueryHasher::Hash;
1094
1094
  using CoeffRow = typename InterleavedSolutionStorage::CoeffRow;
1095
1095
  using Index = typename InterleavedSolutionStorage::Index;
@@ -1131,7 +1131,7 @@ inline typename InterleavedSolutionStorage::ResultRow InterleavedPhsfQuery(
1131
1131
  typename InterleavedSolutionStorage::Index segment_num,
1132
1132
  typename InterleavedSolutionStorage::Index num_columns,
1133
1133
  typename InterleavedSolutionStorage::Index start_bit,
1134
- const PhsfQueryHasher &hasher, const InterleavedSolutionStorage &iss) {
1134
+ const PhsfQueryHasher& hasher, const InterleavedSolutionStorage& iss) {
1135
1135
  using CoeffRow = typename InterleavedSolutionStorage::CoeffRow;
1136
1136
  using Index = typename InterleavedSolutionStorage::Index;
1137
1137
  using ResultRow = typename InterleavedSolutionStorage::ResultRow;
@@ -1170,7 +1170,7 @@ inline bool InterleavedFilterQuery(
1170
1170
  typename InterleavedSolutionStorage::Index segment_num,
1171
1171
  typename InterleavedSolutionStorage::Index num_columns,
1172
1172
  typename InterleavedSolutionStorage::Index start_bit,
1173
- const FilterQueryHasher &hasher, const InterleavedSolutionStorage &iss) {
1173
+ const FilterQueryHasher& hasher, const InterleavedSolutionStorage& iss) {
1174
1174
  using CoeffRow = typename InterleavedSolutionStorage::CoeffRow;
1175
1175
  using Index = typename InterleavedSolutionStorage::Index;
1176
1176
  using ResultRow = typename InterleavedSolutionStorage::ResultRow;
@@ -15,8 +15,7 @@
15
15
  namespace ROCKSDB_NAMESPACE {
16
16
 
17
17
  // MultiCompressorWrapper implementation
18
- MultiCompressorWrapper::MultiCompressorWrapper(const CompressionOptions& opts,
19
- CompressionDict&& dict)
18
+ MultiCompressorWrapper::MultiCompressorWrapper(const CompressionOptions& opts)
20
19
  : opts_(opts) {
21
20
  // TODO: make the compression manager a field
22
21
  auto builtInManager = GetBuiltinV2CompressionManager();
@@ -27,12 +26,11 @@ MultiCompressorWrapper::MultiCompressorWrapper(const CompressionOptions& opts,
27
26
  }
28
27
  compressors_.push_back(builtInManager->GetCompressor(opts, type));
29
28
  }
30
- (void)dict;
31
29
  }
32
30
 
33
- size_t MultiCompressorWrapper::GetMaxSampleSizeIfWantDict(
31
+ Compressor::DictConfig MultiCompressorWrapper::GetDictGuidance(
34
32
  CacheEntryRole block_type) const {
35
- return compressors_.back()->GetMaxSampleSizeIfWantDict(block_type);
33
+ return compressors_.back()->GetDictGuidance(block_type);
36
34
  }
37
35
 
38
36
  Slice MultiCompressorWrapper::GetSerializedDict() const {
@@ -48,11 +46,11 @@ Compressor::ManagedWorkingArea MultiCompressorWrapper::ObtainWorkingArea() {
48
46
  }
49
47
 
50
48
  std::unique_ptr<Compressor> MultiCompressorWrapper::MaybeCloneSpecialized(
51
- CacheEntryRole block_type, DictSampleArgs&& dict_samples) const {
49
+ CacheEntryRole block_type, DictConfigArgs&& dict_config) const {
52
50
  // TODO: full dictionary compression support. Currently this just falls
53
51
  // back on a non-multi compressor when asked to use a dictionary.
54
52
  return compressors_.back()->MaybeCloneSpecialized(block_type,
55
- std::move(dict_samples));
53
+ std::move(dict_config));
56
54
  }
57
55
 
58
56
  // RandomMixedCompressor implementation
@@ -10,22 +10,21 @@
10
10
  #include <memory>
11
11
  #include <vector>
12
12
 
13
- #include "compression.h"
14
13
  #include "rocksdb/advanced_compression.h"
14
+ #include "util/atomic.h"
15
15
 
16
16
  namespace ROCKSDB_NAMESPACE {
17
17
 
18
18
  class MultiCompressorWrapper : public Compressor {
19
19
  public:
20
- explicit MultiCompressorWrapper(const CompressionOptions& opts,
21
- CompressionDict&& dict = {});
20
+ explicit MultiCompressorWrapper(const CompressionOptions& opts);
22
21
 
23
- size_t GetMaxSampleSizeIfWantDict(CacheEntryRole block_type) const override;
22
+ DictConfig GetDictGuidance(CacheEntryRole block_type) const override;
24
23
  Slice GetSerializedDict() const override;
25
24
  CompressionType GetPreferredCompressionType() const override;
26
25
  ManagedWorkingArea ObtainWorkingArea() override;
27
26
  std::unique_ptr<Compressor> MaybeCloneSpecialized(
28
- CacheEntryRole block_type, DictSampleArgs&& dict_samples) const override;
27
+ CacheEntryRole block_type, DictConfigArgs&& dict_config) const override;
29
28
 
30
29
  protected:
31
30
  const CompressionOptions opts_;
@@ -61,10 +61,6 @@ class FixedPrefixTransform : public SliceTransform {
61
61
  return (src.size() >= prefix_len_);
62
62
  }
63
63
 
64
- bool InRange(const Slice& dst) const override {
65
- return (dst.size() == prefix_len_);
66
- }
67
-
68
64
  bool FullLengthEnabled(size_t* len) const override {
69
65
  *len = prefix_len_;
70
66
  return true;
@@ -111,10 +107,6 @@ class CappedPrefixTransform : public SliceTransform {
111
107
 
112
108
  bool InDomain(const Slice& /*src*/) const override { return true; }
113
109
 
114
- bool InRange(const Slice& dst) const override {
115
- return (dst.size() <= cap_len_);
116
- }
117
-
118
110
  bool FullLengthEnabled(size_t* len) const override {
119
111
  *len = cap_len_;
120
112
  return true;
@@ -136,8 +128,6 @@ class NoopTransform : public SliceTransform {
136
128
 
137
129
  bool InDomain(const Slice& /*src*/) const override { return true; }
138
130
 
139
- bool InRange(const Slice& /*dst*/) const override { return true; }
140
-
141
131
  bool SameResultWhenAppended(const Slice& /*prefix*/) const override {
142
132
  return false;
143
133
  }
@@ -590,7 +590,7 @@ TEST(BitFieldsTest, BitFields) {
590
590
  ASSERT_EQ(after.Get<Field5>(), 0U);
591
591
  }
592
592
  {
593
- AcqRelBitFieldsAtomic<MyState> acqrel{state};
593
+ BitFieldsAtomic<MyState> acqrel{state};
594
594
  ASSERT_EQ(state, acqrel.Load());
595
595
  acqrel.Store(state2);
596
596
  ASSERT_EQ(state2, acqrel.Load());
@@ -622,6 +622,29 @@ TEST(BitFieldsTest, BitFields) {
622
622
  ASSERT_EQ(after.Get<Field3>(), true);
623
623
  ASSERT_EQ(state.Get<Field4>(), 3U);
624
624
 
625
+ auto transform2a = Field2::And(true) + Field3::And(false);
626
+ acqrel.Apply(transform2a, &before, &after);
627
+ ASSERT_EQ(after.Get<Field2>(), true);
628
+ ASSERT_EQ(after.Get<Field3>(), false);
629
+
630
+ auto transform2b = Field2::And(false) + Field3::And(true);
631
+ acqrel.Apply(transform2b, &before, &after);
632
+ ASSERT_EQ(after.Get<Field2>(), false);
633
+ ASSERT_EQ(after.Get<Field3>(), false);
634
+
635
+ auto transform2c = Field2::Or(true) + Field3::Or(false);
636
+ acqrel.Apply(transform2c, &before, &after);
637
+ ASSERT_EQ(after.Get<Field2>(), true);
638
+ ASSERT_EQ(after.Get<Field3>(), false);
639
+
640
+ auto transform2d = Field2::Or(false) + Field3::Or(true);
641
+ acqrel.Apply(transform2d, &before, &after);
642
+ ASSERT_EQ(after.Get<Field2>(), true);
643
+ ASSERT_EQ(after.Get<Field3>(), true);
644
+
645
+ ASSERT_EQ(state.Get<Field1>(), 45U);
646
+ ASSERT_EQ(state.Get<Field4>(), 3U);
647
+
625
648
  auto transform3 = Field1::PlusTransformPromiseNoOverflow(10000U) +
626
649
  Field4::MinusTransformPromiseNoUnderflow(3U);
627
650
  acqrel.Apply(transform3, &before, &after);
@@ -636,6 +659,17 @@ TEST(BitFieldsTest, BitFields) {
636
659
  ASSERT_EQ(after.Get<Field1>(), 9046U);
637
660
  ASSERT_EQ(after.Get<Field4>(), 31U);
638
661
 
662
+ auto transform4a =
663
+ Field1::AndTransform(8192U + 4096U) + Field4::AndTransform(15U);
664
+ acqrel.Apply(transform4a, &before, &after);
665
+ ASSERT_EQ(after.Get<Field1>(), 8192U);
666
+ ASSERT_EQ(after.Get<Field4>(), 15U);
667
+
668
+ auto transform4b = Field1::OrTransform(127U) + Field4::OrTransform(16U);
669
+ acqrel.Apply(transform4b, &before, &after);
670
+ ASSERT_EQ(after.Get<Field1>(), 8192U + 127U);
671
+ ASSERT_EQ(after.Get<Field4>(), 31U);
672
+
639
673
  // Unmodified
640
674
  ASSERT_EQ(after.Get<Field2>(), true);
641
675
  ASSERT_EQ(after.Get<Field3>(), true);
@@ -49,7 +49,7 @@ class SliceTransformDBTest : public testing::Test {
49
49
  private:
50
50
  std::string dbname_;
51
51
  Env* env_;
52
- DB* db_;
52
+ std::unique_ptr<DB> db_;
53
53
 
54
54
  public:
55
55
  SliceTransformDBTest() : env_(Env::Default()), db_(nullptr) {
@@ -58,11 +58,11 @@ class SliceTransformDBTest : public testing::Test {
58
58
  }
59
59
 
60
60
  ~SliceTransformDBTest() override {
61
- delete db_;
61
+ db_.reset();
62
62
  EXPECT_OK(DestroyDB(dbname_, last_options_));
63
63
  }
64
64
 
65
- DB* db() { return db_; }
65
+ DB* db() { return db_.get(); }
66
66
 
67
67
  // Return the current option configuration.
68
68
  Options* GetOptions() { return &last_options_; }
@@ -74,14 +74,12 @@ class SliceTransformDBTest : public testing::Test {
74
74
  }
75
75
 
76
76
  void Destroy() {
77
- delete db_;
78
- db_ = nullptr;
77
+ db_.reset();
79
78
  ASSERT_OK(DestroyDB(dbname_, last_options_));
80
79
  }
81
80
 
82
81
  Status TryReopen() {
83
- delete db_;
84
- db_ = nullptr;
82
+ db_.reset();
85
83
  last_options_.create_if_missing = true;
86
84
 
87
85
  return DB::Open(last_options_, dbname_, &db_);
@@ -46,7 +46,9 @@ static const char* msgs[static_cast<int>(Status::kMaxSubCode)] = {
46
46
  "IO fenced off", // kIOFenced
47
47
  "Merge operator failed", // kMergeOperatorFailed
48
48
  "Number of operands merged exceeded threshold", // kMergeOperandThresholdExceeded
49
- "MultiScan reached file prefetch limit", // kMultiScanPrefetchLimit
49
+ "MultiScan reached file prefetch limit", // kPrefetchLimitReached
50
+ "Not expected code path", // kNotExpectedCodePath
51
+ "All compactions aborted", // kCompactionAborted
50
52
  };
51
53
 
52
54
  Status::Status(Code _code, SubCode _subcode, const Slice& msg,
@@ -112,6 +112,7 @@ class StopWatchNano {
112
112
  }
113
113
  }
114
114
  void Start() {
115
+ assert(clock_);
115
116
  if constexpr (use_cpu_time) {
116
117
  start_ = clock_->CPUNanos();
117
118
  } else {
@@ -119,6 +120,7 @@ class StopWatchNano {
119
120
  }
120
121
  }
121
122
  uint64_t ElapsedNanos(bool reset = false) {
123
+ assert(clock_);
122
124
  uint64_t now = 0;
123
125
  if constexpr (use_cpu_time) {
124
126
  now = clock_->CPUNanos();
@@ -1886,7 +1886,10 @@ void BackupEngineImpl::SetBackupInfoFromBackupMeta(
1886
1886
  finfo.directory = dir;
1887
1887
  uint64_t number;
1888
1888
  FileType type;
1889
- bool ok = ParseFileName(file_ptr->filename, &number, &type);
1889
+ // file_ptr->filename may contain directory components (e.g.
1890
+ // "private/1/000008.log"). ParseFileName expects a bare filename,
1891
+ // so use GetDbFileName() to extract it.
1892
+ bool ok = ParseFileName(file_ptr->GetDbFileName(), &number, &type);
1890
1893
  if (ok) {
1891
1894
  finfo.file_number = number;
1892
1895
  finfo.file_type = type;