@nxtedition/rocksdb 13.5.7 → 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 (509) hide show
  1. package/binding.cc +248 -70
  2. package/binding.gyp +2 -2
  3. package/deps/rocksdb/rocksdb/BUCK +12 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  5. package/deps/rocksdb/rocksdb/Makefile +28 -23
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  7. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  15. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  16. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  18. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  26. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  27. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  28. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  29. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  31. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  32. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  33. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  57. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  59. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  60. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  61. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  62. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  63. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  64. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  65. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  66. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  67. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  68. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  69. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  70. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  71. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  73. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  86. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  87. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  88. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  89. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  90. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  91. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  92. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  93. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  94. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  95. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  96. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  97. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  98. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  99. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  100. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  101. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  102. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  104. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  105. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  106. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  107. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  108. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  109. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  110. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  111. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  112. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  113. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  114. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  115. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  116. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  117. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  118. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  119. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  120. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  124. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  125. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  126. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  127. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  129. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  130. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  131. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  132. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  133. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  134. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  135. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  136. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  137. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  138. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  139. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  140. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  141. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  142. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  143. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  144. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  145. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  146. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  147. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  148. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  149. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  150. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  153. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  154. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  155. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  156. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  157. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  158. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  160. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  161. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  163. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  164. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  165. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  166. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  168. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  169. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  170. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  171. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  172. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  173. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  174. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  175. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  176. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  177. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  178. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  180. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  181. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  182. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  191. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  193. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  194. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  195. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  196. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  198. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  199. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  200. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  201. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  202. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  204. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  205. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  206. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  207. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  210. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  212. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  213. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  214. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  215. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  218. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  220. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  221. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  224. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  226. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  228. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  229. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  230. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  232. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  234. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  235. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  238. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  241. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  242. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  243. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  245. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  247. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  249. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  253. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  254. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  256. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  257. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  258. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  260. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  269. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  270. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  276. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  277. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  278. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  279. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  281. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  283. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  284. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  285. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  286. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  288. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  289. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  290. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  291. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  292. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  293. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  294. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  295. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  296. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  297. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  298. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  299. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  300. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  301. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  302. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  303. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  304. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  305. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  306. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  307. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  308. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  309. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  310. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  311. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  312. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  314. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  315. package/deps/rocksdb/rocksdb/src.mk +17 -11
  316. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  325. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  327. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  328. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  329. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  330. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  334. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  335. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  338. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  340. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  342. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  343. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  345. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  349. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  350. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  351. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  352. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  353. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  354. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  356. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  357. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  362. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  364. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  366. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  367. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  368. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  369. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  370. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  371. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  372. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  374. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  376. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  377. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  380. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  381. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  382. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  384. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  385. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  386. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  388. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  391. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  393. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  395. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  396. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  397. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  398. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  399. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  400. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  401. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  402. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  403. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  404. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  405. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  406. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  408. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  409. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  410. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  411. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  412. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  413. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  414. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  416. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  426. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  428. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  430. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  433. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  435. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  436. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  437. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  439. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  442. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  443. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  458. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  464. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  467. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  468. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  479. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  482. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  485. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  486. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  499. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  500. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  504. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  505. package/deps/rocksdb/rocksdb.gyp +9 -4
  506. package/index.js +50 -9
  507. package/package.json +8 -1
  508. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  509. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -34,6 +34,7 @@
34
34
  #include "table/two_level_iterator.h"
35
35
  #include "trace_replay/block_cache_tracer.h"
36
36
  #include "util/atomic.h"
37
+ #include "util/cast_util.h"
37
38
  #include "util/coro_utils.h"
38
39
  #include "util/hash_containers.h"
39
40
 
