@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
@@ -0,0 +1,237 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
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/iterator.h"
9
+ #include "rocksdb/options.h"
10
+
11
+ namespace ROCKSDB_NAMESPACE {
12
+
13
+ // EXPERIMENTAL
14
+ //
15
+ // An iterator that returns results from multiple scan ranges. The ranges are
16
+ // expected to be in increasing sorted order.
17
+ // The results are returned in nested container objects that can be iterated
18
+ // using an std::input_iterator.
19
+ //
20
+ // MultiScan
21
+ // |
22
+ // ---
23
+ // |
24
+ // MultiScanIterator <-- std::input_iterator (returns a Scan object for each
25
+ // | scan range)
26
+ // ---
27
+ // |
28
+ // Scan
29
+ // |
30
+ // ---
31
+ // |
32
+ // ScanIterator <-- std::input_iterator (returns the KVs of a single
33
+ // scan range)
34
+ //
35
+ // The application on top of RocksDB
36
+ // would use this as follows -
37
+ //
38
+ // std::vector<ScanOptions> scans{{.start = Slice("bar")},
39
+ // {.start = Slice("foo")}};
40
+ // std::unique_ptr<MultiScan> iter.reset(
41
+ // db->NewMultiScan());
42
+ // try {
43
+ // for (auto scan : *iter) {
44
+ // for (auto it : scan) {
45
+ // // Do something with key - it.first
46
+ // // Do something with value - it.second
47
+ // }
48
+ // }
49
+ // } catch (MultiScanException& ex) {
50
+ // // Check ex.status()
51
+ // } catch (std::logic_error& ex) {
52
+ // // Check ex.what()
53
+ // }
54
+
55
+ class MultiScanException : public std::runtime_error {
56
+ public:
57
+ explicit MultiScanException(Status& s)
58
+ : std::runtime_error(s.ToString()), s_(s) {}
59
+
60
+ Status& status() { return s_; }
61
+
62
+ private:
63
+ Status s_;
64
+ };
65
+
66
+ // A container object encapsulating a single scan range. It supports an
67
+ // std::input_iterator for a single pass iteration of the KVs in the range.
68
+ // A Status exception is thrown if there is an error in scanning the range.
69
+ class Scan {
70
+ public:
71
+ class ScanIterator;
72
+
73
+ explicit Scan(Iterator* db_iter) : db_iter_(db_iter) {}
74
+
75
+ ScanIterator begin() { return ScanIterator(db_iter_); }
76
+
77
+ std::nullptr_t end() { return nullptr; }
78
+
79
+ class ScanIterator {
80
+ public:
81
+ using self_type = ScanIterator;
82
+ using value_type = std::pair<Slice, Slice>;
83
+ using reference = std::pair<Slice, Slice>&;
84
+ using pointer = std::pair<Slice, Slice>*;
85
+ using difference_type = int;
86
+ using iterator_category = std::input_iterator_tag;
87
+
88
+ explicit ScanIterator(Iterator* db_iter) : db_iter_(db_iter) {
89
+ valid_ = db_iter_->Valid();
90
+ if (valid_) {
91
+ result_ = value_type(db_iter_->key(), db_iter_->value());
92
+ }
93
+ }
94
+
95
+ ScanIterator() : db_iter_(nullptr), valid_(false) {}
96
+
97
+ ~ScanIterator() { assert(status_.ok()); }
98
+
99
+ ScanIterator& operator++() {
100
+ if (!valid_) {
101
+ throw std::logic_error("Trying to advance invalid iterator");
102
+ } else {
103
+ db_iter_->Next();
104
+ status_ = db_iter_->status();
105
+ if (!status_.ok()) {
106
+ throw MultiScanException(status_);
107
+ } else {
108
+ valid_ = db_iter_->Valid();
109
+ if (valid_) {
110
+ result_ = value_type(db_iter_->key(), db_iter_->value());
111
+ }
112
+ }
113
+ }
114
+ return *this;
115
+ }
116
+
117
+ bool operator==(std::nullptr_t /*other*/) const { return !valid_; }
118
+
119
+ bool operator!=(std::nullptr_t /*other*/) const { return valid_; }
120
+
121
+ reference operator*() {
122
+ if (!valid_) {
123
+ throw std::logic_error("Trying to deref invalid iterator");
124
+ }
125
+ return result_;
126
+ }
127
+ reference operator->() {
128
+ if (!valid_) {
129
+ throw std::logic_error("Trying to deref invalid iterator");
130
+ }
131
+ return result_;
132
+ }
133
+
134
+ private:
135
+ Iterator* db_iter_;
136
+ bool valid_;
137
+ Status status_;
138
+ value_type result_;
139
+ };
140
+
141
+ private:
142
+ Iterator* db_iter_;
143
+ };
144
+
145
+ // A container object encapsulating the scan ranges for a multi scan.
146
+ // It supports an std::input_iterator for a single pass iteration of the
147
+ // ScanOptions in scan_opts, which can be dereferenced to get the container
148
+ // (Scan) for a single range.
149
+ // A Status exception is thrown if there is an error.
150
+ class MultiScan {
151
+ public:
152
+ MultiScan(const std::vector<ScanOptions>& scan_opts,
153
+ std::unique_ptr<Iterator>&& db_iter)
154
+ : scan_opts_(scan_opts), db_iter_(std::move(db_iter)) {}
155
+
156
+ explicit MultiScan(std::unique_ptr<Iterator>&& db_iter)
157
+ : db_iter_(std::move(db_iter)) {}
158
+
159
+ class MultiScanIterator {
160
+ public:
161
+ MultiScanIterator(const MultiScanIterator&) = delete;
162
+ MultiScanIterator operator=(MultiScanIterator&) = delete;
163
+
164
+ using self_type = MultiScanIterator;
165
+ using value_type = Scan;
166
+ using reference = Scan&;
167
+ using pointer = Scan*;
168
+ using difference_type = int;
169
+ using iterator_category = std::input_iterator_tag;
170
+
171
+ MultiScanIterator(const std::vector<ScanOptions>& scan_opts,
172
+ Iterator* db_iter)
173
+ : scan_opts_(scan_opts), idx_(0), db_iter_(db_iter), scan_(db_iter_) {
174
+ if (scan_opts_.empty()) {
175
+ throw std::logic_error("Zero scans in multi-scan");
176
+ }
177
+ db_iter_->Seek(*scan_opts_[idx_].range.start);
178
+ status_ = db_iter_->status();
179
+ if (!status_.ok()) {
180
+ throw MultiScanException(status_);
181
+ }
182
+ }
183
+
184
+ explicit MultiScanIterator(const std::vector<ScanOptions>& scan_opts)
185
+ : scan_opts_(scan_opts),
186
+ idx_(scan_opts_.size()),
187
+ db_iter_(nullptr),
188
+ scan_(nullptr) {}
189
+
190
+ ~MultiScanIterator() { assert(status_.ok()); }
191
+
192
+ MultiScanIterator& operator++() {
193
+ if (idx_ >= scan_opts_.size()) {
194
+ throw std::logic_error("Index out of range");
195
+ }
196
+ idx_++;
197
+ if (idx_ < scan_opts_.size()) {
198
+ db_iter_->Seek(*scan_opts_[idx_].range.start);
199
+ status_ = db_iter_->status();
200
+ if (!status_.ok()) {
201
+ throw MultiScanException(status_);
202
+ }
203
+ }
204
+ return *this;
205
+ }
206
+
207
+ bool operator==(std::nullptr_t /*other*/) const {
208
+ return idx_ >= scan_opts_.size();
209
+ }
210
+
211
+ bool operator!=(std::nullptr_t /*other*/) const {
212
+ return idx_ < scan_opts_.size();
213
+ }
214
+
215
+ reference operator*() { return scan_; }
216
+ reference operator->() { return scan_; }
217
+
218
+ private:
219
+ const std::vector<ScanOptions>& scan_opts_;
220
+ size_t idx_;
221
+ Iterator* db_iter_;
222
+ Status status_;
223
+ Scan scan_;
224
+ };
225
+
226
+ MultiScanIterator begin() {
227
+ return MultiScanIterator(scan_opts_, db_iter_.get());
228
+ }
229
+
230
+ std::nullptr_t end() { return nullptr; }
231
+
232
+ private:
233
+ const std::vector<ScanOptions> scan_opts_;
234
+ std::unique_ptr<Iterator> db_iter_;
235
+ };
236
+
237
+ } // namespace ROCKSDB_NAMESPACE
@@ -62,6 +62,8 @@ struct Options;
62
62
  struct DbPath;
