@nxtedition/rocksdb 13.5.8 → 13.5.9

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 (508) hide show
  1. package/binding.cc +209 -2
  2. package/deps/rocksdb/rocksdb/BUCK +12 -0
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  4. package/deps/rocksdb/rocksdb/Makefile +28 -23
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  7. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  11. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  12. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  14. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  15. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  16. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  23. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  25. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  26. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  27. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  28. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  29. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  30. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  57. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  59. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  60. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  61. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  62. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  63. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  64. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  65. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  66. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  67. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  68. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  69. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  70. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  86. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  87. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  88. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  89. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  90. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  91. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  92. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  93. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  94. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  95. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  96. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  97. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  98. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  99. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  100. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  101. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  102. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  104. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  105. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  106. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  107. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  108. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  109. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  110. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  111. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  112. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  113. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  114. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  115. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  116. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  117. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  118. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  119. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  120. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  124. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  125. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  126. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  127. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  129. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  130. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  131. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  132. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  133. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  134. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  135. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  136. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  137. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  138. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  139. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  140. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  141. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  142. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  143. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  144. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  145. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  146. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  147. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  148. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  149. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  150. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  153. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  154. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  155. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  156. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  157. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  158. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  160. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  161. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  163. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  164. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  165. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  166. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  168. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  169. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  170. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  171. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  172. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  173. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  174. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  175. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  176. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  177. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  178. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  179. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  180. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  181. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  182. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  191. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  193. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  194. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  195. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  196. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  198. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  199. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  200. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  201. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  202. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  204. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  205. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  206. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  207. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  210. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  212. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  213. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  214. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  215. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  218. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  220. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  221. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  224. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  226. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  228. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  229. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  230. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  232. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  234. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  235. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  238. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  241. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  242. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  243. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  245. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  247. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  249. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  253. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  254. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  257. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  260. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  269. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  270. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  276. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  277. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  278. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  279. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  281. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  283. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  284. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  285. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  286. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  288. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  289. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  290. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  291. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  292. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  293. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  294. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  295. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  296. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  297. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  298. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  299. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  300. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  301. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  302. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  303. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  304. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  305. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  306. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  307. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  308. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  309. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  310. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  311. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  312. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  314. package/deps/rocksdb/rocksdb/src.mk +17 -11
  315. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  316. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  325. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  327. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  328. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  329. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  330. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  334. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  335. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  338. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  340. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  342. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  343. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  345. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  349. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  350. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  351. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  352. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  353. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  354. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  356. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  357. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  362. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  364. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  366. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  367. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  368. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  369. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  370. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  371. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  372. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  374. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  376. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  377. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  380. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  381. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  382. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  384. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  385. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  386. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  388. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  391. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  393. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  395. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  396. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  397. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  398. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  399. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  400. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  401. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  402. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  403. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  404. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  405. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  406. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  408. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  409. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  410. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  411. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  412. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  413. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  414. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  416. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  428. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  430. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  433. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  435. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  436. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  437. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  439. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  442. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  443. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  458. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  464. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  467. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  468. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  479. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  482. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  485. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  486. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  499. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  500. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  504. package/deps/rocksdb/rocksdb.gyp +5 -0
  505. package/index.js +47 -2
  506. package/package.json +8 -1
  507. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  508. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -20,6 +20,12 @@ namespace ROCKSDB_NAMESPACE {
20
20
  * add/remove fields to this structure, builds would fail. The way to fix the
21
21
  * builds would be to add the appropriate fields to the
22
22
  * DEF_PERF_CONTEXT_LEVEL_METRICS() macro in the perf_context.cc file.
23
+ *
24
+ * If you plan to add new metrics, please read documentation in perf_level.h and
25
+ * try to come up with a metric name that follows the naming conventions
26
+ * mentioned there. It helps to indicate the metric's starting enabling P
27
+ * erfLevel. Document this starting PerfLevel if the metric name cannot meet the
28
+ * naming conventions.
23
29
  */
24
30
 
25
31
  // Break down performance counters by level and store per-level perf context in
@@ -189,6 +195,7 @@ struct PerfContextBase {
189
195
  // total nanos spent on writing to WAL
190
196
  uint64_t write_wal_time;
191
197
  // total nanos spent on writing to mem tables
198
+ // This metric gets collected starting from PerfLevel::kEnableWait
192
199
  uint64_t write_memtable_time;
193
200
  // total nanos spent on delaying or throttling write
194
201
  uint64_t write_delay_time;
@@ -230,6 +237,8 @@ struct PerfContextBase {
230
237
  uint64_t bloom_sst_miss_count;
231
238
 
232
239
  // Time spent waiting on key locks in transaction lock manager.
240
+ // This metric gets collected starting from
241
+ // PerfLevel::kEnableTimeExceptForMutex
233
242
  uint64_t key_lock_wait_time;
234
243
  // number of times acquiring a lock was blocked by another transaction.
235
244
  uint64_t key_lock_wait_count;
@@ -275,6 +284,12 @@ struct PerfContextBase {
275
284
  uint64_t decrypt_data_nanos;
276
285
 
277
286
  uint64_t number_async_seek;
287
+
288
+ // Metrics for file ingestion
289
+ // Time spent end to end in an IngestExternalFile call.
290
+ uint64_t file_ingestion_nanos;
291
+ // Time IngestExternalFile blocked live writes.
292
+ uint64_t file_ingestion_blocking_live_writes_nanos;
278
293
  };
279
294
 
280
295
  struct PerfContext : public PerfContextBase {
@@ -14,19 +14,39 @@
14
14
  namespace ROCKSDB_NAMESPACE {
15
15
 
16
16
  // How much perf stats to collect. Affects perf_context and iostats_context.
17
+ // These levels are incremental, which means a new set of metrics will get
18
+ // collected when PerfLevel is upgraded from level n to level n + 1.
19
+ // Each level's documentation specifies the incremental set of metrics it
20
+ // enables. As an example, kEnableWait will also enable collecting all the
21
+ // metrics that kEnableCount enables, and its documentation only specifies which
22
+ // extra metrics it also enables.
23
+ //
24
+ // These metrics are identified with some naming conventions, but not all
25
+ // metrics follow exactly this convention. The metrics' own documentation should
26
+ // be source of truth if they diverge.
17
27
  enum PerfLevel : unsigned char {
18
- kUninitialized = 0, // unknown setting
19
- kDisable = 1, // disable perf stats
20
- kEnableCount = 2, // enable only count stats
21
- kEnableWait = 3, // measure time spent by user threads
22
- // blocked in RocksDB, and not external
23
- // resources such as mutexes and IO
24
- kEnableTimeExceptForMutex = 4, // Other than count stats, also enable time
25
- // stats except for mutexes
26
- // Other than time, also measure CPU time counters. Still don't measure
27
- // time (neither wall time nor CPU time) for mutexes.
28
+ // Unknown setting
29
+ kUninitialized = 0,
30
+ // Disable perf stats
31
+ kDisable = 1,
32
+ // Starts enabling count metrics. These metrics usually don't have time
33
+ // related keywords, and are likely to have keywords like "count" or "byte".
34
+ kEnableCount = 2,
35
+ // Starts enabling metrics that measure time spent by user threads blocked in
36
+ // RocksDB waiting for RocksDB to take actions, as opposed to waiting for
37
+ // external resources such as mutexes and IO.
38
+ // These metrics usually have this pattern: "_[wait|delay]_*_[time|nanos]".
39
+ kEnableWait = 3,
40
+ // Starts enabling metrics that measure the end to end time of an operation.
41
+ // These metrics' names have keywords "time" or "nanos". Check other time
42
+ // measuring metrics with similar but more specific naming conventions.
43
+ kEnableTimeExceptForMutex = 4,
44
+ // Starts enabling metrics that measure the cpu time of an operation. These
45
+ // metrics' name usually this pattern "_cpu_*_[time|nanos]".
28
46
  kEnableTimeAndCPUTimeExceptForMutex = 5,
29
- kEnableTime = 6, // enable count and time stats
47
+ // Starts enabling metrics that measure time for mutex. These metrics' name
48
+ // usually have this pattern: "_[mutex|condition]_*_[time|nanos]".
49
+ kEnableTime = 6,
30
50
  kOutOfBounds = 7 // N.B. Must always be the last value!
31
51
  };
32
52
 
@@ -20,6 +20,7 @@
20
20
 
21
21
  #include <cassert>
22
22
  #include <cstddef>
23
+ #include <cstdint>
23
24
  #include <cstdio>
24
25
  #include <cstring>
25
26
  #include <string>
@@ -129,6 +130,46 @@ class Slice {
129
130
  // Intentionally copyable
130
131
  };
131
132
 
133
+ // A likely more efficient alternative to std::optional<Slice>. For example,
134
+ // an empty key might be distinct from "not specified" (and Slice* as an
135
+ // optional is more troublesome to deal with).
136
+ class OptSlice {
137
+ public:
138
+ OptSlice() : slice_(nullptr, SIZE_MAX) {}
139
+ /*implicit*/ OptSlice(const Slice& s) : slice_(s) {}
140
+ /*implicit*/ OptSlice(const std::string& s) : slice_(s) {}
141
+ /*implicit*/ OptSlice(const std::string_view& sv) : slice_(sv) {}
142
+ /*implicit*/ OptSlice(const char* c_str) : slice_(c_str) {}
143
+ // For easier migrating from APIs uing Slice* as an optional type.
144
+ // CAUTION: OptSlice{nullptr} is "no value" while Slice{nullptr} is "empty"
145
+ /*implicit*/ OptSlice(std::nullptr_t) : OptSlice() {}
146
+
147
+ bool has_value() const noexcept { return slice_.size() != SIZE_MAX; }
148
+ explicit operator bool() const noexcept { return has_value(); }
149
+
150
+ const Slice& value() const noexcept {
151
+ assert(has_value());
152
+ return slice_;
153
+ }
154
+ const Slice& operator*() const noexcept { return value(); }
155
+ const Slice* operator->() const noexcept { return &value(); }
156
+
157
+ const Slice* AsPtr() const noexcept {
158
+ return has_value() ? &slice_ : nullptr;
159
+ }
160
+ // Populate from an optional pointer. This is a very explicit conversion
161
+ // to minimize risk of bugs as in
162
+ // Slice start, limit;
163
+ // RangeOpt rng = {&start, &limit};
164
+ // start = ...; // BUG: would not affect rng
165
+ static OptSlice CopyFromPtr(const Slice* ptr) {
166
+ return ptr ? OptSlice{*ptr} : OptSlice{};
167
+ }
168
+
169
+ protected:
170
+ Slice slice_;
171
+ };
172
+
132
173
  /**
133
174
  * A Slice that can be pinned with some cleanup tasks, which will be run upon
134
175
  * ::Reset() or object destruction, whichever is invoked first. This can be used
@@ -34,7 +34,7 @@ struct ConfigOptions;
34
34
  // including data loss, unreported corruption, deadlocks, and more.
35
35
  class SliceTransform : public Customizable {
36
36
  public:
37
- virtual ~SliceTransform(){}
37
+ virtual ~SliceTransform() {}
38
38
 
39
39
  // Return the name of this transformation.
40
40
  const char* Name() const override = 0;
@@ -14,4 +14,3 @@ class SSTDumpTool {
14
14
  };
15
15
 
16
16
  } // namespace ROCKSDB_NAMESPACE
17
-
@@ -5,7 +5,6 @@
5
5
 
6
6
  #pragma once
7
7
 
8
-
9
8
  #include "rocksdb/iterator.h"
10
9
  #include "rocksdb/options.h"
11
10
  #include "rocksdb/slice.h"
@@ -31,6 +30,11 @@ class SstFileReader {
31
30
  // If "snapshot" is nullptr, the iterator returns only the latest keys.
32
31
  Iterator* NewIterator(const ReadOptions& options);
33
32
 
33
+ // MultiGet to fetch a set of keys from the SST
34
+ std::vector<Status> MultiGet(const ReadOptions& options,
35
+ const std::vector<Slice>& keys,
36
+ std::vector<std::string>* values);
37
+
34
38
  // Returns a new iterator over the table contents as a raw table iterator,
35
39
  // a.k.a a `TableIterator`that iterates all point data entries in the table
36
40
  // including logically invisible entries like delete entries.
@@ -5,7 +5,6 @@
5
5
 
6
6
  #pragma once
7
7
 
8
-
9
8
  #include <memory>
10
9
  #include <string>
11
10
 
@@ -516,14 +516,16 @@ enum Tickers : uint32_t {
516
516
  // Number of FIFO compactions that drop files based on different reasons
517
517
  FIFO_MAX_SIZE_COMPACTIONS,
518
518
  FIFO_TTL_COMPACTIONS,
519
+ FIFO_CHANGE_TEMPERATURE_COMPACTIONS,
519
520
 
520
521
  // Number of bytes prefetched during user initiated scan
521
522
  PREFETCH_BYTES,
522
523
 
523
- // Number of prefetched bytes that were actually useful
524
+ // Number of prefetched bytes that were actually useful during user initiated
525
+ // scan
524
526
  PREFETCH_BYTES_USEFUL,
525
527
 
526
- // Number of FS reads avoided due to scan prefetching
528
+ // Number of FS reads avoided due to prefetching during user initiated scan
527
529
  PREFETCH_HITS,
528
530
 
529
531
  // Footer corruption detected when opening an SST file for reading
@@ -534,6 +536,12 @@ enum Tickers : uint32_t {
534
536
  FILE_READ_CORRUPTION_RETRY_COUNT,
535
537
  FILE_READ_CORRUPTION_RETRY_SUCCESS_COUNT,
536
538
 
539
+ // Counter for the number of times a WBWI is ingested into the DB. This
540
+ // happens when IngestWriteBatchWithIndex() is used and when large
541
+ // transaction optimization is enabled through
542
+ // TransactionOptions::large_txn_commit_optimize_threshold.
543
+ NUMBER_WBWI_INGEST,
544
+
537
545
  TICKER_ENUM_MAX
538
546
  };
539
547
 
@@ -657,16 +665,23 @@ enum Histograms : uint32_t {
657
665
  ASYNC_READ_BYTES,
658
666
  POLL_WAIT_MICROS,
659
667
 
668
+ // Number of bytes for RocksDB's prefetching (as opposed to file
669
+ // system's prefetch) on SST file during compaction read
670
+ COMPACTION_PREFETCH_BYTES,
671
+
660
672
  // Number of prefetched bytes discarded by RocksDB.
661
673
  PREFETCHED_BYTES_DISCARDED,
662
674
 
663
675
  // Wait time for aborting async read in FilePrefetchBuffer destructor
664
676
  ASYNC_PREFETCH_ABORT_MICROS,
665
677
 
666
- // Number of bytes read for RocksDB's prefetching contents (as opposed to file
678
+ // Number of bytes for RocksDB's prefetching contents (as opposed to file
667
679
  // system's prefetch) from the end of SST table during block based table open
668
680
  TABLE_OPEN_PREFETCH_TAIL_READ_BYTES,
669
681
 
682
+ // Number of operations per transaction.
683
+ NUM_OP_PER_TRANSACTION,
684
+
670
685
  HISTOGRAM_ENUM_MAX
671
686
  };
672
687
 
@@ -316,6 +316,8 @@ class Status {
316
316
  return Status(kInvalidArgument, kTxnNotPrepared, msg, msg2);
317
317
  }
318
318
 
319
+ static Status LockLimit() { return Status(kAborted, kLockLimit); }
320
+
319
321
  // Returns true iff the status indicates success.
320
322
  bool ok() const {
321
323
  MarkChecked();
@@ -126,7 +126,15 @@ struct CacheUsageOptions {
126
126
  };
127
127
 
128
128
  // Configures how SST files using the block-based table format (standard)
129
- // are written and read.
129
+ // are written and read. With few exceptions, each option only affects either
130
+ // (a) how new SST files are written, or (b) how SST files are read. If an
131
+ // option seems to affect how the SST file is constructed, e.g. format_version,
132
+ // that option *ONLY* has an effect at construction time. Contrast this with
133
+ // options like the various `cache` and `pin` options, that only affect
134
+ // in-memory and IO behavior at read time. In general, any version of RocksDB
135
+ // able to read the full key-value and indexing data in the SST file will read
136
+ // it as written regardless of current options for writing new files. See
137
+ // filter_policy regarding filters.
130
138
  //
131
139
  // Except as specifically noted, all options here are "mutable" using
132
140
  // SetOptions(), with the caveat that only new table builders and new table
@@ -480,6 +488,10 @@ struct BlockBasedTableOptions {
480
488
  // If non-nullptr, use the specified filter policy to reduce disk reads.
481
489
  // Many applications will benefit from passing the result of
482
490
  // NewBloomFilterPolicy() here.
491
+ //
492
+ // Because filters only impact performance and are not data-critical, an
493
+ // SST file can be opened and used without filters if (a) the filter
494
+ // policy name or schema is unrecognized, or (b) filter_policy is nullptr.
483
495
  std::shared_ptr<const FilterPolicy> filter_policy = nullptr;
484
496
 
485
497
  // If true, place whole keys in the filter (not just prefixes).
@@ -524,13 +536,9 @@ struct BlockBasedTableOptions {
524
536
  // Default: 0 (disabled)
525
537
  uint32_t read_amp_bytes_per_bit = 0;
526
538
 
527
- // We currently have these versions:
528
- // 0 -- This version can be read by really old RocksDB's. Doesn't support
529
- // changing checksum type (default is CRC32).
530
- // 1 -- Can be read by RocksDB's versions since 3.0. Supports non-default
531
- // checksum, like xxHash. It is written by RocksDB when
532
- // BlockBasedTableOptions::checksum is something other than kCRC32c. (version
533
- // 0 is silently upconverted)
539
+ // We currently have these format versions:
540
+ // 0 - 1 -- Unsupported for writing new files and quietly sanitized to 2.
541
+ // Read support is deprecated and could be removed in the future.
534
542
  // 2 -- Can be read by RocksDB's versions since 3.10. Changes the way we
535
543
  // encode compressed blocks with LZ4, BZip2 and Zlib compression. If you
536
544
  // don't plan to run RocksDB before version 3.10, you should probably use
@@ -553,6 +561,10 @@ struct BlockBasedTableOptions {
553
561
  // misplaced within or between files is as likely to fail checksum
554
562
  // verification as random corruption. Also checksum-protects SST footer.
555
563
  // Can be read by RocksDB versions >= 8.6.0.
564
+ // 7 -- Support for custom compression algorithms with a CompressionManager
565
+ // using a non-built-in CompatibilityName(). See `compression_manager` in
566
+ // ColumnFamilyOptions. Also changes the format of TableProperties field
567
+ // `compression_name`. Can be read by RocksDB versions >= 10.4.0.
556
568
  //
557
569
  // Using the default setting of format_version is strongly recommended, so
558
570
  // that available enhancements are adopted eventually and automatically. The
@@ -109,6 +109,10 @@ class TablePropertiesCollector {
109
109
  // table.
110
110
  // @params key the user key that is inserted into the table.
111
111
  // @params value the value that is inserted into the table.
112
+ // @params file_size the current file size. For BlockBasedTable, this
113
+ // includes all the data blocks written so far, upto but not including
114
+ // the current block being built. With parallel compression, data
115
+ // blocks are written async so it depends on the compression progress.
112
116
  virtual Status AddUserKey(const Slice& key, const Slice& value,
113
117
  EntryType /*type*/, SequenceNumber /*seq*/,
114
118
  uint64_t /*file_size*/) {
@@ -143,7 +147,7 @@ class TablePropertiesCollector {
143
147
  // The name of the properties collector can be used for debugging purpose.
144
148
  virtual const char* Name() const = 0;
145
149
 
146
- // EXPERIMENTAL Return whether the output file should be further compacted
150
+ // Return whether the output file should be further compacted
147
151
  virtual bool NeedCompact() const { return false; }
148
152
 
149
153
  // For internal use only.
@@ -344,7 +348,20 @@ struct TableProperties {
344
348
  // {collector_name[1]},{collector_name[2]},{collector_name[3]} ..
345
349
  std::string property_collectors_names;
346
350
 
347
- // The compression algo used to compress the SST files.
351
+ // Identifies the compression algorithm or schema used in the file.
352
+ // Specifically:
353
+ // * For format_version < 7, it is one of several names for built-in
354
+ // compression types. Because of how some previous versions of RocksDB
355
+ // behave, this must be set to "ZSTD" if any blocks are compressed
356
+ // with zstd and must NOT be set to "NoCompression" if any blocks are
357
+ // compressed.
358
+ // * For format_version >= 7, the format is
359
+ // <compatibility_name>;<hex-coded compression types>;<future use>
360
+ // where <compatibility_name> is the CompatibilityName() of the
361
+ // CompressionManager used for the file, or empty if compression was
362
+ // disabled; <hex-coded compression types> represents a sorted set of
363
+ // CompressionType values used in the file other than kNoCompression, each
364
+ // as 2-digit hex, e.g. 04 for LZ$, 07 for ZSTD, etc.
348
365
  std::string compression_name;
349
366
 
350
367
  // Compression options used to compress the SST files.
@@ -64,7 +64,7 @@ struct ThreadStatus {
64
64
  OP_VERIFY_FILE_CHECKSUMS,
65
65
  OP_GETENTITY,
66
66
  OP_MULTIGETENTITY,
67
- OP_READ_MANIFEST,
67
+ OP_GET_FILE_CHECKSUMS_FROM_CURRENT_MANIFEST,
68
68
  NUM_OP_TYPES
69
69
  };
70
70
 
@@ -0,0 +1,124 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+
6
+ #pragma once
7
+
8
+ #include "rocksdb/db.h"
9
+
10
+ namespace ROCKSDB_NAMESPACE {
11
+
12
+ struct TransactionDBOptions;
13
+ class TransactionDB;
14
+ class OptimisticTransactionDB;
15
+
16
+ namespace blob_db {
17
+ struct BlobDBOptions;
18
+ class BlobDB;
19
+ } // namespace blob_db
20
+
21
+ /*
22
+ * ToolHooks is currently a WORK IN PROGRESS, API is subject to change.
23
+ * ToolHooks is a class that allows users to override the default behavior of
24
+ * the various OpenDB calls used by db_bench_tool. This allows users to easily
25
+ * extend the functionality of db_bench_tool to support their own open
26
+ * implementations.
27
+ */
28
+ class ToolHooks {
29
+ public:
30
+ ToolHooks() = default;
31
+ virtual ~ToolHooks() = default;
32
+ virtual Status Open(const Options& db_options, const std::string& name,
33
+ DB** dbptr) = 0;
34
+ virtual Status Open(
35
+ const DBOptions& db_options, const std::string& name,
36
+ const std::vector<ColumnFamilyDescriptor>& column_families,
37
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) = 0;
38
+ virtual Status OpenForReadOnly(const Options& options,
39
+ const std::string& name, DB** dbptr,
40
+ bool error_if_wal_file_exists) = 0;
41
+ virtual Status OpenForReadOnly(
42
+ const Options& options, const std::string& name,
43
+ const std::vector<ColumnFamilyDescriptor>& column_families,
44
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) = 0;
45
+ virtual Status OpenTransactionDB(const Options& db_options,
46
+ const TransactionDBOptions& txn_db_options,
47
+ const std::string& dbname,
48
+ TransactionDB** dbptr) = 0;
49
+ virtual Status OpenTransactionDB(
50
+ const DBOptions& db_options, const TransactionDBOptions& txn_db_options,
51
+ const std::string& dbname,
52
+ const std::vector<ColumnFamilyDescriptor>& column_families,
53
+ std::vector<ColumnFamilyHandle*>* handles, TransactionDB** dbptr) = 0;
54
+ virtual Status OpenOptimisticTransactionDB(
55
+ const Options& options, const std::string& dbname,
56
+ OptimisticTransactionDB** dbptr) = 0;
57
+ virtual Status OpenOptimisticTransactionDB(
58
+ const DBOptions& db_options, const std::string& dbname,
59
+ const std::vector<ColumnFamilyDescriptor>& column_families,
60
+ std::vector<ColumnFamilyHandle*>* handles,
61
+ OptimisticTransactionDB** dbptr) = 0;
62
+ virtual Status OpenAsSecondary(const Options& options,
63
+ const std::string& name,
64
+ const std::string& secondary_path,
65
+ DB** dbptr) = 0;
66
+ virtual Status OpenAsFollower(const Options& options, const std::string& name,
67
+ const std::string& leader_path,
68
+ std::unique_ptr<DB>* dbptr) = 0;
69
+ virtual Status Open(const Options& options,
70
+ const blob_db::BlobDBOptions& bdb_options,
71
+ const std::string& dbname, blob_db::BlobDB** blob_db) = 0;
72
+ };
73
+
74
+ class DefaultHooks : public ToolHooks {
75
+ public:
76
+ DefaultHooks() = default;
77
+ ~DefaultHooks() override = default;
78
+ virtual Status Open(const Options& db_options, const std::string& name,
79
+ DB** dbptr) override;
80
+ virtual Status Open(
81
+ const DBOptions& db_options, const std::string& name,
82
+ const std::vector<ColumnFamilyDescriptor>& column_families,
83
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) override;
84
+ virtual Status OpenForReadOnly(const Options& options,
85
+ const std::string& name, DB** dbptr,
86
+ bool error_if_wal_file_exists) override;
87
+ virtual Status OpenForReadOnly(
88
+ const Options& options, const std::string& name,
89
+ const std::vector<ColumnFamilyDescriptor>& column_families,
90
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) override;
91
+ virtual Status OpenTransactionDB(const Options& db_options,
92
+ const TransactionDBOptions& txn_db_options,
93
+ const std::string& dbname,
94
+ TransactionDB** dbptr) override;
95
+ virtual Status OpenTransactionDB(
96
+ const DBOptions& db_options, const TransactionDBOptions& txn_db_options,
97
+ const std::string& dbname,
98
+ const std::vector<ColumnFamilyDescriptor>& column_families,
99
+ std::vector<ColumnFamilyHandle*>* handles,
100
+ TransactionDB** dbptr) override;
101
+ virtual Status OpenOptimisticTransactionDB(
102
+ const Options& options, const std::string& dbname,
103
+ OptimisticTransactionDB** dbptr) override;
104
+ virtual Status OpenOptimisticTransactionDB(
105
+ const DBOptions& db_options, const std::string& dbname,
106
+ const std::vector<ColumnFamilyDescriptor>& column_families,
107
+ std::vector<ColumnFamilyHandle*>* handles,
108
+ OptimisticTransactionDB** dbptr) override;
109
+ virtual Status OpenAsSecondary(const Options& options,
110
+ const std::string& name,
111
+ const std::string& secondary_path,
112
+ DB** dbptr) override;
113
+ virtual Status OpenAsFollower(const Options& options, const std::string& name,
114
+ const std::string& leader_path,
115
+ std::unique_ptr<DB>* dbptr) override;
116
+ virtual Status Open(const Options& options,
117
+ const blob_db::BlobDBOptions& bdb_options,
118
+ const std::string& dbname,
119
+ blob_db::BlobDB** blob_db) override;
120
+ };
121
+
122
+ extern DefaultHooks defaultHooks;
123
+
124
+ } // namespace ROCKSDB_NAMESPACE
@@ -5,6 +5,7 @@
5
5
 
6
6
  #pragma once
7
7
 
8
+ #include <cstdint>
8
9
  #include <memory>
9
10
  #include <string>
10
11
  #include <vector>
@@ -111,6 +111,26 @@ class CompactionOptionsUniversal {
111
111
  // Default: false
112
112
  bool incremental;
113
113
 
114
+ // EXPERIMENTAL
115
+ //
116
+ // If true, auto universal compaction picking will adjust to minimize locking
117
+ // of input files when bottom priority compactions are waiting to run. This
118
+ // can increase the likelihood of existing L0s being selected for compaction,
119
+ // thereby improving write stall and reducing read regression. It may increase
120
+ // the overrall write amplification and compaction load on low priority
121
+ // threads.
122
+ //
123
+ // Default: false (disabled)
124
+ //
125
+ // This options does not apply to manual compactions.
126
+ //
127
+ // This option is temporary in case turning on this feature causes problems
128
+ // and users need to undo it quickly. This option is planned for removal in
129
+ // the near future with default value set to true.
130
+ //
131
+ // Dynamically changeable through the SetOptions() API.
132
+ bool reduce_file_locking;
133
+
114
134
  // Default set of parameters
115
135
  CompactionOptionsUniversal()
116
136
  : size_ratio(1),
@@ -121,7 +141,12 @@ class CompactionOptionsUniversal {
121
141
  max_read_amp(-1),
122
142
  stop_style(kCompactionStopStyleTotalSize),
123
143
  allow_trivial_move(false),
124
- incremental(false) {}
144
+ incremental(false),
145
+ reduce_file_locking(false) {}
146
+
147
+ #if __cplusplus >= 202002L
148
+ bool operator==(const CompactionOptionsUniversal& rhs) const = default;
149
+ #endif
125
150
  };
126
151
 
127
152
  } // namespace ROCKSDB_NAMESPACE
@@ -77,6 +77,15 @@ struct BackupEngineOptions {
77
77
  // Default: true
78
78
  bool backup_log_files;
79
79
 
80
+ // Size of the buffer in bytes used for reading files.
81
+ // Enables optimally configuring the IO size based on the storage backend.
82
+ // If specified, takes precendence over the rate limiter burst size (if
83
+ // specified) as well as kDefaultCopyFileBufferSize.
84
+ // If 0, the rate limiter burst size (if specified) or
85
+ // kDefaultCopyFileBufferSize will be used.
86
+ // Default: 0
87
+ uint64_t io_buffer_size;
88
+
80
89
  // Max bytes that can be transferred in a second during backup.
81
90
  // If 0, go as fast as you can
82
91
  // This limit only applies to writes. To also limit reads,
@@ -117,8 +126,8 @@ struct BackupEngineOptions {
117
126
  // Default: true
118
127
  bool share_files_with_checksum;
119
128
 
120
- // Up to this many background threads will copy files for CreateNewBackup()
121
- // and RestoreDBFromBackup()
129
+ // Up to this many background threads will be used to copy files & compute
130
+ // checksums for CreateNewBackup() and RestoreDBFromBackup().
122
131
  // Default: 1
123
132
  int max_background_operations;
124
133
 
@@ -228,8 +237,9 @@ struct BackupEngineOptions {
228
237
  const std::string& _backup_dir, Env* _backup_env = nullptr,
229
238
  bool _share_table_files = true, Logger* _info_log = nullptr,
230
239
  bool _sync = true, bool _destroy_old_data = false,
231
- bool _backup_log_files = true, uint64_t _backup_rate_limit = 0,
232
- uint64_t _restore_rate_limit = 0, int _max_background_operations = 1,
240
+ bool _backup_log_files = true, uint64_t _io_buffer_size = 0,
241
+ uint64_t _backup_rate_limit = 0, uint64_t _restore_rate_limit = 0,
242
+ int _max_background_operations = 1,
233
243
  uint64_t _callback_trigger_interval_size = 4 * 1024 * 1024,
234
244
  int _max_valid_backups_to_open = INT_MAX,
235
245
  ShareFilesNaming _share_files_with_checksum_naming =
@@ -241,6 +251,7 @@ struct BackupEngineOptions {
241
251
  sync(_sync),
242
252
  destroy_old_data(_destroy_old_data),
243
253
  backup_log_files(_backup_log_files),
254
+ io_buffer_size(_io_buffer_size),
244
255
  backup_rate_limit(_backup_rate_limit),
245
256
  restore_rate_limit(_restore_rate_limit),
246
257
  share_files_with_checksum(true),
@@ -338,6 +349,39 @@ struct CreateBackupOptions {
338
349
  };
339
350
 
340
351
  struct RestoreOptions {
352
+ // Enum reflecting tiered approach to restores.
353
+ //
354
+ // Options `kKeepLatestDbSessionIdFiles`, `kVerifyChecksum` introduce
355
+ // incremental restore capability and are intended to be used separately.
356
+ enum Mode : uint32_t {
357
+ // Most efficient way to restore a healthy / non-corrupted DB from
358
+ // the backup(s). This mode can almost always successfully recover from
359
+ // incomplete / missing files, as in an incomplete copy of a DB.
360
+ // This mode is also integrated with `exclude_files_callback` feature
361
+ // and will opportunistically try to find excluded files in existing db
362
+ // filesystem if missing in all supplied backup directories.
363
+ //
364
+ // Effective on data files following modern share files naming schemes.
365
+ kKeepLatestDbSessionIdFiles = 1U,
366
+
367
+ // Recommended when db is suspected to be unhealthy, ex. we want to retain
368
+ // most of the files (therefore saving on write I/O) with an exception of
369
+ // a few corrupted ones.
370
+ //
371
+ // When opted-in, restore engine will scan the db file, compute the
372
+ // checksum and compare it against the checksum hardened in the backup file
373
+ // metadata. If checksums match, existing file will be retained as-is.
374
+ // Otherwise, it will be deleted and replaced it with its' restored backup
375
+ // counterpart. If backup file doesn't have a checksum hardened in the
376
+ // metadata, we'll schedule an async task to compute it.
377
+ kVerifyChecksum = 2U,
378
+
379
+ // Zero trust. Least efficient.
380
+ //
381
+ // Purge all the destination files and restores all files from the backup.
382
+ kPurgeAllFiles = 0xffffU,
383
+ };
384
+
341
385
  // If true, restore won't overwrite the existing log files in wal_dir. It will
342
386
  // also move all log files from archive directory to wal_dir. Use this option
343
387
  // in combination with BackupEngineOptions::backup_log_files = false for
@@ -350,8 +394,13 @@ struct RestoreOptions {
350
394
  // directories known to contain the required files.
351
395
  std::forward_list<BackupEngineReadOnlyBase*> alternate_dirs;
352
396
 
353
- explicit RestoreOptions(bool _keep_log_files = false)
354
- : keep_log_files(_keep_log_files) {}
397
+ // Specifies the level of incremental restore. 'kPurgeAllFiles' by default.
398
+ Mode mode;
399
+
400
+ // FIXME(https://github.com/facebook/rocksdb/issues/13293)
401
+ explicit RestoreOptions(bool _keep_log_files = false,
402
+ Mode _mode = Mode::kPurgeAllFiles)
403
+ : keep_log_files(_keep_log_files), mode(_mode) {}
355
404
  };
356
405
 
357
406
  using BackupID = uint32_t;