@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
@@ -67,7 +67,7 @@ class SubcompactionState;
67
67
  // if needed.
68
68
  //
69
69
  // CompactionJob has 2 main stats:
70
- // 1. CompactionJobStats compaction_job_stats_
70
+ // 1. CompactionJobStats job_stats_
71
71
  // CompactionJobStats is a public data structure which is part of Compaction
72
72
  // event listener that rocksdb share the job stats with the user.
73
73
  // Internally it's an aggregation of all the compaction_job_stats from each
@@ -81,7 +81,7 @@ class SubcompactionState;
81
81
  // +------------------------+ |
82
82
  // | CompactionJob | | +------------------------+
83
83
  // | | | | SubcompactionState |
84
- // | compaction_job_stats +-----+ | |
84
+ // | job_stats +-----+ | |
85
85
  // | | +--------->| compaction_job_stats |
86
86
  // | | | | |
87
87
  // +------------------------+ | +------------------------+
@@ -98,16 +98,13 @@ class SubcompactionState;
98
98
  // +--------->+ |
99
99
  // +------------------------+
100
100
  //
101
- // 2. CompactionStatsFull compaction_stats_
101
+ // 2. CompactionStatsFull internal_stats_
102
102
  // `CompactionStatsFull` is an internal stats about the compaction, which
103
103
  // is eventually sent to `ColumnFamilyData::internal_stats_` and used for
104
104
  // logging and public metrics.
105
105
  // Internally, it's an aggregation of stats_ from each `SubcompactionState`.
106
- // It has 2 parts, normal stats about the main compaction information and
107
- // the penultimate level output stats.
108
- // `SubcompactionState` maintains the CompactionOutputs for normal output and
109
- // the penultimate level output if exists, the per_level stats is
110
- // stored with the outputs.
106
+ // It has 2 parts, ordinary output level stats and the proximal level output
107
+ // stats.
111
108
  // +---------------------------+
112
109
  // | SubcompactionState |
113
110
  // | |
@@ -119,15 +116,15 @@ class SubcompactionState;
119
116
  // | | |
120
117
  // | | +----------------------+ |
121
118
  // +--------------------------------+ | | | CompactionOutputs | |
122
- // | CompactionJob | | | | (penultimate_level) | |
119
+ // | CompactionJob | | | | (proximal_level) | |
123
120
  // | | +--------->| stats_ | |
124
- // | compaction_stats_ | | | | +----------------------+ |
121
+ // | internal_stats_ | | | | +----------------------+ |
125
122
  // | +-------------------------+ | | | | |
126
- // | |stats (normal) |------|----+ +---------------------------+
123
+ // | |output_level_stats |------|----+ +---------------------------+
127
124
  // | +-------------------------+ | | |
128
125
  // | | | |
129
126
  // | +-------------------------+ | | | +---------------------------+
130
- // | |penultimate_level_stats +------+ | | SubcompactionState |
127
+ // | |proximal_level_stats |------+ | | SubcompactionState |
131
128
  // | +-------------------------+ | | | | |
132
129
  // | | | | | +----------------------+ |
133
130
  // | | | | | | CompactionOutputs | |
@@ -137,7 +134,7 @@ class SubcompactionState;
137
134
  // | | |
138
135
  // | | +----------------------+ |
139
136
  // | | | CompactionOutputs | |
140
- // | | | (penultimate_level) | |
137
+ // | | | (proximal_level) | |
141
138
  // +--------->| stats_ | |
142
139
  // | +----------------------+ |
143
140
  // | |
@@ -145,27 +142,27 @@ class SubcompactionState;
145
142
 