63
63
 
64
64
  using FileTypeSet = SmallEnumSet<FileType, FileType::kBlobFile>;
65
+ using CompactionStyleSet =
66
+ SmallEnumSet<CompactionStyle, CompactionStyle::kCompactionStyleNone>;
65
67
 
66
68
  struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
67
69
  // The function recovers options to a previous version. Only 4.6 or later
@@ -231,6 +233,14 @@ struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
231
233
  // different options for compression algorithms
232
234
  CompressionOptions compression_opts;
233
235
 
236
+ // EXPERIMENTAL
237
+ // Customized compression through a callback interface. When non-nullptr,
238
+ // supersedes the above compression options, except that the above options are
239
+ // still processed as they historically would be and passed to
240
+ // CompressionManager::GetCompressorForSST as hints or suggestions. See
241
+ // advanced_compression.h
242
+ std::shared_ptr<CompressionManager> compression_manager;
243
+
234
244
  // Number of files to trigger level-0 compaction. A value <0 means that
235
245
  // level-0 compaction will not be triggered by number of files at all.
236
246
  //
@@ -454,6 +464,7 @@ extern const char* kHostnameForDbHostId;
454
464
  enum class CompactionServiceJobStatus : char {
455
465
  kSuccess,
456
466
  kFailure,
467
+ kAborted,
457
468
  kUseLocal,
458
469
  };