@@ -105,6 +106,7 @@ class BlockBasedTable : public TableReader {
105
106
  std::shared_ptr<CacheReservationManager> table_reader_cache_res_mgr =
106
107
  nullptr,
107
108
  const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
109
+ UnownedPtr<CompressionManager> compression_manager = nullptr,
108
110
  bool prefetch_index_and_filter_in_cache = true, bool skip_filters = false,
109
111
  int level = -1, const bool immortal_table = false,
110
112
  const SequenceNumber largest_seqno = 0,
@@ -364,7 +366,7 @@ class BlockBasedTable : public TableReader {
364
366
  template <typename TBlocklike>
365
367
  WithBlocklikeCheck<Status, TBlocklike> MaybeReadBlockAndLoadToCache(
366
368
  FilePrefetchBuffer* prefetch_buffer, const ReadOptions& ro,
367
- const BlockHandle& handle, const UncompressionDict& uncompression_dict,
369
+ const BlockHandle& handle, UnownedPtr<Decompressor> decomp,
368
370
  bool for_compaction, CachableEntry<TBlocklike>* block_entry,
369
371
  GetContext* get_context, BlockCacheLookupContext* lookup_context,
370
372
  BlockContents* contents, bool async_read,
@@ -376,7 +378,7 @@ class BlockBasedTable : public TableReader {
376
378
  template <typename TBlocklike>
377
379
  WithBlocklikeCheck<Status, TBlocklike> RetrieveBlock(
378
380
  FilePrefetchBuffer* prefetch_buffer, const ReadOptions& ro,
379
- const BlockHandle& handle, const UncompressionDict& uncompression_dict,
381
+ const BlockHandle& handle, UnownedPtr<Decompressor> decomp,
380
382
  CachableEntry<TBlocklike>* block_entry, GetContext* get_context,
381
383
  BlockCacheLookupContext* lookup_context, bool for_compaction,
382
384
  bool use_cache, bool async_read, bool use_block_cache_for_lookup) const;
@@ -397,7 +399,7 @@ class BlockBasedTable : public TableReader {
397
399
  const MultiGetRange* batch,
398
400
  const autovector<BlockHandle, MultiGetContext::MAX_BATCH_SIZE>* handles,
399
401
  Status* statuses, CachableEntry<Block_kData>* results, char* scratch,
400
- const UncompressionDict& uncompression_dict, bool use_fs_scratch);
402
+ UnownedPtr<Decompressor> decomp, bool use_fs_scratch);
401
403
 
402
404
  // Get the iterator from the index reader.
403
405
  //
@@ -429,7 +431,7 @@ class BlockBasedTable : public TableReader {
429
431
  WithBlocklikeCheck<Status, TBlocklike> GetDataBlockFromCache(
430
432
  const Slice& cache_key, BlockCacheInterface<TBlocklike> block_cache,
431
433
  CachableEntry<TBlocklike>* block, GetContext* get_context,
432
- const UncompressionDict* dict) const;
434
+ UnownedPtr<Decompressor> decomp) const;
433
435
 
434
436
  // Put a maybe compressed block to the corresponding block caches.
435
437
  // This method will perform decompression against block_contents if needed
@@ -447,8 +449,7 @@ class BlockBasedTable : public TableReader {
447
449
  CachableEntry<TBlocklike>* cached_block,
448
450
  BlockContents&& uncompressed_block_contents,
449
451
  BlockContents&& compressed_block_contents,
450
- CompressionType block_comp_type,
451
- const UncompressionDict& uncompression_dict,
452
+ CompressionType block_comp_type, UnownedPtr<Decompressor> decomp,
452
453
  MemoryAllocator* memory_allocator, GetContext* get_context) const;
453
454
 
454
455
  // Calls (*handle_result)(arg, ...) repeatedly, starting with the entry found
@@ -650,9 +651,11 @@ struct BlockBasedTable::Rep {
650
651
  Slice min_timestamp;
651
652
  Slice max_timestamp;
652
653
 
653
- // If false, blocks in this file are definitely all uncompressed. Knowing this
654
- // before reading individual blocks enables certain optimizations.
655
- bool blocks_maybe_compressed = true;
654
+ // If blocks might be compressed, refers to a decompressor that can decompress
655
+ // them. (nullptr -> no blocks compressed) However, if (data) blocks are
656
+ // dictionary compressed, a dictionary-aware decompressor is needed, which
657
+ // might live in the block cache.
658
+ std::shared_ptr<Decompressor> decompressor;
656
659
 
657
660
  // These describe how index is encoded.
658
661
  bool index_has_first_key = false;
@@ -60,34 +60,33 @@ TBlockIter* BlockBasedTable::NewDataBlockIterator(
60
60
  }
61
61
 
62
62
  CachableEntry<Block> block;
63
- if (rep_->uncompression_dict_reader && block_type == BlockType::kData) {
64
- CachableEntry<UncompressionDict> uncompression_dict;
65
- // For async scans, don't use the prefetch buffer since an async prefetch
66
- // might already be under way and this would invalidate it. Also, the
67
- // uncompression dict is typically at the end of the file and would
68
- // most likely break the sequentiality of the access pattern.
69
- // Same is with auto_readahead_size. It iterates over index to lookup for
70
- // data blocks. And this could break the the sequentiality of the access
71
- // pattern.
72
- s = rep_->uncompression_dict_reader->GetOrReadUncompressionDictionary(
73
- ((ro.async_io || ro.auto_readahead_size) ? nullptr : prefetch_buffer),
74
- ro, get_context, lookup_context, &uncompression_dict);
75
- if (!s.ok()) {
76
- iter->Invalidate(s);
77
- return iter;
63
+ {
64
+ CachableEntry<DecompressorDict> dict;
65
+ Decompressor* decomp = rep_->decompressor.get();
66
+ if (rep_->uncompression_dict_reader && block_type == BlockType::kData) {
67
+ // For async scans, don't use the prefetch buffer since an async prefetch
68
+ // might already be under way and this would invalidate it. Also, the
69
+ // uncompression dict is typically at the end of the file and would
70
+ // most likely break the sequentiality of the access pattern.
71
+ // Same is with auto_readahead_size. It iterates over index to lookup for
72
+ // data blocks. And this could break the the sequentiality of the access
73
+ // pattern.
74
+ s = rep_->uncompression_dict_reader->GetOrReadUncompressionDictionary(
75
+ ((ro.async_io || ro.auto_readahead_size) ? nullptr : prefetch_buffer),
76
+ ro, get_context, lookup_context, &dict);
77
+ if (!s.ok()) {
78
+ iter->Invalidate(s);
79
+ return iter;
80
+ }
81
+ assert(dict.GetValue());
82
+ if (dict.GetValue()) {
83
+ decomp = dict.GetValue()->decompressor_.get();
84
+ }
78
85
  }
79
- const UncompressionDict& dict = uncompression_dict.GetValue()
80
- ? *uncompression_dict.GetValue()
81
- : UncompressionDict::GetEmptyDict();
82
86
  s = RetrieveBlock(
83
- prefetch_buffer, ro, handle, dict, &block.As<IterBlocklike>(),
87
+ prefetch_buffer, ro, handle, decomp, &block.As<IterBlocklike>(),
84
88
  get_context, lookup_context, for_compaction,
85
89
  /* use_cache */ true, async_read, use_block_cache_for_lookup);
86
- } else {
87
- s = RetrieveBlock(
88
- prefetch_buffer, ro, handle, UncompressionDict::GetEmptyDict(),
89
- &block.As<IterBlocklike>(), get_context, lookup_context, for_compaction,
90
- /* use_cache */ true, async_read, use_block_cache_for_lookup);
91
90
  }
92
91
 
93
92
  if (s.IsTryAgain() && async_read) {
@@ -33,7 +33,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
33
33
  (const ReadOptions& options, const MultiGetRange* batch,
34
34
  const autovector<BlockHandle, MultiGetContext::MAX_BATCH_SIZE>* handles,
35
35
  Status* statuses, CachableEntry<Block_kData>* results, char* scratch,
36
- const UncompressionDict& uncompression_dict, bool use_fs_scratch) const {
36
+ UnownedPtr<Decompressor> decomp, bool use_fs_scratch) const {
37
37
  RandomAccessFileReader* file = rep_->file.get();
38
38
  const Footer& footer = rep_->footer;
39
39
  const ImmutableOptions& ioptions = rep_->ioptions;
@@ -51,7 +51,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
51
51
 
52
52
  // XXX: use_cache=true means double cache query?
53
53
  statuses[idx_in_batch] = RetrieveBlock(
54
- nullptr, options, handle, uncompression_dict,
54
+ nullptr, options, handle, decomp,
55
55
  &results[idx_in_batch].As<Block_kData>(), mget_iter->get_context,
56
56
  /* lookup_context */ nullptr,
57
57
  /* for_compaction */ false, /* use_cache */ true,
@@ -138,17 +138,18 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
138
138
  AlignedBuf direct_io_buf;
139
139
  {
140
140
  IOOptions opts;
141
- IOStatus s = file->PrepareIOOptions(options, opts);
141
+ IODebugContext dbg;
142
+ IOStatus s = file->PrepareIOOptions(options, opts, &dbg);
142
143
  if (s.ok()) {
143
144
  #if defined(WITH_COROUTINES)
144
145
  if (file->use_direct_io()) {
145
146
  #endif // WITH_COROUTINES
146
147
  s = file->MultiRead(opts, &read_reqs[0], read_reqs.size(),
147
- &direct_io_buf);
148
+ &direct_io_buf, &dbg);
148
149
  #if defined(WITH_COROUTINES)
149
150
  } else {
150
151
  co_await batch->context()->reader().MultiReadAsync(
151
- file, opts, &read_reqs[0], read_reqs.size(), &direct_io_buf);
152
+ file, opts, &read_reqs[0], read_reqs.size(), &direct_io_buf, &dbg);
152
153
  }
153
154
  #endif // WITH_COROUTINES
154
155
  }
@@ -240,10 +241,11 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
240
241
  // its not a memory mapped file
241
242
  Slice result;
242
243
  IOOptions opts;
243
- IOStatus io_s = file->PrepareIOOptions(options, opts);
244
+ IODebugContext dbg;
245
+ IOStatus io_s = file->PrepareIOOptions(options, opts, &dbg);
244
246
  opts.verify_and_reconstruct_read = true;
245
247
  io_s = file->Read(opts, handle.offset(), BlockSizeWithTrailer(handle),
246
- &result, const_cast<char*>(data), nullptr);
248
+ &result, const_cast<char*>(data), nullptr, &dbg);
247
249
  if (io_s.ok()) {
248
250
  assert(result.data() == data);
249
251
  assert(result.size() == BlockSizeWithTrailer(handle));
@@ -298,7 +300,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
298
300
  // necessary. Since we're passing the serialized block contents, it
299
301
  // will avoid looking up the block cache
300
302
  s = MaybeReadBlockAndLoadToCache(
301
- nullptr, options, handle, uncompression_dict,
303
+ nullptr, options, handle, decomp,
302
304
  /*for_compaction=*/false, block_entry, mget_iter->get_context,
303
305
  /*lookup_context=*/nullptr, &serialized_block,
304
306
  /*async_read=*/false, /*use_block_cache_for_lookup=*/true);
@@ -320,11 +322,9 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
320
322
  GetBlockCompressionType(serialized_block);
321
323
  BlockContents contents;
322
324
  if (compression_type != kNoCompression) {
323
- UncompressionContext context(compression_type);
324
- UncompressionInfo info(context, uncompression_dict, compression_type);
325
- s = UncompressSerializedBlock(
326
- info, req.result.data() + req_offset, handle.size(), &contents,
327
- footer.format_version(), rep_->ioptions, memory_allocator);
325
+ s = DecompressSerializedBlock(
326
+ req.result.data() + req_offset, handle.size(), compression_type,
327
+ *decomp, &contents, rep_->ioptions, memory_allocator);
328
328
  } else {
329
329
  // There are two cases here:
330
330
  // 1) caller uses the shared buffer (scratch or direct io buffer);
@@ -421,10 +421,10 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
421
421
  {
422
422
  MultiGetRange data_block_range(sst_file_range, sst_file_range.begin(),
423
423
  sst_file_range.end());
424
- CachableEntry<UncompressionDict> uncompression_dict;
425
- Status uncompression_dict_status;
426
- uncompression_dict_status.PermitUncheckedError();
427
- bool uncompression_dict_inited = false;
424
+ CachableEntry<DecompressorDict> dict;
425
+ Status dict_status;
426
+ dict_status.PermitUncheckedError();
427
+ bool dict_inited = false;
428
428
  size_t total_len = 0;
429
429
 
430
430
  // GetContext for any key will do, as the stats will be aggregated
@@ -466,26 +466,26 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
466
466
  continue;
467
467
  }
468
468
 
469
- if (!uncompression_dict_inited && rep_->uncompression_dict_reader) {
470
- uncompression_dict_status =
471
- rep_->uncompression_dict_reader
472
- ->GetOrReadUncompressionDictionary(
473
- nullptr /* prefetch_buffer */, read_options,
474
- get_context, &metadata_lookup_context,
475
- &uncompression_dict);
476
- uncompression_dict_inited = true;
469
+ if (!dict_inited && rep_->uncompression_dict_reader) {
470
+ dict_status = rep_->uncompression_dict_reader
471
+ ->GetOrReadUncompressionDictionary(
472
+ nullptr /* prefetch_buffer */, read_options,
473
+ get_context, &metadata_lookup_context, &dict);
474
+ dict_inited = true;
477
475
  }
478
476
 
479
- if (!uncompression_dict_status.ok()) {
480
- assert(!uncompression_dict_status.IsNotFound());
481
- *(miter->s) = uncompression_dict_status;
477
+ if (!dict_status.ok()) {
478
+ assert(!dict_status.IsNotFound());
479
+ *(miter->s) = dict_status;
482
480
  data_block_range.SkipKey(miter);
483
481
  sst_file_range.SkipKey(miter);
484
482
  continue;
483
+ } else {
484
+ assert(!dict_inited || dict.GetValue() != nullptr);
485
+ }
486
+ if (dict.GetValue()) {
487
+ create_ctx.decompressor = dict.GetValue()->decompressor_.get();
485
488
  }
486
- create_ctx.dict = uncompression_dict.GetValue()
487
- ? uncompression_dict.GetValue()
488
- : &UncompressionDict::GetEmptyDict();
489
489
 
490
490
  if (v.handle.offset() == prev_offset) {
491
491
  // This key can reuse the previous block (later on).
@@ -565,11 +565,8 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
565
565
  if (total_len) {
566
566
  char* scratch = nullptr;
567
567
  bool use_fs_scratch = false;
568
- const UncompressionDict& dict = uncompression_dict.GetValue()
569
- ? *uncompression_dict.GetValue()
570
- : UncompressionDict::GetEmptyDict();
571
- assert(uncompression_dict_inited || !rep_->uncompression_dict_reader);
572
- assert(uncompression_dict_status.ok());
568
+ assert(dict_inited || !rep_->uncompression_dict_reader);
569
+ assert(dict_status.ok());
573
570
 
574
571
  if (!rep_->file->use_direct_io()) {
575
572
  if (CheckFSFeatureSupport(rep_->ioptions.fs.get(),
@@ -589,7 +586,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
589
586
  // 3. If blocks are compressed and no compressed block cache, use
590
587
  // stack buf
591
588
  if (!use_fs_scratch && !rep_->file->use_direct_io() &&
592
- rep_->blocks_maybe_compressed) {
589
+ rep_->decompressor) {
593
590
  if (total_len <= kMultiGetReadStackBufSize) {
594
591
  scratch = stack_buf;
595
592
  } else {
@@ -599,7 +596,10 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
599
596
  }
600
597
  CO_AWAIT(RetrieveMultipleBlocks)
601
598
  (read_options, &data_block_range, &block_handles, &statuses[0],
602
- &results[0], scratch, dict, use_fs_scratch);
599
+ &results[0], scratch,
600
+ dict.GetValue() ? dict.GetValue()->decompressor_.get()
601
+ : rep_->decompressor.get(),
602
+ use_fs_scratch);
603
603
  if (get_context) {
604
604
  ++(get_context->get_context_stats_.num_sst_read);
605
605
  }
@@ -163,10 +163,11 @@ class BlockBasedTableReaderBaseTest : public testing::Test {
163
163
  bool user_defined_timestamps_persisted = true) {
164
164
  const MutableCFOptions moptions(options_);
165
165
  TableReaderOptions table_reader_options = TableReaderOptions(
166
- ioptions, moptions.prefix_extractor, foptions, comparator,
167
- 0 /* block_protection_bytes_per_key */, false /* _skip_filters */,
168
- false /* _immortal */, false /* _force_direct_prefetch */,
169
- -1 /* _level */, nullptr /* _block_cache_tracer */,
166
+ ioptions, moptions.prefix_extractor, moptions.compression_manager.get(),
167
+ foptions, comparator, 0 /* block_protection_bytes_per_key */,
168
+ false /* _skip_filters */, false /* _immortal */,
169
+ false /* _force_direct_prefetch */, -1 /* _level */,
170
+ nullptr /* _block_cache_tracer */,
170
171
  0 /* _max_file_size_for_l0_meta_pin */, "" /* _cur_db_session_id */,
171
172
  0 /* _cur_file_num */, {} /* _unique_id */, 0 /* _largest_seqno */,
172
173
  0 /* _tail_size */, user_defined_timestamps_persisted);
@@ -190,6 +191,8 @@ class BlockBasedTableReaderBaseTest : public testing::Test {
190
191
 
191
192
  if (status) {
192
193
  *status = s;
194
+ } else {
195
+ ASSERT_OK(s);
193
196
  }
194
197
  }
195
198
 
@@ -52,10 +52,10 @@ void BlockCreateContext::Create(
52
52
  table_options->filter_policy.get(), std::move(block)));
53
53
  }
54
54
 
55
- void BlockCreateContext::Create(std::unique_ptr<UncompressionDict>* parsed_out,
55
+ void BlockCreateContext::Create(std::unique_ptr<DecompressorDict>* parsed_out,
56
56
  BlockContents&& block) {
57
- parsed_out->reset(new UncompressionDict(
58
- block.data, std::move(block.allocation), using_zstd));
57
+ parsed_out->reset(new DecompressorDict(
58
+ block.data, std::move(block.allocation), *decompressor));
59
59
  }
60
60
 
61
61
  namespace {
@@ -69,7 +69,7 @@ const std::array<const Cache::CacheItemHelper*,
69
69
  BlockCacheInterface<ParsedFullFilterBlock>::GetFullHelper(),
70
70
  BlockCacheInterface<Block_kFilterPartitionIndex>::GetFullHelper(),
71
71
  nullptr, // kProperties
72
- BlockCacheInterface<UncompressionDict>::GetFullHelper(),
72
+ BlockCacheInterface<DecompressorDict>::GetFullHelper(),
73
73
  BlockCacheInterface<Block_kRangeDeletion>::GetFullHelper(),
74
74
  nullptr, // kHashIndexPrefixes
75
75
  nullptr, // kHashIndexMetadata
@@ -86,7 +86,7 @@ const std::array<const Cache::CacheItemHelper*,
86
86
  BlockCacheInterface<ParsedFullFilterBlock>::GetBasicHelper(),
87
87
  BlockCacheInterface<Block_kFilterPartitionIndex>::GetBasicHelper(),
88
88
  nullptr, // kProperties
89
- BlockCacheInterface<UncompressionDict>::GetBasicHelper(),
89
+ BlockCacheInterface<DecompressorDict>::GetBasicHelper(),
90
90
  BlockCacheInterface<Block_kRangeDeletion>::GetBasicHelper(),
91
91
  nullptr, // kHashIndexPrefixes
92
92
  nullptr, // kHashIndexMetadata
@@ -71,15 +71,16 @@ struct BlockCreateContext : public Cache::CreateContext {
71
71
  BlockCreateContext() {}
72
72
  BlockCreateContext(const BlockBasedTableOptions* _table_options,
73
73
  const ImmutableOptions* _ioptions, Statistics* _statistics,
74
- bool _using_zstd, uint8_t _protection_bytes_per_key,
74
+ Decompressor* _decompressor,
75
+ uint8_t _protection_bytes_per_key,
75
76
  const Comparator* _raw_ucmp,
76
77
  bool _index_value_is_full = false,
77
78
  bool _index_has_first_key = false)
78
79
  : table_options(_table_options),
79
80
  ioptions(_ioptions),
80
81
  statistics(_statistics),
82
+ decompressor(_decompressor),
81
83
  raw_ucmp(_raw_ucmp),
82
- using_zstd(_using_zstd),
83
84
  protection_bytes_per_key(_protection_bytes_per_key),
84
85
  index_value_is_full(_index_value_is_full),
85
86
  index_has_first_key(_index_has_first_key) {}
@@ -87,10 +88,9 @@ struct BlockCreateContext : public Cache::CreateContext {
87
88
  const BlockBasedTableOptions* table_options = nullptr;
88
89
  const ImmutableOptions* ioptions = nullptr;
89
90
  Statistics* statistics = nullptr;
91
+ // TODO: refactor to avoid copying BlockCreateContext for dict in block cache
92
+ Decompressor* decompressor = nullptr;
90
93
  const Comparator* raw_ucmp = nullptr;
91
- const UncompressionDict* dict = nullptr;
92
- uint32_t format_version;
93
- bool using_zstd = false;
94
94
  uint8_t protection_bytes_per_key = 0;
95
95
  bool index_value_is_full;
96
96
  bool index_has_first_key;
@@ -102,12 +102,10 @@ struct BlockCreateContext : public Cache::CreateContext {
102
102
  CompressionType type, MemoryAllocator* alloc) {
103
103
  BlockContents uncompressed_block_contents;
104
104
  if (type != CompressionType::kNoCompression) {
105
- assert(dict != nullptr);
106
- UncompressionContext context(type);
107
- UncompressionInfo info(context, *dict, type);
108
- Status s = UncompressBlockData(
109
- info, data.data(), data.size(), &uncompressed_block_contents,
110
- table_options->format_version, *ioptions, alloc);
105
+ assert(decompressor != nullptr);
106
+ Status s =
107
+ DecompressBlockData(data.data(), data.size(), type, *decompressor,
108
+ &uncompressed_block_contents, *ioptions, alloc);
111
109
  if (!s.ok()) {
112
110
  parsed_out->reset();
113
111
  return;
@@ -130,7 +128,7 @@ struct BlockCreateContext : public Cache::CreateContext {
130
128
  BlockContents&& block);
131
129
  void Create(std::unique_ptr<ParsedFullFilterBlock>* parsed_out,
132
130
  BlockContents&& block);
133
- void Create(std::unique_ptr<UncompressionDict>* parsed_out,
131
+ void Create(std::unique_ptr<DecompressorDict>* parsed_out,
134
132
  BlockContents&& block);
135
133
  };
136
134
 
@@ -39,7 +39,8 @@ void BlockPrefetcher::PrefetchIfNeeded(
39
39
  return;
40
40
  }
41
41
  IOOptions opts;
42
- Status s = rep->file->PrepareIOOptions(read_options, opts);
42
+ IODebugContext dbg;
43
+ Status s = rep->file->PrepareIOOptions(read_options, opts, &dbg);
43
44
  if (!s.ok()) {
44
45
  return;
45
46
  }
@@ -58,9 +59,10 @@ void BlockPrefetcher::PrefetchIfNeeded(
58
59
  // implicit_auto_readahead is set.
59
60
  readahead_params.initial_readahead_size = compaction_readahead_size_;
60
61
  readahead_params.max_readahead_size = compaction_readahead_size_;
61
- rep->CreateFilePrefetchBufferIfNotExists(readahead_params,
62
- &prefetch_buffer_,
63
- /*readaheadsize_cb=*/nullptr);
62
+ rep->CreateFilePrefetchBufferIfNotExists(
63
+ readahead_params, &prefetch_buffer_,
64
+ /*readaheadsize_cb=*/nullptr,
65
+ /*usage=*/FilePrefetchBufferUsage::kCompactionPrefetch);
64
66
  return;
65
67
  }
66
68
 
@@ -833,6 +833,19 @@ class BlockPerKVChecksumTest : public DBTestBase {
833
833
  }
834
834
  };
835
835
 
836
+ namespace {
837
+ const BlockBasedTableOptions *kTableOptions() {
838
+ static BlockBasedTableOptions opts{};
839
+ return &opts;
840
+ }
841
+ Decompressor *kDecompressor() {
842
+ static auto mgr = GetBuiltinCompressionManager(
843
+ GetCompressFormatForVersion(kTableOptions()->format_version));
844
+ static auto decomp = mgr->GetDecompressor();
845
+ return decomp.get();
846
+ }
847
+ } // namespace
848
+
836
849
  TEST_F(BlockPerKVChecksumTest, EmptyBlock) {
837
850
  // Tests that empty block code path is not broken by per kv checksum.
838
851
  BlockBuilder builder(
@@ -845,14 +858,11 @@ TEST_F(BlockPerKVChecksumTest, EmptyBlock) {
845
858
 
846
859
  std::unique_ptr<Block_kData> data_block;
847
860
  Options options = Options();
848
- BlockBasedTableOptions tbo;
849
861
  uint8_t protection_bytes_per_key = 8;
850
- BlockCreateContext create_context{&tbo,
851
- nullptr,
852
- nullptr /* statistics */,
853
- false /* using_zstd */,
854
- protection_bytes_per_key,
855
- options.comparator};
862
+ BlockCreateContext create_context{
863
+ kTableOptions(), nullptr,
864
+ nullptr /* statistics */, kDecompressor(),
865
+ protection_bytes_per_key, options.comparator};
856
866
  create_context.Create(&data_block, std::move(contents));
857
867
  std::unique_ptr<DataBlockIter> biter{data_block->NewDataIterator(
858
868
  options.comparator, kDisableGlobalSequenceNumber)};
@@ -885,14 +895,10 @@ TEST_F(BlockPerKVChecksumTest, InitializeProtectionInfo) {
885
895
  // Make sure that the checksum construction code path does not break
886
896
  // when the block is itself already corrupted.
887
897
  Options options = Options();
888
- BlockBasedTableOptions tbo;
889
898
  uint8_t protection_bytes_per_key = 8;
890
- BlockCreateContext create_context{&tbo,
891
- nullptr /* ioptions */,
892
- nullptr /* statistics */,
893
- false /* using_zstd */,
894
- protection_bytes_per_key,
895
- options.comparator};
899
+ BlockCreateContext create_context{
900
+ kTableOptions(), nullptr /* ioptions */, nullptr /* statistics */,
901
+ kDecompressor(), protection_bytes_per_key, options.comparator};
896
902
 
897
903
  {
898
904
  std::string invalid_content = "1";
@@ -950,20 +956,19 @@ TEST_F(BlockPerKVChecksumTest, ApproximateMemory) {
950
956
  };
951
957
 
952
958
  Options options = Options();
953
- BlockBasedTableOptions tbo;
954
959
  uint8_t protection_bytes_per_key = 8;
955
960
  BlockCreateContext with_checksum_create_context{
956
- &tbo,
961
+ kTableOptions(),
957
962
  nullptr /* ioptions */,
958
963
  nullptr /* statistics */,
959
- false /* using_zstd */,
964
+ kDecompressor(),
960
965
  protection_bytes_per_key,
961
966
  options.comparator,
962
967
  true /* index_value_is_full */};
963
- BlockCreateContext create_context{&tbo,
968
+ BlockCreateContext create_context{kTableOptions(),
964
969
  nullptr /* ioptions */,
965
970
  nullptr /* statistics */,
966
- false /* using_zstd */,
971
+ kDecompressor(),
967
972
  0,
968
973
  options.comparator,
969
974
  true /* index_value_is_full */};
@@ -1054,13 +1059,9 @@ class DataBlockKVChecksumTest
1054
1059
  std::unique_ptr<Block_kData> GenerateDataBlock(
1055
1060
  std::vector<std::string> &keys, std::vector<std::string> &values,
1056
1061
  int num_record) {
1057
- BlockBasedTableOptions tbo;
1058
- BlockCreateContext create_context{&tbo,
1059
- nullptr /* statistics */,
1060
- nullptr /* ioptions */,
1061
- false /* using_zstd */,
1062
- GetChecksumLen(),
1063
- Options().comparator};
1062
+ BlockCreateContext create_context{
1063
+ kTableOptions(), nullptr /* statistics */, nullptr /* ioptions */,
1064
+ kDecompressor(), GetChecksumLen(), Options().comparator};
1064
1065
  builder_ = std::make_unique<BlockBuilder>(
1065
1066
  static_cast<int>(GetRestartInterval()),
1066
1067
  GetUseDeltaEncoding() /* use_delta_encoding */,
@@ -1181,13 +1182,12 @@ class IndexBlockKVChecksumTest
1181
1182
  std::vector<BlockHandle> &block_handles,
1182
1183
  std::vector<std::string> &first_keys, int num_record) {
1183
1184
  Options options = Options();
1184
- BlockBasedTableOptions tbo;
1185
1185
  uint8_t protection_bytes_per_key = GetChecksumLen();
1186
1186
  BlockCreateContext create_context{
1187
- &tbo,
1187
+ kTableOptions(),
1188
1188
  nullptr /* ioptions */,
1189
1189
  nullptr /* statistics */,
1190
- false /* _using_zstd */,
1190
+ kDecompressor(),
1191
1191
  protection_bytes_per_key,
1192
1192
  options.comparator,
1193
1193
  !UseValueDeltaEncoding() /* value_is_full */,
@@ -1324,14 +1324,10 @@ class MetaIndexBlockKVChecksumTest
1324
1324
  std::vector<std::string> &keys, std::vector<std::string> &values,
1325
1325
  int num_record) {
1326
1326
  Options options = Options();
1327
- BlockBasedTableOptions tbo;
1328
1327
  uint8_t protection_bytes_per_key = GetChecksumLen();
1329
- BlockCreateContext create_context{&tbo,
1330
- nullptr /* ioptions */,
1331
- nullptr /* statistics */,
1332
- false /* using_zstd */,
1333
- protection_bytes_per_key,
1334
- options.comparator};
1328
+ BlockCreateContext create_context{
1329
+ kTableOptions(), nullptr /* ioptions */, nullptr /* statistics */,
1330
+ kDecompressor(), protection_bytes_per_key, options.comparator};
1335
1331
  builder_ =
1336
1332
  std::make_unique<BlockBuilder>(static_cast<int>(GetRestartInterval()));
1337
1333
  // add a bunch of records to a block
@@ -1359,14 +1355,10 @@ INSTANTIATE_TEST_CASE_P(P, MetaIndexBlockKVChecksumTest,
1359
1355
 
1360
1356
  TEST_P(MetaIndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
1361
1357
  Options options = Options();
1362
- BlockBasedTableOptions tbo;
1363
1358
  uint8_t protection_bytes_per_key = GetChecksumLen();
1364
- BlockCreateContext create_context{&tbo,
1365
- nullptr /* ioptions */,
1366
- nullptr /* statistics */,
1367
- false /* using_zstd */,
1368
- protection_bytes_per_key,
1369
- options.comparator};
1359
+ BlockCreateContext create_context{
1360
+ kTableOptions(), nullptr /* ioptions */, nullptr /* statistics */,
1361
+ kDecompressor(), protection_bytes_per_key, options.comparator};
1370
1362
  std::vector<int> num_restart_intervals = {1, 16};
1371
1363
  for (const auto num_restart_interval : num_restart_intervals) {
1372
1364
  const int kNumRecords = num_restart_interval * GetRestartInterval();
@@ -582,7 +582,8 @@ void TestBoundary(InternalKey& ik1, std::string& v1, InternalKey& ik2,
582
582
  const bool kSkipFilters = true;
583
583
  const bool kImmortal = true;
584
584
  ASSERT_OK(moptions.table_factory->NewTableReader(
585
- TableReaderOptions(ioptions, moptions.prefix_extractor, soptions,
585
+ TableReaderOptions(ioptions, moptions.prefix_extractor,
586
+ nullptr /* compression_manager */, soptions,
586
587
  internal_comparator,
587
588
  0 /* block_protection_bytes_per_key */, !kSkipFilters,
588
589
  !kImmortal, level_),
@@ -64,7 +64,7 @@ class FilterBlockBuilder {
64
64
  virtual void AddWithPrevKey(const Slice& key_without_ts,
65
65
  const Slice& /*prev_key_without_ts*/) = 0;
66
66
 
67
- virtual bool IsEmpty() const = 0; // Empty == none added
67
+ virtual bool IsEmpty() const = 0; // Empty == none added
68
68
  // For reporting stats on how many entries the builder considered unique
69
69
  virtual size_t EstimateEntriesAdded() = 0;
70
70
 
@@ -30,8 +30,7 @@ Status FilterBlockReaderCommon<TBlocklike>::ReadFilterBlock(
30
30
 
31
31
  const Status s = table->RetrieveBlock(
32
32
  prefetch_buffer, read_options, rep->filter_handle,
33
- UncompressionDict::GetEmptyDict(), filter_block, get_context,
34
- lookup_context,
33
+ /* decomp */ nullptr, filter_block, get_context, lookup_context,
35
34
  /* for_compaction */ false, use_cache,
36
35
  /* async_read */ false, /* use_block_cache_for_lookup */ true);
37
36
 
@@ -1410,10 +1410,6 @@ bool BuiltinFilterPolicy::IsInstanceOf(const std::string& name) const {
1410
1410
 
1411
1411
  static const char* kBuiltinFilterMetadataName = "rocksdb.BuiltinBloomFilter";
1412
1412
 
1413
- const char* BuiltinFilterPolicy::kCompatibilityName() {
1414
- return kBuiltinFilterMetadataName;
1415
- }
1416
-
1417
1413
  const char* BuiltinFilterPolicy::CompatibilityName() const {
1418
1414
  return kBuiltinFilterMetadataName;
1419
1415
  }
@@ -149,7 +149,6 @@ class BuiltinFilterPolicy : public FilterPolicy {
149
149
  bool IsInstanceOf(const std::string& id) const override;
150
150
  // All variants of BuiltinFilterPolicy can read each others filters.
151
151
  const char* CompatibilityName() const override;
152
- static const char* kCompatibilityName();
153
152
 
154
153
  public: // new
155
154
  // An internal function for the implementation of