146
143
  class CompactionJob {
147
144
  public:
148
- CompactionJob(
149
- int job_id, Compaction* compaction, const ImmutableDBOptions& db_options,
150
- const MutableDBOptions& mutable_db_options,
151
- const FileOptions& file_options, VersionSet* versions,
152
- const std::atomic<bool>* shutting_down, LogBuffer* log_buffer,
153
- FSDirectory* db_directory, FSDirectory* output_directory,
154
- FSDirectory* blob_output_directory, Statistics* stats,
155
- InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler,
156
- std::vector<SequenceNumber> existing_snapshots,
157
- SequenceNumber earliest_write_conflict_snapshot,
158
- const SnapshotChecker* snapshot_checker, JobContext* job_context,
159
- std::shared_ptr<Cache> table_cache, EventLogger* event_logger,
160
- bool paranoid_file_checks, bool measure_io_stats,
161
- const std::string& dbname, CompactionJobStats* compaction_job_stats,
162
- Env::Priority thread_pri, const std::shared_ptr<IOTracer>& io_tracer,
163
- const std::atomic<bool>& manual_compaction_canceled,
164
- const std::string& db_id = "", const std::string& db_session_id = "",
165
- std::string full_history_ts_low = "", std::string trim_ts = "",
166
- BlobFileCompletionCallback* blob_callback = nullptr,
167
- int* bg_compaction_scheduled = nullptr,
168
- int* bg_bottom_compaction_scheduled = nullptr);
145
+ CompactionJob(int job_id, Compaction* compaction,
146
+ const ImmutableDBOptions& db_options,
147
+ const MutableDBOptions& mutable_db_options,
148
+ const FileOptions& file_options, VersionSet* versions,
149
+ const std::atomic<bool>* shutting_down, LogBuffer* log_buffer,
150
+ FSDirectory* db_directory, FSDirectory* output_directory,
151
+ FSDirectory* blob_output_directory, Statistics* stats,
152
+ InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler,
153
+ JobContext* job_context, std::shared_ptr<Cache> table_cache,
154
+ EventLogger* event_logger, bool paranoid_file_checks,
155
+ bool measure_io_stats, const std::string& dbname,
156
+ CompactionJobStats* compaction_job_stats,
157
+ Env::Priority thread_pri,
158
+ const std::shared_ptr<IOTracer>& io_tracer,
159
+ const std::atomic<bool>& manual_compaction_canceled,
160
+ const std::string& db_id = "",
161
+ const std::string& db_session_id = "",
162
+ std::string full_history_ts_low = "", std::string trim_ts = "",
163
+ BlobFileCompletionCallback* blob_callback = nullptr,
164
+ int* bg_compaction_scheduled = nullptr,
165
+ int* bg_bottom_compaction_scheduled = nullptr);
169
166
 
170
167
  virtual ~CompactionJob();
171
168
 
@@ -176,7 +173,13 @@ class CompactionJob {
176
173
 
177
174
  // REQUIRED: mutex held
178
175
  // Prepare for the compaction by setting up boundaries for each subcompaction
179
- void Prepare();
176
+ // and organizing seqno <-> time info. `known_single_subcompact` is non-null
177
+ // if we already have a known single subcompaction, with optional key bounds
178
+ // (currently for executing a remote compaction).
179
+ void Prepare(
180
+ std::optional<std::pair<std::optional<Slice>, std::optional<Slice>>>
181
+ known_single_subcompact);
182
+
180
183
  // REQUIRED mutex not held
181
184
  // Launch threads for each subcompaction and wait for them to finish. After
182
185
  // that, verify table is usable and finally do bookkeeping to unify
@@ -187,30 +190,15 @@ class CompactionJob {
187
190
  // Add compaction input/output to the current version
188
191
  // Releases compaction file through Compaction::ReleaseCompactionFiles().
189
192
  // Sets *compaction_released to true if compaction is released.
190
- Status Install(const MutableCFOptions& mutable_cf_options,
191
- bool* compaction_released);
193
+ Status Install(bool* compaction_released);
192
194
 
193
195
  // Return the IO status
194
196
  IOStatus io_status() const { return io_status_; }
195
197
 
196
198
  protected:
197
- // Update the following stats in compaction_stats_.stats
198
- // - num_input_files_in_non_output_levels
199
- // - num_input_files_in_output_level
200
- // - bytes_read_non_output_levels
201
- // - bytes_read_output_level
202
- // - num_input_records
203
- // - bytes_read_blob
204
- // - num_dropped_records
205
- //
206
- // @param num_input_range_del if non-null, will be set to the number of range
207
- // deletion entries in this compaction input.
208
- //
209
- // Returns true iff compaction_stats_.stats.num_input_records and
210
- // num_input_range_del are calculated successfully.
211
- bool UpdateCompactionStats(uint64_t* num_input_range_del = nullptr);
212
- virtual void UpdateCompactionJobStats(
213
- const InternalStats::CompactionStats& stats) const;
199
+ void UpdateCompactionJobOutputStats(
200
+ const InternalStats::CompactionStatsFull& internal_stats) const;
201
+
214
202
  void LogCompaction();
215
203
  virtual void RecordCompactionIOStats();
216
204
  void CleanupCompaction();
@@ -219,7 +207,7 @@ class CompactionJob {
219
207
  void ProcessKeyValueCompaction(SubcompactionState* sub_compact);
220
208
 
221
209
  CompactionState* compact_;
222
- InternalStats::CompactionStatsFull compaction_stats_;
210
+ InternalStats::CompactionStatsFull internal_stats_;
223
211
  const ImmutableDBOptions& db_options_;
224
212
  const MutableDBOptions mutable_db_options_copy_;
225
213
  LogBuffer* log_buffer_;
@@ -232,11 +220,37 @@ class CompactionJob {
232
220
 
233
221
  IOStatus io_status_;
234
222
 
235
- CompactionJobStats* compaction_job_stats_;
223
+ CompactionJobStats* job_stats_;
236
224
 
237
225
  private:
238
226
  friend class CompactionJobTestBase;
239
227
 
228
+ // Collect the following stats from Input Table Properties
229
+ // - num_input_files_in_non_output_levels
230
+ // - num_input_files_in_output_level
231
+ // - bytes_read_non_output_levels
232
+ // - bytes_read_output_level
233
+ // - num_input_records
234
+ // - bytes_read_blob
235
+ // - num_dropped_records
236
+ // and set them in internal_stats_.output_level_stats
237
+ //
238
+ // @param num_input_range_del if non-null, will be set to the number of range
239
+ // deletion entries in this compaction input.
240
+ //
241
+ // Returns true iff internal_stats_.output_level_stats.num_input_records and
242
+ // num_input_range_del are calculated successfully.
243
+ //
244
+ // This should be called only once for compactions (not per subcompaction)
245
+ bool BuildStatsFromInputTableProperties(
246
+ uint64_t* num_input_range_del = nullptr);
247
+
248
+ void UpdateCompactionJobInputStats(
249
+ const InternalStats::CompactionStatsFull& internal_stats,
250
+ uint64_t num_input_range_del) const;
251
+
252
+ Status VerifyInputRecordCount(uint64_t num_input_range_del) const;
253
+
240
254
  // Generates a histogram representing potential divisions of key ranges from
241
255
  // the input. It adds the starting and/or ending keys of certain input files
242
256
  // to the working set and then finds the approximate size of data in between
@@ -276,8 +290,7 @@ class CompactionJob {
276
290
  const Slice& next_table_min_key,
277
291
  const Slice* comp_start_user_key,
278
292
  const Slice* comp_end_user_key);
279
- Status InstallCompactionResults(const MutableCFOptions& mutable_cf_options,
280
- bool* compaction_released);
293
+ Status InstallCompactionResults(bool* compaction_released);
281
294
  Status OpenCompactionOutputFile(SubcompactionState* sub_compact,
282
295
  CompactionOutputs& outputs);
283
296
 
@@ -308,21 +321,8 @@ class CompactionJob {
308
321
  FSDirectory* blob_output_directory_;
309
322
  InstrumentedMutex* db_mutex_;
310
323
  ErrorHandler* db_error_handler_;
311
- // If there were two snapshots with seq numbers s1 and
312
- // s2 and s1 < s2, and if we find two instances of a key k1 then lies
313
- // entirely within s1 and s2, then the earlier version of k1 can be safely
314
- // deleted because that version is not visible in any snapshot.
315
- std::vector<SequenceNumber> existing_snapshots_;
316
324
 
317
325
  SequenceNumber earliest_snapshot_;
318
-
319
- // This is the earliest snapshot that could be used for write-conflict
320
- // checking by a transaction. For any user-key newer than this snapshot, we
321
- // should make sure not to remove evidence that a write occurred.
322
- SequenceNumber earliest_write_conflict_snapshot_;
323
-
324
- const SnapshotChecker* const snapshot_checker_;
325
-
326
326
  JobContext* job_context_;
327
327
 
328
328
  std::shared_ptr<Cache> table_cache_;
@@ -353,15 +353,18 @@ class CompactionJob {
353
353
  // it also collects the smallest_seqno -> oldest_ancester_time from the SST.
354
354
  SeqnoToTimeMapping seqno_to_time_mapping_;
355
355
 
356
- // Minimal sequence number for preserving the time information. The time info
357
- // older than this sequence number won't be preserved after the compaction and
358
- // if it's bottommost compaction, the seq num will be zeroed out.
359
- SequenceNumber preserve_time_min_seqno_ = kMaxSequenceNumber;
356
+ // Max seqno that can be zeroed out in last level, including for preserving
357
+ // write times.
358
+ SequenceNumber preserve_seqno_after_ = kMaxSequenceNumber;
360
359
 
361
360
  // Minimal sequence number to preclude the data from the last level. If the
362
361
  // key has bigger (newer) sequence number than this, it will be precluded from
363
- // the last level (output to penultimate level).
364
- SequenceNumber preclude_last_level_min_seqno_ = kMaxSequenceNumber;
362
+ // the last level (output to proximal level).
363
+ SequenceNumber proximal_after_seqno_ = kMaxSequenceNumber;
364
+
365
+ // Options File Number used for Remote Compaction
366
+ // Setting this requires DBMutex.
367
+ uint64_t options_file_number_ = 0;
365
368
 
366
369
  // Get table file name in where it's outputting to, which should also be in
367
370
  // `output_directory_`.
@@ -411,8 +414,9 @@ struct CompactionServiceInput {
411
414
  // CompactionServiceOutputFile is the metadata for the output SST file
412
415
  struct CompactionServiceOutputFile {
413
416
  std::string file_name;
414
- SequenceNumber smallest_seqno;
415
- SequenceNumber largest_seqno;
417
+ uint64_t file_size{};
418
+ SequenceNumber smallest_seqno{};
419
+ SequenceNumber largest_seqno{};
416
420
  std::string smallest_internal_key;
417
421
  std::string largest_internal_key;
418
422
  uint64_t oldest_ancester_time = kUnknownOldestAncesterTime;
@@ -420,21 +424,26 @@ struct CompactionServiceOutputFile {
420
424
  uint64_t epoch_number = kUnknownEpochNumber;
421
425
  std::string file_checksum = kUnknownFileChecksum;
422
426
  std::string file_checksum_func_name = kUnknownFileChecksumFuncName;
423
- uint64_t paranoid_hash;
427
+ uint64_t paranoid_hash{};
424
428
  bool marked_for_compaction;
425
429
  UniqueId64x2 unique_id{};
426
430
  TableProperties table_properties;
431
+ bool is_proximal_level_output;
432
+ Temperature file_temperature = Temperature::kUnknown;
427
433
 
428
434
  CompactionServiceOutputFile() = default;
429
435
  CompactionServiceOutputFile(
430
- const std::string& name, SequenceNumber smallest, SequenceNumber largest,
431
- std::string _smallest_internal_key, std::string _largest_internal_key,
432
- uint64_t _oldest_ancester_time, uint64_t _file_creation_time,
433
- uint64_t _epoch_number, const std::string& _file_checksum,
436
+ const std::string& name, uint64_t size, SequenceNumber smallest,
437
+ SequenceNumber largest, std::string _smallest_internal_key,
438
+ std::string _largest_internal_key, uint64_t _oldest_ancester_time,
439
+ uint64_t _file_creation_time, uint64_t _epoch_number,
440
+ const std::string& _file_checksum,
434
441
  const std::string& _file_checksum_func_name, uint64_t _paranoid_hash,
435
442
  bool _marked_for_compaction, UniqueId64x2 _unique_id,
436
- const TableProperties& _table_properties)
443
+ const TableProperties& _table_properties, bool _is_proximal_level_output,
444
+ Temperature _file_temperature)
437
445
  : file_name(name),
446
+ file_size(size),
438
447
  smallest_seqno(smallest),
439
448
  largest_seqno(largest),
440
449
  smallest_internal_key(std::move(_smallest_internal_key)),
@@ -447,7 +456,9 @@ struct CompactionServiceOutputFile {
447
456
  paranoid_hash(_paranoid_hash),
448
457
  marked_for_compaction(_marked_for_compaction),
449
458
  unique_id(std::move(_unique_id)),
450
- table_properties(_table_properties) {}
459
+ table_properties(_table_properties),
460
+ is_proximal_level_output(_is_proximal_level_output),
461
+ file_temperature(_file_temperature) {}
451
462
  };
452
463
 
453
464
  // CompactionServiceResult contains the compaction result from a different db
@@ -463,8 +474,21 @@ struct CompactionServiceResult {
463
474
 
464
475
  uint64_t bytes_read = 0;
465
476
  uint64_t bytes_written = 0;
477
+
478
+ // Job-level Compaction Stats.
479
+ //
480
+ // NOTE: Job level stats cannot be rebuilt from scratch by simply aggregating
481
+ // per-level stats due to some fields populated directly during compaction
482
+ // (e.g. RecordDroppedKeys()). This is why we need both job-level stats and
483
+ // per-level in the serialized result. If rebuilding job-level stats from
484
+ // per-level stats become possible in the future, consider deprecating this
485
+ // field.
466
486
  CompactionJobStats stats;
467
487
 
488
+ // Per-level Compaction Stats for both output_level_stats and
489
+ // proximal_level_stats
490
+ InternalStats::CompactionStatsFull internal_stats;
491
+
468
492
  // serialization interface to read and write the object
469
493
  static Status Read(const std::string& data_str, CompactionServiceResult* obj);
470
494
  Status Write(std::string* output);
@@ -487,15 +511,19 @@ class CompactionServiceCompactionJob : private CompactionJob {
487
511
  const std::atomic<bool>* shutting_down, LogBuffer* log_buffer,
488
512
  FSDirectory* output_directory, Statistics* stats,
489
513
  InstrumentedMutex* db_mutex, ErrorHandler* db_error_handler,
490
- std::vector<SequenceNumber> existing_snapshots,
491
- std::shared_ptr<Cache> table_cache, EventLogger* event_logger,
492
- const std::string& dbname, const std::shared_ptr<IOTracer>& io_tracer,
514
+ JobContext* job_context, std::shared_ptr<Cache> table_cache,
515
+ EventLogger* event_logger, const std::string& dbname,
516
+ const std::shared_ptr<IOTracer>& io_tracer,
493
517
  const std::atomic<bool>& manual_compaction_canceled,
494
518
  const std::string& db_id, const std::string& db_session_id,
495
519
  std::string output_path,
496
520
  const CompactionServiceInput& compaction_service_input,
497
521
  CompactionServiceResult* compaction_service_result);
498
522
 
523
+ // REQUIRED: mutex held
524
+ // Like CompactionJob::Prepare()
525
+ void Prepare();
526
+
499
527
  // Run the compaction in current thread and return the result
500
528
  Status Run();
501
529
 
@@ -506,9 +534,6 @@ class CompactionServiceCompactionJob : private CompactionJob {
506
534
  protected:
507
535
  void RecordCompactionIOStats() override;
508
536
 
509
- void UpdateCompactionJobStats(
510
- const InternalStats::CompactionStats& stats) const override;
511
-
512
537
  private:
513
538
  // Get table file name in output_path
514
539
  std::string GetTableFileName(uint64_t file_number) override;
@@ -959,7 +959,6 @@ int main(int argc, char** argv) {
959
959
  return RUN_ALL_TESTS();
960
960
  }
961
961
 
962
-
963
962
  #else
964
963
 
965
964
  int main(int /*argc*/, char** /*argv*/) { return 0; }
@@ -3,7 +3,6 @@
3
3
  // COPYING file in the root directory) and Apache 2.0 License
4
4
  // (found in the LICENSE.Apache file in the root directory).
5
5
 
6
-
7
6
  #include "db/compaction/compaction_job.h"
8
7
 
9
8
  #include <algorithm>
@@ -44,7 +43,6 @@ void VerifyInitializationOfCompactionJobStats(
44
43
  ASSERT_EQ(compaction_job_stats.elapsed_micros, 0U);
45
44
 
46
45
  ASSERT_EQ(compaction_job_stats.num_input_records, 0U);
47
- ASSERT_EQ(compaction_job_stats.num_input_files, 0U);
48
46
  ASSERT_EQ(compaction_job_stats.num_input_files_at_output_level, 0U);
49
47
 
50
48
  ASSERT_EQ(compaction_job_stats.num_output_records, 0U);
@@ -53,7 +51,6 @@ void VerifyInitializationOfCompactionJobStats(
53
51
  ASSERT_TRUE(compaction_job_stats.is_manual_compaction);
54
52
  ASSERT_FALSE(compaction_job_stats.is_remote_compaction);
55
53
 
56
- ASSERT_EQ(compaction_job_stats.total_input_bytes, 0U);
57
54
  ASSERT_EQ(compaction_job_stats.total_output_bytes, 0U);
58
55
 
59
56
  ASSERT_EQ(compaction_job_stats.total_input_raw_key_bytes, 0U);
@@ -302,7 +299,7 @@ class CompactionJobTestBase : public testing::Test {
302
299
  std::unique_ptr<TableBuilder> table_builder(
303
300
  cf_options_.table_factory->NewTableBuilder(
304
301
  TableBuilderOptions(
305
- *cfd_->ioptions(), mutable_cf_options_, read_options,
302
+ cfd_->ioptions(), mutable_cf_options_, read_options,
306
303
  write_options, cfd_->internal_comparator(),
307
304
  cfd_->internal_tbl_prop_coll_factories(),
308
305
  CompressionType::kNoCompression, CompressionOptions(),
@@ -398,8 +395,8 @@ class CompactionJobTestBase : public testing::Test {
398
395
 
399
396
  mutex_.Lock();
400
397
  EXPECT_OK(versions_->LogAndApply(
401
- versions_->GetColumnFamilySet()->GetDefault(), mutable_cf_options_,
402
- read_options_, write_options_, &edit, &mutex_, nullptr));
398
+ versions_->GetColumnFamilySet()->GetDefault(), read_options_,
399
+ write_options_, &edit, &mutex_, nullptr));
403
400
  mutex_.Unlock();
404
401
  }
405
402
 
@@ -461,9 +458,10 @@ class CompactionJobTestBase : public testing::Test {
461
458
  ReadOptions read_opts;
462
459
  Status s = cf_options_.table_factory->NewTableReader(
463
460
  read_opts,
464
- TableReaderOptions(*cfd->ioptions(), nullptr, FileOptions(),
461
+ TableReaderOptions(cfd->ioptions(), /*prefix_extractor=*/nullptr,
462
+ /*compression_manager=*/nullptr, FileOptions(),
465
463
  cfd_->internal_comparator(),
466
- 0 /* block_protection_bytes_per_key */),
464
+ /*block_protection_bytes_per_key=*/0),
467
465
  std::move(freader), file_size, &table_reader, false);
468
466
  ASSERT_OK(s);
469
467
  assert(table_reader);
@@ -596,11 +594,11 @@ class CompactionJobTestBase : public testing::Test {
596
594
  const std::vector<std::vector<FileMetaData*>>& input_files,
597
595
  const std::vector<int> input_levels,
598
596
  std::function<void(Compaction& comp)>&& verify_func,
599
- const std::vector<SequenceNumber>& snapshots = {}) {
597
+ std::vector<SequenceNumber>&& snapshots = {}) {
600
598
  const int kLastLevel = cf_options_.num_levels - 1;
601
599
  verify_per_key_placement_ = std::move(verify_func);
602
600
  mock::KVVector empty_map;
603
- RunCompaction(input_files, input_levels, {empty_map}, snapshots,
601
+ RunCompaction(input_files, input_levels, {empty_map}, std::move(snapshots),
604
602
  kMaxSequenceNumber, kLastLevel, false);
605
603
  }
606
604
 
@@ -609,7 +607,7 @@ class CompactionJobTestBase : public testing::Test {
609
607
  const std::vector<std::vector<FileMetaData*>>& input_files,
610
608
  const std::vector<int>& input_levels,
611
609
  const std::vector<mock::KVVector>& expected_results,
612
- const std::vector<SequenceNumber>& snapshots = {},
610
+ std::vector<SequenceNumber>&& snapshots = {},
613
611
  SequenceNumber earliest_write_conflict_snapshot = kMaxSequenceNumber,
614
612
  int output_level = 1, bool verify = true,
615
613
  std::vector<uint64_t> expected_oldest_blob_file_numbers = {},
@@ -646,12 +644,12 @@ class CompactionJobTestBase : public testing::Test {
646
644
  }
647
645
 
648
646
  Compaction compaction(
649
- cfd->current()->storage_info(), *cfd->ioptions(),
650
- *cfd->GetLatestMutableCFOptions(), mutable_db_options_,
647
+ cfd->current()->storage_info(), cfd->ioptions(),
648
+ cfd->GetLatestMutableCFOptions(), mutable_db_options_,
651
649
  compaction_input_files, output_level,
652
650
  mutable_cf_options_.target_file_size_base,
653
651
  mutable_cf_options_.max_compaction_bytes, 0, kNoCompression,
654
- cfd->GetLatestMutableCFOptions()->compression_opts,
652
+ cfd->GetLatestMutableCFOptions().compression_opts,
655
653
  Temperature::kUnknown, max_subcompactions, grandparents,
656
654
  /*earliest_snapshot*/ std::nullopt, /*snapshot_checker*/ nullptr, true);
657
655
  compaction.FinalizeInputInfo(cfd->current());
@@ -666,27 +664,28 @@ class CompactionJobTestBase : public testing::Test {
666
664
  ucmp_->timestamp_size() == full_history_ts_low_.size());
667
665
  const std::atomic<bool> kManualCompactionCanceledFalse{false};
668
666
  JobContext job_context(1, false /* create_superversion */);
667
+ job_context.InitSnapshotContext(snapshot_checker, nullptr,
668
+ earliest_write_conflict_snapshot,
669
+ std::move(snapshots));
669
670
  CompactionJob compaction_job(
670
671
  0, &compaction, db_options_, mutable_db_options_, env_options_,
671
672
  versions_.get(), &shutting_down_, &log_buffer, nullptr, nullptr,
672
- nullptr, nullptr, &mutex_, &error_handler_, snapshots,
673
- earliest_write_conflict_snapshot, snapshot_checker, &job_context,
674
- table_cache_, &event_logger, false, false, dbname_,
675
- &compaction_job_stats_, Env::Priority::USER, nullptr /* IOTracer */,
673
+ nullptr, nullptr, &mutex_, &error_handler_, &job_context, table_cache_,
674
+ &event_logger, false, false, dbname_, &compaction_job_stats_,
675
+ Env::Priority::USER, nullptr /* IOTracer */,
676
676
  /*manual_compaction_canceled=*/kManualCompactionCanceledFalse,
677
677
  env_->GenerateUniqueId(), DBImpl::GenerateDbSessionId(nullptr),
678
678
  full_history_ts_low_);
679
679
  VerifyInitializationOfCompactionJobStats(compaction_job_stats_);
680
680
 
681
- compaction_job.Prepare();
681
+ compaction_job.Prepare(std::nullopt /*subcompact to be computed*/);
682
682
  mutex_.Unlock();
683
683
  Status s = compaction_job.Run();
684
684
  ASSERT_OK(s);
685
685
  ASSERT_OK(compaction_job.io_status());
686
686
  mutex_.Lock();
687
687
  bool compaction_released = false;
688
- ASSERT_OK(compaction_job.Install(*cfd->GetLatestMutableCFOptions(),
689
- &compaction_released));
688
+ ASSERT_OK(compaction_job.Install(&compaction_released));
690
689
  ASSERT_OK(compaction_job.io_status());
691
690
  mutex_.Unlock();
692
691
  log_buffer.FlushBufferToLog();
@@ -1476,7 +1475,7 @@ TEST_F(CompactionJobTest, OldestBlobFileNumber) {
1476
1475
  /* expected_oldest_blob_file_numbers */ {19});
1477
1476
  }
1478
1477
 
1479
- TEST_F(CompactionJobTest, VerifyPenultimateLevelOutput) {
1478
+ TEST_F(CompactionJobTest, VerifyProximalLevelOutput) {
1480
1479
  cf_options_.last_level_temperature = Temperature::kCold;
1481
1480
  SyncPoint::GetInstance()->SetCallBack(
1482
1481
  "Compaction::SupportsPerKeyPlacement:Enabled", [&](void* arg) {
@@ -1489,8 +1488,7 @@ TEST_F(CompactionJobTest, VerifyPenultimateLevelOutput) {
1489
1488
  SyncPoint::GetInstance()->SetCallBack(
1490
1489
  "CompactionIterator::PrepareOutput.context", [&](void* arg) {
1491
1490
  auto context = static_cast<PerKeyPlacementContext*>(arg);
1492
- context->output_to_penultimate_level =
1493
- context->seq_num > latest_cold_seq;
1491
+ context->output_to_proximal_level = context->seq_num > latest_cold_seq;
1494
1492
  });
1495
1493
  SyncPoint::GetInstance()->EnableProcessing();
1496
1494
 
@@ -1536,14 +1534,11 @@ TEST_F(CompactionJobTest, VerifyPenultimateLevelOutput) {
1536
1534
  /*verify_func=*/[&](Compaction& comp) {
1537
1535
  for (char c = 'a'; c <= 'z'; c++) {
1538
1536
  if (c == 'a') {
1539
- ParsedInternalKey pik("a", 0U, kTypeValue);
1540
- ASSERT_FALSE(comp.WithinPenultimateLevelOutputRange(pik));
1537
+ comp.TEST_AssertWithinProximalLevelOutputRange(
1538
+ "a", true /*expect_failure*/);
1541
1539
  } else {
1542
1540
  std::string c_str{c};
1543
- // WithinPenultimateLevelOutputRange checks internal key range.
1544
- // 'z' is the last key, so set seqno properly.
1545
- ParsedInternalKey pik(c_str, c == 'z' ? 12U : 0U, kTypeValue);
1546
- ASSERT_TRUE(comp.WithinPenultimateLevelOutputRange(pik));
1541
+ comp.TEST_AssertWithinProximalLevelOutputRange(c_str);
1547
1542
  }
1548
1543
  }
1549
1544
  });
@@ -1675,6 +1670,7 @@ TEST_F(CompactionJobTest, ResultSerialization) {
1675
1670
  UniqueId64x2 id{rnd64.Uniform(UINT64_MAX), rnd64.Uniform(UINT64_MAX)};
1676
1671
  result.output_files.emplace_back(
1677
1672
  rnd.RandomString(rnd.Uniform(kStrMaxLen)) /* file_name */,
1673
+ rnd64.Uniform(UINT64_MAX) /* file_size */,
1678
1674
  rnd64.Uniform(UINT64_MAX) /* smallest_seqno */,
1679
1675
  rnd64.Uniform(UINT64_MAX) /* largest_seqno */,
1680
1676
  rnd.RandomBinaryString(
@@ -1687,7 +1683,8 @@ TEST_F(CompactionJobTest, ResultSerialization) {
1687
1683
  file_checksum /* file_checksum */,
1688
1684
  file_checksum_func_name /* file_checksum_func_name */,
1689
1685
  rnd64.Uniform(UINT64_MAX) /* paranoid_hash */,
1690
- rnd.OneIn(2) /* marked_for_compaction */, id /* unique_id */, tp);
1686
+ rnd.OneIn(2) /* marked_for_compaction */, id /* unique_id */, tp,
1687
+ false /* is_proximal_level_output */, Temperature::kHot);
1691
1688
  }
1692
1689
  result.output_level = rnd.Uniform(10);
1693
1690
  result.output_path = rnd.RandomString(rnd.Uniform(kStrMaxLen));
@@ -1741,6 +1738,8 @@ TEST_F(CompactionJobTest, ResultSerialization) {
1741
1738
  ASSERT_EQ(deserialized_tmp.output_files[0].file_checksum, file_checksum);
1742
1739
  ASSERT_EQ(deserialized_tmp.output_files[0].file_checksum_func_name,
1743
1740
  file_checksum_func_name);
1741
+ ASSERT_EQ(deserialized_tmp.output_files[0].file_temperature,
1742
+ Temperature::kHot);
1744
1743
  }
1745
1744
 
1746
1745
  // Test unknown field
@@ -1900,8 +1899,8 @@ TEST_F(CompactionJobTest, CutToSkipGrandparentFile) {
1900
1899
  const std::vector<int> input_levels = {0, 1};
1901
1900
  auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
1902
1901
  auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
1903
- RunCompaction({lvl0_files, lvl1_files}, input_levels,
1904
- {expected_file1, expected_file2});
1902
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
1903
+ {expected_file1, expected_file2});
1905
1904
  }
1906
1905
 
1907
1906
  TEST_F(CompactionJobTest, CutToAlignGrandparentBoundary) {
@@ -1975,8 +1974,8 @@ TEST_F(CompactionJobTest, CutToAlignGrandparentBoundary) {
1975
1974
  const std::vector<int> input_levels = {0, 1};
1976
1975
  auto lvl0_files = cfd_->current()->storage_info()->LevelFiles(0);
1977
1976
  auto lvl1_files = cfd_->current()->storage_info()->LevelFiles(1);
1978
- RunCompaction({lvl0_files, lvl1_files}, input_levels,
1979
- {expected_file1, expected_file2});
1977
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
1978
+ {expected_file1, expected_file2});
1980
1979
  }
1981
1980
 
1982
1981
  TEST_F(CompactionJobTest, CutToAlignGrandparentBoundarySameKey) {
@@ -2037,8 +2036,8 @@ TEST_F(CompactionJobTest, CutToAlignGrandparentBoundarySameKey) {
2037
2036
  for (int i = 80; i <= 100; i++) {
2038
2037
  snapshots.emplace_back(i);
2039
2038
  }
2040
- RunCompaction({lvl0_files, lvl1_files}, input_levels,
2041
- {expected_file1, expected_file2}, snapshots);
2039
+ RunCompaction({lvl0_files, lvl1_files}, input_levels,
2040
+ {expected_file1, expected_file2}, std::move(snapshots));
2042
2041
  }
2043
2042
 
2044
2043
  TEST_F(CompactionJobTest, CutForMaxCompactionBytesSameKey) {
@@ -2097,7 +2096,8 @@ TEST_F(CompactionJobTest, CutForMaxCompactionBytesSameKey) {
2097
2096
  snapshots.emplace_back(i);
2098
2097
  }
2099
2098
  RunCompaction({lvl0_files, lvl1_files}, input_levels,
2100
- {expected_file1, expected_file2, expected_file3}, snapshots);
2099
+ {expected_file1, expected_file2, expected_file3},
2100
+ std::move(snapshots));
2101
2101
  }
2102
2102
 
2103
2103
  class CompactionJobTimestampTest : public CompactionJobTestBase {