459
470
 
@@ -461,6 +472,12 @@ struct CompactionServiceJobInfo {
461
472
  std::string db_name;
462
473
  std::string db_id;
463
474
  std::string db_session_id;
475
+
476
+ // the id of the column family where the compaction happened.
477
+ uint32_t cf_id;
478
+ // the name of the column family where the compaction happened.
479
+ std::string cf_name;
480
+
464
481
  uint64_t job_id; // job_id is only unique within the current DB and session,
465
482
  // restart DB will reset the job_id. `db_id` and
466
483
  // `db_session_id` could help you build unique id across
@@ -474,21 +491,33 @@ struct CompactionServiceJobInfo {
474
491
  bool is_manual_compaction;
475
492
  bool bottommost_level;
476
493
 
494
+ // the smallest input level of the compaction.
495
+ // (same as Compaction::start_level and CompactionJobInfo::base_input_level)
496
+ int base_input_level;
497
+ // the output level of the compaction.
498
+ int output_level;
499
+
477
500
  CompactionServiceJobInfo(std::string db_name_, std::string db_id_,
478
- std::string db_session_id_, uint64_t job_id_,
501
+ std::string db_session_id_, uint32_t cf_id_,
502
+ std::string cf_name_, uint64_t job_id_,
479
503
  Env::Priority priority_,
480
504
  CompactionReason compaction_reason_,
481
505
  bool is_full_compaction_, bool is_manual_compaction_,
482
- bool bottommost_level_)
506
+ bool bottommost_level_, int base_input_level_,
507
+ int output_level_)
483
508
  : db_name(std::move(db_name_)),
484
509
  db_id(std::move(db_id_)),
485
510
  db_session_id(std::move(db_session_id_)),
511
+ cf_id(cf_id_),
512
+ cf_name(std::move(cf_name_)),
486
513
  job_id(job_id_),
487
514
  priority(priority_),
488
515
  compaction_reason(compaction_reason_),
489
516
  is_full_compaction(is_full_compaction_),
490
517
  is_manual_compaction(is_manual_compaction_),
491
- bottommost_level(bottommost_level_) {}
518
+ bottommost_level(bottommost_level_),
519
+ base_input_level(base_input_level_),
520
+ output_level(output_level_) {}
492
521
  };
493
522
 
494
523
  struct CompactionServiceScheduleResponse {
@@ -527,6 +556,9 @@ class CompactionService : public Customizable {
527
556
  return CompactionServiceJobStatus::kUseLocal;
528
557
  }
529
558
 
559
+ // Cancel awaiting jobs. Called by CancelAllBackgroundWork()
560
+ virtual void CancelAwaitingJobs() {}
561
+
530
562
  // Optional callback function upon Installation.
531
563
  virtual void OnInstallation(const std::string& /*scheduled_job_id*/,
532
564
  CompactionServiceJobStatus /*status*/) {}
@@ -590,7 +622,8 @@ struct DBOptions {
590
622
  // DEPRECATED: This option might be removed in a future release.
591
623
  //
592
624
  // If true, during memtable flush, RocksDB will validate total entries
593
- // read in flush, and compare with counter inserted into it.
625
+ // read in flush, total entries written in the SST and compare them with
626
+ // counter of keys added.
594
627
  //
595
628
  // The option is here to turn the feature off in case this new validation
596
629
  // feature has a bug. The option may be removed in the future once the
@@ -632,6 +665,26 @@ struct DBOptions {
632
665
  // Default: false
633
666
  bool track_and_verify_wals_in_manifest = false;
634
667
 
668
+ // EXPERIMENTAL
669
+ //
670
+ // If true, each new WAL will record various information about its predecessor
671
+ // WAL for verification on the predecessor WAL during WAL recovery.
672
+ //
673
+ // It verifies the following:
674
+ // 1. There exists at least some WAL in the DB
675
+ // - It's not compatible with `RepairDB()` since this option imposes a
676
+ // stricter requirement on WAL than the DB went through `RepariDB()` can
677
+ // normally meet
678
+ // 2. There exists no WAL hole where new WAL data presents while some old WAL
679
+ // data not yet obsolete is missing. The DB manifest indicates which WALs are
680
+ // obsolete.
681
+ //
682
+ // This is intended to be a better replacement to
683
+ // `track_and_verify_wals_in_manifest`.
684
+ //
685
+ // Default: false
686
+ bool track_and_verify_wals = false;
687
+
635
688
  // If true, verifies the SST unique id between MANIFEST and actual file
636
689
  // each time an SST file is opened. This check ensures an SST file is not
637
690
  // overwritten or misplaced. A corruption error will be reported if mismatch
@@ -789,6 +842,7 @@ struct DBOptions {
789
842
  // If it is non empty, the log files will be in the specified dir,
790
843
  // and the db data dir's absolute path will be used as the log file
791
844
  // name's prefix.
845
+ // NOTE: not for WALs
792
846
  std::string db_log_dir = "";
793
847
 
794
848
  // This specifies the absolute dir path for write-ahead logs (WAL).
@@ -869,21 +923,24 @@ struct DBOptions {
869
923
  // be created.
870
924
  // If max_log_file_size == 0, all logs will be written to one
871
925
  // log file.
926
+ // NOTE: not for WALs
872
927
  size_t max_log_file_size = 0;
873
928
 
874
929
  // Time for the info log file to roll (in seconds).
875
930
  // If specified with non-zero value, log file will be rolled
876
931
  // if it has been active longer than `log_file_time_to_roll`.
877
932
  // Default: 0 (disabled)
933
+ // NOTE: not for WALs
878
934
  size_t log_file_time_to_roll = 0;
879
935
 
880
936
  // Maximal info log files to be kept.
881
937
  // Default: 1000
938
+ // NOTE: not for WALs
882
939
  size_t keep_log_file_num = 1000;
883
940
 
884
- // Recycle log files.
885
- // If non-zero, we will reuse previously written log files for new
886
- // logs, overwriting the old data. The value indicates how many
941
+ // Recycle WAL files.
942
+ // If non-zero, we will reuse previously written WAL files for new
943
+ // WALs, overwriting the old data. The value indicates how many
887
944
  // such files we will keep around at any point in time for later
888
945
  // use. This is more efficient because the blocks are already
889
946
  // allocated and fdatasync does not need to update the inode after
@@ -1045,23 +1102,6 @@ struct DBOptions {
1045
1102
  // Dynamically changeable through SetDBOptions() API.
1046
1103
  size_t compaction_readahead_size = 2 * 1024 * 1024;
1047
1104
 
1048
- // This is a maximum buffer size that is used by WinMmapReadableFile in
1049
- // unbuffered disk I/O mode. We need to maintain an aligned buffer for
1050
- // reads. We allow the buffer to grow until the specified value and then
1051
- // for bigger requests allocate one shot buffers. In unbuffered mode we
1052
- // always bypass read-ahead buffer at ReadaheadRandomAccessFile
1053
- // When read-ahead is required we then make use of compaction_readahead_size
1054
- // value and always try to read ahead. With read-ahead we always
1055
- // pre-allocate buffer to the size instead of growing it up to a limit.
1056
- //
1057
- // This option is currently honored only on Windows
1058
- //
1059
- // Default: 1 Mb
1060
- //
1061
- // Special value: 0 - means do not maintain per instance buffer. Allocate
1062
- // per request buffer and avoid locking.
1063
- size_t random_access_max_buffer_size = 1024 * 1024;
1064
-
1065
1105
  // This is the maximum buffer size that is used by WritableFileWriter.
1066
1106
  // With direct IO, we need to maintain an aligned buffer for writes.
1067
1107
  // We allow the buffer to grow until it's size hits the limit in buffered
@@ -1288,14 +1328,6 @@ struct DBOptions {
1288
1328
  // currently.
1289
1329
  WalFilter* wal_filter = nullptr;
1290
1330
 
1291
- // DEPRECATED: This option might be removed in a future release.
1292
- //
1293
- // If true, then DB::Open, CreateColumnFamily, DropColumnFamily, and
1294
- // SetOptions will fail if options file is not properly persisted.
1295
- //
1296
- // DEFAULT: true
1297
- bool fail_if_options_file_error = true;
1298
-
1299
1331
  // If true, then print malloc stats together with rocksdb.stats
1300
1332
  // when printing to LOG.
1301
1333
  // DEFAULT: false
@@ -1414,9 +1446,10 @@ struct DBOptions {
1414
1446
  // prefix_same_as_start=true can take advantage of prefix seek optimizations.
1415
1447
  bool prefix_seek_opt_in_only = false;
1416
1448
 
1417
- // The number of bytes to prefetch when reading the log. This is mostly useful
1418
- // for reading a remotely located log, as it can save the number of
1419
- // round-trips. If 0, then the prefetching is disabled.
1449
+ // The number of bytes to prefetch when reading the DB manifest and WAL files
1450
+ // during DB::Open (and variants). This is mostly useful for reading a
1451
+ // remotely located log, as it can save the number of round-trips. If 0, then
1452
+ // the prefetching is disabled.
1420
1453
  //
1421
1454
  // Default: 0
1422
1455
  size_t log_readahead_size = 0;
@@ -1613,6 +1646,24 @@ struct DBOptions {
1613
1646
  // `kUnknown`, this overrides any temperature set by OptimizeForLogWrite
1614
1647
  // functions.
1615
1648
  Temperature wal_write_temperature = Temperature::kUnknown;
1649
+
1650
+ // Enum set indicative of which compaction styles SST write lifetime hint
1651
+ // calculation is allowed on. Today, RocksDB provides native support for
1652
+ // kCompactionStyleLevel and kCompactionStyleUniversal (experimental version).
1653
+ // Other compaction styles, even when enabled in the set, won't have any
1654
+ // effect in the default PosixWritableFile file implementation. There are
1655
+ // numerous benefits coming from employing the hints including reduction in
1656
+ // write amplification caused by OS file movement during garbage collection,
1657
+ // and reduction in wear-leveling (SSDs). However, as currently implemented,
1658
+ // SST write lifetime hints are calculated in a static way and solely based on
1659
+ // the level, which might not be suitable for non-uniform workloads with
1660
+ // dynamic / high-variance lifespan of data within the same level. In those
1661
+ // cases (or when the performance is not satisfactory), it's recommended to
1662
+ // disable the hints by assigning the setting to the empty set (= {});
1663
+ //
1664
+ // Default: Enabled in kCompactionStyleLevel mode.
1665
+ CompactionStyleSet calculate_sst_write_lifetime_hint_set = {
1666
+ CompactionStyle::kCompactionStyleLevel};
1616
1667
  // End EXPERIMENTAL
1617
1668
  };
1618
1669
 
@@ -1676,6 +1727,50 @@ enum ReadTier {
1676
1727
  kMemtableTier = 0x3 // data in memtable. used for memtable-only iterators.
1677
1728
  };
1678
1729
 
1730
+ // A range of keys. In case of user_defined timestamp, if enabled, `start` and
1731
+ // `limit` should point to key without timestamp part.
1732
+ struct Range {
1733
+ Slice start;
1734
+ Slice limit;
1735
+
1736
+ Range() {}
1737
+ Range(const Slice& s, const Slice& l) : start(s), limit(l) {}
1738
+ };
1739
+
1740
+ // A key range with optional endpoints. In case of user_defined timestamp, if
1741
+ // enabled, `start` and `limit` should point to key without timestamp part.
1742
+ struct RangeOpt {
1743
+ // When start.has_value() == false, refers to starting before every key
1744
+ OptSlice start;
1745
+ // When limit.has_value() == false, refers to ending after every key
1746
+ OptSlice limit;
1747
+
1748
+ RangeOpt() {}
1749
+ RangeOpt(const OptSlice& s, const OptSlice& l) : start(s), limit(l) {}
1750
+ };
1751
+
1752
+ // EXPERIMENTAL
1753
+ //
1754
+ // Options for a RocksDB scan request. Only forward scans for now.
1755
+ // We may add other options such as prefix scan in the future.
1756
+ struct ScanOptions {
1757
+ // The scan range. Mandatory for start to be set, limit is optional
1758
+ RangeOpt range;
1759
+
1760
+ // A map of name,value pairs that can be passed by the user to an
1761
+ // external table reader. This is completely opaque to RocksDB and is
1762
+ // ignored by the natively supported table readers like block based and plain
1763
+ // table. This is only useful for Iterator.
1764
+ std::optional<std::unordered_map<std::string, std::string>> property_bag;
1765
+
1766
+ // An unbounded scan with a start key
1767
+ explicit ScanOptions(const Slice& _start) : range(_start, OptSlice()) {}
1768
+
1769
+ // A bounded scan with a start key and upper bound
1770
+ ScanOptions(const Slice& _start, const Slice& _upper_bound)
1771
+ : range(_start, _upper_bound) {}
1772
+ };
1773
+
1679
1774
  // Options that control read operations
1680
1775
  struct ReadOptions {
1681
1776
  // *** BEGIN options relevant to point lookups as well as scans ***
@@ -1757,6 +1852,10 @@ struct ReadOptions {
1757
1852
  // block cache.
1758
1853
  bool fill_cache = true;
1759
1854
 
1855
+ // DEPRECATED: This option might be removed in a future release.
1856
+ // There should be no noticeable performance difference whether this option
1857
+ // is turned on or off when a DB does not use DeleteRange().
1858
+ //
1760
1859
  // If true, range tombstones handling will be skipped in key lookup paths.
1761
1860
  // For DB instances that don't use DeleteRange() calls, this setting can
1762
1861
  // be used to optimize the read performance.
@@ -1940,6 +2039,28 @@ struct ReadOptions {
1940
2039
  // Default: false
1941
2040
  bool allow_unprepared_value = false;
1942
2041
 
2042
+ // EXPERIMENTAL
2043
+ //
2044
+ // Long-running iterators are holding onto memory and storage resources long
2045
+ // after they are obsolete. This setting (when enabled) will fix that problem
2046
+ // for as long as iterator periodically makes some progress and its supplied
2047
+ // `read_options` was configured with non-nullptr `snapshot` value.
2048
+ // The feature is engineered so that the performance impact should be
2049
+ // negligible. We expect the default value to be true some time in the future.
2050
+ //
2051
+ // NOTE 1: Does not have effect on TransactionDB with WRITE_PREPARED or
2052
+ // WRITE_UNPREPARED policies (currently incompatible).
2053
+ //
2054
+ // NOTE 2: True is not recommended if using user-defined timestamp with
2055
+ // persist_user_defined_timestamps=false and non-nullptr
2056
+ // ReadOptions::timestamp or ReadOptions::iter_start_ts, because
2057
+ // auto-refreshing iterator will not prevent user timestamp
2058
+ // information from being dropped during iteration. Auto-refresh might
2059
+ // be disabled for this combination in the future.
2060
+ //
2061
+ // Default: false
2062
+ bool auto_refresh_iterator_with_snapshot = false;
2063
+
1943
2064
  // *** END options only relevant to iterators or scans ***
1944
2065
 
1945
2066
  // *** BEGIN options for RocksDB internal use only ***
@@ -1949,6 +2070,19 @@ struct ReadOptions {
1949
2070
 
1950
2071
  // *** END options for RocksDB internal use only ***
1951
2072
 
2073
+ // *** BEGIN per-request settings for internal team use only ***
2074
+
2075
+ // TODO: create a new struct for per-request options, potentially including
2076
+ // timestamps in point lookups/scans
2077
+
2078
+ // request_id is a unique id assigned by the application. It is used to allow
2079
+ // us to link file system metrics/logs to rocksDB and application logs. This
2080
+ // request_id may not be unique to each RocksDB api call - it could refer to
2081
+ // an application level request that results in multiple RocksDB api calls
2082
+ const std::string* request_id = nullptr;
2083
+
2084
+ // *** END per-request settings for internal team use only ***
2085
+
1952
2086
  ReadOptions() {}
1953
2087
  ReadOptions(bool _verify_checksums, bool _fill_cache);
1954
2088
  explicit ReadOptions(Env::IOActivity _io_activity);
@@ -2088,10 +2222,20 @@ struct CompactionOptions {
2088
2222
  // If > 0, it will replace the option in the DBOptions for this compaction.
2089
2223
  uint32_t max_subcompactions;
2090
2224
 
2225
+ // Allows cancellation of an in-progress manual compaction.
2226
+ //
2227
+ // Cancellation can be delayed waiting on automatic compactions when used
2228
+ // together with `exclusive_manual_compaction == true`.
2229
+ std::atomic<bool>* canceled;
2230
+ // NOTE: Calling DisableManualCompaction() will not override the
2231
+ // canceled variable in CompactionOptions, as it does for CompactRangeOptions
2232
+ // - this is because ManualCompactionState is not used
2233
+
2091
2234
  CompactionOptions()
2092
2235
  : compression(kDisableCompressionOption),
2093
2236
  output_file_size_limit(std::numeric_limits<uint64_t>::max()),
2094
- max_subcompactions(0) {}
2237
+ max_subcompactions(0),
2238
+ canceled(nullptr) {}
2095
2239
  };
2096
2240
 
2097
2241
  // For level based compaction, we can configure if we want to skip/force
@@ -2158,7 +2302,7 @@ struct CompactRangeOptions {
2158
2302
  // Cancellation can be delayed waiting on automatic compactions when used
2159
2303
  // together with `exclusive_manual_compaction == true`.
2160
2304
  std::atomic<bool>* canceled = nullptr;
2161
- // NOTE: Calling DisableManualCompaction() overwrites the uer-provided
2305
+ // NOTE: Calling DisableManualCompaction() overwrites the user-provided
2162
2306
  // canceled variable in CompactRangeOptions.
2163
2307
  // Typically, when CompactRange is being called in one thread (t1) with
2164
2308
  // canceled = false, and DisableManualCompaction is being called in the
@@ -2202,8 +2346,11 @@ struct IngestExternalFileOptions {
2202
2346
  // during file ingestion in the DB (the conditions under which a global_seqno
2203
2347
  // must be assigned to the ingested file).
2204
2348
  bool allow_global_seqno = true;
2205
- // If set to false and the file key range overlaps with the memtable key range
2206
- // (memtable flush required), IngestExternalFile will fail.
2349
+ // Normally (true), IngestExternalFile() will trigger and block for flushing
2350
+ // memtable(s) if there is overlap between ingested files and memtable(s). If
2351
+ // allow_blocking_flush is set to false, IngestExternalFile() will fail if the
2352
+ // file key range overlaps with the memtable key range (memtable flush
2353
+ // required).
2207
2354
  bool allow_blocking_flush = true;
2208
2355
  // Set to true if you would like duplicate keys in the file being ingested
2209
2356
  // to be skipped rather than overwriting existing data under that key.
@@ -2286,6 +2433,44 @@ struct IngestExternalFileOptions {
2286
2433
  bool fill_cache = true;
2287
2434
  };
2288
2435
 
2436
+ // It is valid that files_checksums and files_checksum_func_names are both
2437
+ // empty (no checksum information is provided for ingestion). Otherwise,
2438
+ // their sizes should be the same as external_files. The file order should
2439
+ // be the same in three vectors and guaranteed by the caller.
2440
+ // Note that, we assume the temperatures of this batch of files to be
2441
+ // ingested are the same.
2442
+ struct IngestExternalFileArg {
2443
+ ColumnFamilyHandle* column_family = nullptr;
2444
+ std::vector<std::string> external_files;
2445
+ IngestExternalFileOptions options;
2446
+ std::vector<std::string> files_checksums;
2447
+ std::vector<std::string> files_checksum_func_names;
2448
+ // A hint as to the temperature for *reading* the files to be ingested.
2449
+ Temperature file_temperature = Temperature::kUnknown;
2450
+ // EXPERIMENTAL: When specified, existing keys in the given range will be
2451
+ // cleared atomically as part of the ingestion, where the ingested files are
2452
+ // logically applied on top of the cleared key range.
2453
+ // * If both `start` and `limit` are nullptr, the entire column family is
2454
+ // cleared; however, setting just one bound to nullptr is not yet supported.
2455
+ // * When a range is specified, all the external files in this batch must
2456
+ // be contained in that key range.
2457
+ // * Checks for memtable overlap and possible blocking flush will apply
2458
+ // to this range (not just the file ranges).
2459
+ // * Not compatible with ingest_behind=true.
2460
+ // * When options.snapshot_consistency = false, the range is cleared
2461
+ // similarly to DeleteFilesInRange, but fails if any files overlap the range
2462
+ // only partially.
2463
+ // * It is recommended to use fail_if_not_bottommost_level=true to ensure
2464
+ // data in the key range is ingested to a single compacted level (the
2465
+ // last level). (fail_if_not_bottommost_level=false allows overlap between
2466
+ // the ingested files.)
2467
+ // * options.snapshot_consistency = true is not yet supported.
2468
+ // BUG: the upper bound of the range may be interpreted as inclusive or
2469
+ // exclusive, so it is best not to depend on one or the other until it is
2470
+ // sorted out.
2471
+ std::optional<RangeOpt> atomic_replace_range;
2472
+ };
2473
+
2289
2474
  enum TraceFilterType : uint64_t {
2290
2475
  // Trace all the operations
2291
2476
  kTraceFilterNone = 0x0,
@@ -2371,10 +2556,16 @@ struct CompactionServiceOptionsOverride {
2371
2556
  // to set it here.
2372
2557
  std::shared_ptr<Statistics> statistics = nullptr;
2373
2558
 
2559
+ // Info Log. If not overriden, default one will be used.
2560
+ std::shared_ptr<Logger> info_log = nullptr;
2561
+
2374
2562
  // Only compaction generated SST files use this user defined table properties
2375
2563
  // collector.
2376
2564
  std::vector<std::shared_ptr<TablePropertiesCollectorFactory>>
2377
2565
  table_properties_collector_factories;
2566
+
2567
+ // All other options to override. Unknown options will be ignored.
2568
+ std::unordered_map<std::string, std::string> options_map;
2378
2569
  };
2379
2570
 
2380
2571
  struct OpenAndCompactOptions {