@nxtedition/rocksdb 8.2.0 → 8.2.2

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 (321) hide show
  1. package/binding.cc +3 -3
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
  3. package/deps/rocksdb/rocksdb/Makefile +10 -5
  4. package/deps/rocksdb/rocksdb/TARGETS +8 -345
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
  13. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
  15. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
  17. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
  25. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
  29. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
  30. package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
  31. package/deps/rocksdb/rocksdb/db/builder.h +2 -2
  32. package/deps/rocksdb/rocksdb/db/c.cc +76 -5
  33. package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
  34. package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
  50. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
  51. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  52. package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
  53. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
  54. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
  55. package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
  56. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
  58. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
  71. package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
  72. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
  73. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
  76. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
  77. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
  78. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
  79. package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
  80. package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
  81. package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
  82. package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
  83. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
  84. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
  85. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
  86. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
  87. package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
  88. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
  90. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
  91. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
  92. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
  93. package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
  94. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
  95. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
  96. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
  97. package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
  98. package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
  99. package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
  100. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
  101. package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
  102. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
  103. package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
  104. package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
  105. package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
  106. package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
  107. package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
  108. package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
  109. package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
  110. package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
  111. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
  112. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
  113. package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
  114. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
  115. package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
  116. package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
  117. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
  118. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
  119. package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
  120. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  121. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
  122. package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
  123. package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
  124. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
  125. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
  128. package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
  131. package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
  132. package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
  133. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  134. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
  135. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
  145. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
  146. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
  147. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
  148. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
  150. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
  151. package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
  152. package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
  153. package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
  154. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
  155. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
  156. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
  157. package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
  158. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  159. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
  160. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
  161. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
  162. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
  163. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
  164. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
  165. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
  166. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
  167. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
  168. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
  169. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
  171. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  172. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
  173. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
  174. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
  175. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
  176. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
  177. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
  178. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
  179. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  185. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
  186. package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
  187. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
  188. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
  189. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
  192. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
  193. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  194. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
  195. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
  196. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
  197. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
  198. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
  199. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
  200. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
  201. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  202. package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
  203. package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
  204. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
  205. package/deps/rocksdb/rocksdb/options/options.cc +12 -53
  206. package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
  207. package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
  208. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
  209. package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
  210. package/deps/rocksdb/rocksdb/port/lang.h +27 -0
  211. package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
  212. package/deps/rocksdb/rocksdb/src.mk +2 -0
  213. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
  214. package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
  215. package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
  216. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
  217. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
  218. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
  219. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
  220. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
  221. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
  222. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
  223. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
  224. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
  225. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
  226. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
  227. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
  228. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
  229. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
  230. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
  232. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
  233. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
  234. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
  236. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
  237. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
  239. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
  240. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
  241. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
  242. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
  243. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
  244. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
  245. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
  247. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
  248. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
  249. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
  250. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
  251. package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
  252. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
  253. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
  254. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
  255. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
  256. package/deps/rocksdb/rocksdb/table/format.cc +4 -4
  257. package/deps/rocksdb/rocksdb/table/format.h +1 -1
  258. package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
  259. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
  260. package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
  261. package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
  262. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
  264. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
  266. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
  267. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
  268. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
  269. package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
  270. package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
  271. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
  272. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
  275. package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
  277. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
  278. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
  279. package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
  280. package/deps/rocksdb/rocksdb/util/compression.h +1 -1
  281. package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
  282. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
  283. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
  284. package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
  285. package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
  286. package/deps/rocksdb/rocksdb/util/math.h +12 -7
  287. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
  288. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
  289. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
  290. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
  291. package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
  292. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
  293. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  294. package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
  295. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
  296. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
  297. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
  298. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
  299. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
  300. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
  301. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
  302. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
  303. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
  304. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
  305. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
  306. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
  307. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
  308. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
  309. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
  310. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
  311. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
  312. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
  313. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
  314. package/package.json +1 -1
  315. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  316. package/prebuilds/linux-x64/node.napi.node +0 -0
  317. /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
  318. /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
  319. /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
  320. /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
  321. /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
@@ -14,9 +14,9 @@
14
14
 
15
15
  #include "block_fetcher.h"
16
16
  #include "file/random_access_file_reader.h"
17
- #include "memory/memory_allocator.h"
17
+ #include "memory/memory_allocator_impl.h"
18
18
  #include "monitoring/perf_context_imp.h"
19
- #include "monitoring/statistics.h"
19
+ #include "monitoring/statistics_impl.h"
20
20
  #include "options/options_helper.h"
21
21
  #include "rocksdb/env.h"
22
22
  #include "rocksdb/options.h"
@@ -530,8 +530,8 @@ Status UncompressBlockData(const UncompressionInfo& uncompression_info,
530
530
  RecordTimeToHistogram(ioptions.stats, DECOMPRESSION_TIMES_NANOS,
531
531
  timer.ElapsedNanos());
532
532
  }
533
- RecordTimeToHistogram(ioptions.stats, BYTES_DECOMPRESSED,
534
- out_contents->data.size());
533
+ RecordTick(ioptions.stats, BYTES_DECOMPRESSED_FROM, size);
534
+ RecordTick(ioptions.stats, BYTES_DECOMPRESSED_TO, out_contents->data.size());
535
535
  RecordTick(ioptions.stats, NUMBER_BLOCK_DECOMPRESSED);
536
536
 
537
537
  TEST_SYNC_POINT_CALLBACK("UncompressBlockData:TamperWithReturnValue",
@@ -15,7 +15,7 @@
15
15
 
16
16
  #include "file/file_prefetch_buffer.h"
17
17
  #include "file/random_access_file_reader.h"
18
- #include "memory/memory_allocator.h"
18
+ #include "memory/memory_allocator_impl.h"
19
19
  #include "options/cf_options.h"
20
20
  #include "port/malloc.h"
21
21
  #include "port/port.h" // noexcept
@@ -12,7 +12,7 @@
12
12
  #include "db/wide/wide_column_serialization.h"
13
13
  #include "monitoring/file_read_sample.h"
14
14
  #include "monitoring/perf_context_imp.h"
15
- #include "monitoring/statistics.h"
15
+ #include "monitoring/statistics_impl.h"
16
16
  #include "rocksdb/merge_operator.h"
17
17
  #include "rocksdb/statistics.h"
18
18
  #include "rocksdb/system_clock.h"
@@ -115,6 +115,7 @@ void PropertyBlockBuilder::AddTableProperty(const TableProperties& props) {
115
115
  Add(TablePropertiesNames::kFastCompressionEstimatedDataSize,
116
116
  props.fast_compression_estimated_data_size);
117
117
  }
118
+ Add(TablePropertiesNames::kTailStartOffset, props.tail_start_offset);
118
119
  if (!props.db_id.empty()) {
119
120
  Add(TablePropertiesNames::kDbId, props.db_id);
120
121
  }
@@ -307,6 +308,8 @@ Status ReadTablePropertiesHelper(
307
308
  &new_table_properties->slow_compression_estimated_data_size},
308
309
  {TablePropertiesNames::kFastCompressionEstimatedDataSize,
309
310
  &new_table_properties->fast_compression_estimated_data_size},
311
+ {TablePropertiesNames::kTailStartOffset,
312
+ &new_table_properties->tail_start_offset},
310
313
  };
311
314
 
312
315
  std::string last_key;
@@ -412,20 +415,22 @@ Status ReadTablePropertiesHelper(
412
415
  Status ReadTableProperties(RandomAccessFileReader* file, uint64_t file_size,
413
416
  uint64_t table_magic_number,
414
417
  const ImmutableOptions& ioptions,
418
+ const ReadOptions& read_options,
415
419
  std::unique_ptr<TableProperties>* properties,
416
420
  MemoryAllocator* memory_allocator,
417
421
  FilePrefetchBuffer* prefetch_buffer) {
418
422
  BlockHandle block_handle;
419
423
  Footer footer;
420
- Status s = FindMetaBlockInFile(file, file_size, table_magic_number, ioptions,
421
- kPropertiesBlockName, &block_handle,
422
- memory_allocator, prefetch_buffer, &footer);
424
+ Status s =
425
+ FindMetaBlockInFile(file, file_size, table_magic_number, ioptions,
426
+ read_options, kPropertiesBlockName, &block_handle,
427
+ memory_allocator, prefetch_buffer, &footer);
423
428
  if (!s.ok()) {
424
429
  return s;
425
430
  }
426
431
 
427
432
  if (!block_handle.IsNull()) {
428
- s = ReadTablePropertiesHelper(ReadOptions(), block_handle, file,
433
+ s = ReadTablePropertiesHelper(read_options, block_handle, file,
429
434
  prefetch_buffer, footer, ioptions, properties,
430
435
  memory_allocator);
431
436
  } else {
@@ -473,14 +478,20 @@ Status FindMetaBlock(InternalIterator* meta_index_iter,
473
478
  Status ReadMetaIndexBlockInFile(RandomAccessFileReader* file,
474
479
  uint64_t file_size, uint64_t table_magic_number,
475
480
  const ImmutableOptions& ioptions,
481
+ const ReadOptions& read_options,
476
482
  BlockContents* metaindex_contents,
477
483
  MemoryAllocator* memory_allocator,
478
484
  FilePrefetchBuffer* prefetch_buffer,
479
485
  Footer* footer_out) {
480
486
  Footer footer;
481
487
  IOOptions opts;
482
- auto s = ReadFooterFromFile(opts, file, *ioptions.fs, prefetch_buffer,
483
- file_size, &footer, table_magic_number);
488
+ Status s;
489
+ s = file->PrepareIOOptions(read_options, opts);
490
+ if (!s.ok()) {
491
+ return s;
492
+ }
493
+ s = ReadFooterFromFile(opts, file, *ioptions.fs, prefetch_buffer, file_size,
494
+ &footer, table_magic_number);
484
495
  if (!s.ok()) {
485
496
  return s;
486
497
  }
@@ -489,7 +500,7 @@ Status ReadMetaIndexBlockInFile(RandomAccessFileReader* file,
489
500
  }
490
501
 
491
502
  auto metaindex_handle = footer.metaindex_handle();
492
- return BlockFetcher(file, prefetch_buffer, footer, ReadOptions(),
503
+ return BlockFetcher(file, prefetch_buffer, footer, read_options,
493
504
  metaindex_handle, metaindex_contents, ioptions,
494
505
  false /* do decompression */, false /*maybe_compressed*/,
495
506
  BlockType::kMetaIndex, UncompressionDict::GetEmptyDict(),
@@ -497,18 +508,16 @@ Status ReadMetaIndexBlockInFile(RandomAccessFileReader* file,
497
508
  .ReadBlockContents();
498
509
  }
499
510
 
500
- Status FindMetaBlockInFile(RandomAccessFileReader* file, uint64_t file_size,
501
- uint64_t table_magic_number,
502
- const ImmutableOptions& ioptions,
503
- const std::string& meta_block_name,
504
- BlockHandle* block_handle,
505
- MemoryAllocator* memory_allocator,
506
- FilePrefetchBuffer* prefetch_buffer,
507
- Footer* footer_out) {
511
+ Status FindMetaBlockInFile(
512
+ RandomAccessFileReader* file, uint64_t file_size,
513
+ uint64_t table_magic_number, const ImmutableOptions& ioptions,
514
+ const ReadOptions& read_options, const std::string& meta_block_name,
515
+ BlockHandle* block_handle, MemoryAllocator* memory_allocator,
516
+ FilePrefetchBuffer* prefetch_buffer, Footer* footer_out) {
508
517
  BlockContents metaindex_contents;
509
518
  auto s = ReadMetaIndexBlockInFile(
510
- file, file_size, table_magic_number, ioptions, &metaindex_contents,
511
- memory_allocator, prefetch_buffer, footer_out);
519
+ file, file_size, table_magic_number, ioptions, read_options,
520
+ &metaindex_contents, memory_allocator, prefetch_buffer, footer_out);
512
521
  if (!s.ok()) {
513
522
  return s;
514
523
  }
@@ -526,6 +535,7 @@ Status ReadMetaBlock(RandomAccessFileReader* file,
526
535
  FilePrefetchBuffer* prefetch_buffer, uint64_t file_size,
527
536
  uint64_t table_magic_number,
528
537
  const ImmutableOptions& ioptions,
538
+ const ReadOptions& read_options,
529
539
  const std::string& meta_block_name, BlockType block_type,
530
540
  BlockContents* contents,
531
541
  MemoryAllocator* memory_allocator) {
@@ -535,15 +545,16 @@ Status ReadMetaBlock(RandomAccessFileReader* file,
535
545
 
536
546
  BlockHandle block_handle;
537
547
  Footer footer;
538
- Status status = FindMetaBlockInFile(
539
- file, file_size, table_magic_number, ioptions, meta_block_name,
540
- &block_handle, memory_allocator, prefetch_buffer, &footer);
548
+ Status status =
549
+ FindMetaBlockInFile(file, file_size, table_magic_number, ioptions,
550
+ read_options, meta_block_name, &block_handle,
551
+ memory_allocator, prefetch_buffer, &footer);
541
552
  if (!status.ok()) {
542
553
  return status;
543
554
  }
544
555
 
545
- return BlockFetcher(file, prefetch_buffer, footer, ReadOptions(),
546
- block_handle, contents, ioptions, false /* decompress */,
556
+ return BlockFetcher(file, prefetch_buffer, footer, read_options, block_handle,
557
+ contents, ioptions, false /* decompress */,
547
558
  false /*maybe_compressed*/, block_type,
548
559
  UncompressionDict::GetEmptyDict(),
549
560
  PersistentCacheOptions::kEmpty, memory_allocator)
@@ -119,6 +119,7 @@ Status ReadTablePropertiesHelper(
119
119
  Status ReadTableProperties(RandomAccessFileReader* file, uint64_t file_size,
120
120
  uint64_t table_magic_number,
121
121
  const ImmutableOptions& ioptions,
122
+ const ReadOptions& read_options,
122
123
  std::unique_ptr<TableProperties>* properties,
123
124
  MemoryAllocator* memory_allocator = nullptr,
124
125
  FilePrefetchBuffer* prefetch_buffer = nullptr);
@@ -139,6 +140,7 @@ Status FindMetaBlock(InternalIterator* meta_index_iter,
139
140
  Status FindMetaBlockInFile(RandomAccessFileReader* file, uint64_t file_size,
140
141
  uint64_t table_magic_number,
141
142
  const ImmutableOptions& ioptions,
143
+ const ReadOptions& read_options,
142
144
  const std::string& meta_block_name,
143
145
  BlockHandle* block_handle,
144
146
  MemoryAllocator* memory_allocator = nullptr,
@@ -149,6 +151,7 @@ Status FindMetaBlockInFile(RandomAccessFileReader* file, uint64_t file_size,
149
151
  Status ReadMetaIndexBlockInFile(RandomAccessFileReader* file,
150
152
  uint64_t file_size, uint64_t table_magic_number,
151
153
  const ImmutableOptions& ioptions,
154
+ const ReadOptions& read_options,
152
155
  BlockContents* block_contents,
153
156
  MemoryAllocator* memory_allocator = nullptr,
154
157
  FilePrefetchBuffer* prefetch_buffer = nullptr,
@@ -161,6 +164,7 @@ Status ReadMetaBlock(RandomAccessFileReader* file,
161
164
  FilePrefetchBuffer* prefetch_buffer, uint64_t file_size,
162
165
  uint64_t table_magic_number,
163
166
  const ImmutableOptions& ioptions,
167
+ const ReadOptions& read_options,
164
168
  const std::string& meta_block_name, BlockType block_type,
165
169
  BlockContents* contents,
166
170
  MemoryAllocator* memory_allocator = nullptr);
@@ -41,12 +41,14 @@ class MockTableReader : public TableReader {
41
41
  GetContext* get_context, const SliceTransform* prefix_extractor,
42
42
  bool skip_filters = false) override;
43
43
 
44
- uint64_t ApproximateOffsetOf(const Slice& /*key*/,
44
+ uint64_t ApproximateOffsetOf(const ReadOptions& /*read_options*/,
45
+ const Slice& /*key*/,
45
46
  TableReaderCaller /*caller*/) override {
46
47
  return 0;
47
48
  }
48
49
 
49
- uint64_t ApproximateSize(const Slice& /*start*/, const Slice& /*end*/,
50
+ uint64_t ApproximateSize(const ReadOptions& /*read_options*/,
51
+ const Slice& /*start*/, const Slice& /*end*/,
50
52
  TableReaderCaller /*caller*/) override {
51
53
  return 0;
52
54
  }
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include <string>
8
8
 
9
- #include "monitoring/statistics.h"
9
+ #include "monitoring/statistics_impl.h"
10
10
  #include "table/format.h"
11
11
  #include "table/persistent_cache_options.h"
12
12
 
@@ -7,7 +7,7 @@
7
7
  #include <string>
8
8
 
9
9
  #include "cache/cache_key.h"
10
- #include "monitoring/statistics.h"
10
+ #include "monitoring/statistics_impl.h"
11
11
  #include "rocksdb/persistent_cache.h"
12
12
 
13
13
  namespace ROCKSDB_NAMESPACE {
@@ -126,8 +126,10 @@ Status PlainTableReader::Open(
126
126
  }
127
127
 
128
128
  std::unique_ptr<TableProperties> props;
129
+ // TODO: plumb Env::IOActivity
130
+ const ReadOptions read_options;
129
131
  auto s = ReadTableProperties(file.get(), file_size, kPlainTableMagicNumber,
130
- ioptions, &props);
132
+ ioptions, read_options, &props);
131
133
  if (!s.ok()) {
132
134
  return s;
133
135
  }
@@ -297,10 +299,14 @@ Status PlainTableReader::PopulateIndex(TableProperties* props,
297
299
  assert(props != nullptr);
298
300
 
299
301
  BlockContents index_block_contents;
300
- Status s = ReadMetaBlock(file_info_.file.get(), nullptr /* prefetch_buffer */,
301
- file_size_, kPlainTableMagicNumber, ioptions_,
302
- PlainTableIndexBuilder::kPlainTableIndexBlock,
303
- BlockType::kIndex, &index_block_contents);
302
+
303
+ // TODO: plumb Env::IOActivity
304
+ const ReadOptions read_options;
305
+ Status s =
306
+ ReadMetaBlock(file_info_.file.get(), nullptr /* prefetch_buffer */,
307
+ file_size_, kPlainTableMagicNumber, ioptions_, read_options,
308
+ PlainTableIndexBuilder::kPlainTableIndexBlock,
309
+ BlockType::kIndex, &index_block_contents);
304
310
 
305
311
  bool index_in_file = s.ok();
306
312
 
@@ -310,8 +316,8 @@ Status PlainTableReader::PopulateIndex(TableProperties* props,
310
316
  if (index_in_file) {
311
317
  s = ReadMetaBlock(file_info_.file.get(), nullptr /* prefetch_buffer */,
312
318
  file_size_, kPlainTableMagicNumber, ioptions_,
313
- BloomBlockBuilder::kBloomBlock, BlockType::kFilter,
314
- &bloom_block_contents);
319
+ read_options, BloomBlockBuilder::kBloomBlock,
320
+ BlockType::kFilter, &bloom_block_contents);
315
321
  bloom_in_file = s.ok() && bloom_block_contents.data.size() > 0;
316
322
  }
317
323
 
@@ -614,12 +620,14 @@ Status PlainTableReader::Get(const ReadOptions& /*ro*/, const Slice& target,
614
620
  return Status::OK();
615
621
  }
616
622
 
617
- uint64_t PlainTableReader::ApproximateOffsetOf(const Slice& /*key*/,
618
- TableReaderCaller /*caller*/) {
623
+ uint64_t PlainTableReader::ApproximateOffsetOf(
624
+ const ReadOptions& /*read_options*/, const Slice& /*key*/,
625
+ TableReaderCaller /*caller*/) {
619
626
  return 0;
620
627
  }
621
628
 
622
- uint64_t PlainTableReader::ApproximateSize(const Slice& /*start*/,
629
+ uint64_t PlainTableReader::ApproximateSize(const ReadOptions& /* read_options*/,
630
+ const Slice& /*start*/,
623
631
  const Slice& /*end*/,
624
632
  TableReaderCaller /*caller*/) {
625
633
  return 0;
@@ -92,11 +92,12 @@ class PlainTableReader : public TableReader {
92
92
  GetContext* get_context, const SliceTransform* prefix_extractor,
93
93
  bool skip_filters = false) override;
94
94
 
95
- uint64_t ApproximateOffsetOf(const Slice& key,
95
+ uint64_t ApproximateOffsetOf(const ReadOptions& read_options,
96
+ const Slice& key,
96
97
  TableReaderCaller caller) override;
97
98
 
98
- uint64_t ApproximateSize(const Slice& start, const Slice& end,
99
- TableReaderCaller caller) override;
99
+ uint64_t ApproximateSize(const ReadOptions& read_options, const Slice& start,
100
+ const Slice& end, TableReaderCaller caller) override;
100
101
 
101
102
  uint32_t GetIndexSize() const { return index_.GetIndexSize(); }
102
103
  void SetupForCompaction() override;
@@ -165,10 +165,10 @@ Status SstFileDumper::NewTableReader(
165
165
  const ImmutableOptions& /*ioptions*/, const EnvOptions& /*soptions*/,
166
166
  const InternalKeyComparator& /*internal_comparator*/, uint64_t file_size,
167
167
  std::unique_ptr<TableReader>* /*table_reader*/) {
168
- auto t_opt =
169
- TableReaderOptions(ioptions_, moptions_.prefix_extractor, soptions_,
170
- internal_comparator_, false /* skip_filters */,
171
- false /* imortal */, true /* force_direct_prefetch */);
168
+ auto t_opt = TableReaderOptions(
169
+ ioptions_, moptions_.prefix_extractor, soptions_, internal_comparator_,
170
+ 0 /* block_protection_bytes_per_key */, false /* skip_filters */,
171
+ false /* immortal */, true /* force_direct_prefetch */);
172
172
  // Allow open file with global sequence number for backward compatibility.
173
173
  t_opt.largest_seqno = kMaxSequenceNumber;
174
174
 
@@ -315,7 +315,8 @@ Status SstFileDumper::ShowCompressionSize(
315
315
  const uint64_t compressed_blocks =
316
316
  opts.statistics->getAndResetTickerCount(NUMBER_BLOCK_COMPRESSED);
317
317
  const uint64_t not_compressed_blocks =
318
- opts.statistics->getAndResetTickerCount(NUMBER_BLOCK_NOT_COMPRESSED);
318
+ opts.statistics->getAndResetTickerCount(
319
+ NUMBER_BLOCK_COMPRESSION_REJECTED);
319
320
  // When the option enable_index_compression is true,
320
321
  // NUMBER_BLOCK_COMPRESSED is incremented for index block(s).
321
322
  if ((compressed_blocks + not_compressed_blocks) > num_data_blocks) {
@@ -355,8 +356,11 @@ Status SstFileDumper::ReadTableProperties(uint64_t table_magic_number,
355
356
  RandomAccessFileReader* file,
356
357
  uint64_t file_size,
357
358
  FilePrefetchBuffer* prefetch_buffer) {
359
+ // TODO: plumb Env::IOActivity
360
+ const ReadOptions read_options;
358
361
  Status s = ROCKSDB_NAMESPACE::ReadTableProperties(
359
- file, file_size, table_magic_number, ioptions_, &table_properties_,
362
+ file, file_size, table_magic_number, ioptions_, read_options,
363
+ &table_properties_,
360
364
  /* memory_allocator= */ nullptr, prefetch_buffer);
361
365
  if (!s.ok()) {
362
366
  if (!silent_) {
@@ -514,4 +518,3 @@ Status SstFileDumper::ReadTableProperties(
514
518
  return init_result_;
515
519
  }
516
520
  } // namespace ROCKSDB_NAMESPACE
517
-
@@ -56,7 +56,8 @@ Status SstFileReader::Open(const std::string& file_path) {
56
56
  }
57
57
  if (s.ok()) {
58
58
  TableReaderOptions t_opt(r->ioptions, r->moptions.prefix_extractor,
59
- r->soptions, r->ioptions.internal_comparator);
59
+ r->soptions, r->ioptions.internal_comparator,
60
+ r->moptions.block_protection_bytes_per_key);
60
61
  // Allow open file with global sequence number for backward compatibility.
61
62
  t_opt.largest_seqno = kMaxSequenceNumber;
62
63
  s = r->options.table_factory->NewTableReader(t_opt, std::move(file_reader),
@@ -66,6 +67,7 @@ Status SstFileReader::Open(const std::string& file_path) {
66
67
  }
67
68
 
68
69
  Iterator* SstFileReader::NewIterator(const ReadOptions& roptions) {
70
+ assert(roptions.io_activity == Env::IOActivity::kUnknown);
69
71
  auto r = rep_.get();
70
72
  auto sequence = roptions.snapshot != nullptr
71
73
  ? roptions.snapshot->GetSequenceNumber()
@@ -91,9 +93,9 @@ std::shared_ptr<const TableProperties> SstFileReader::GetTableProperties()
91
93
  }
92
94
 
93
95
  Status SstFileReader::VerifyChecksum(const ReadOptions& read_options) {
96
+ assert(read_options.io_activity == Env::IOActivity::kUnknown);
94
97
  return rep_->table_reader->VerifyChecksum(read_options,
95
98
  TableReaderCaller::kSSTFileReader);
96
99
  }
97
100
 
98
101
  } // namespace ROCKSDB_NAMESPACE
99
-
@@ -134,6 +134,17 @@ struct SstFileWriter::Rep {
134
134
  if (!builder) {
135
135
  return Status::InvalidArgument("File is not opened");
136
136
  }
137
+ int cmp = internal_comparator.user_comparator()->CompareWithoutTimestamp(
138
+ begin_key, end_key);
139
+ if (cmp > 0) {
140
+ // It's an empty range where endpoints appear mistaken. Don't bother
141
+ // applying it to the DB, and return an error to the user.
142
+ return Status::InvalidArgument("end key comes before start key");
143
+ } else if (cmp == 0) {
144
+ // It's an empty range. Don't bother applying it to the DB.
145
+ return Status::OK();
146
+ }
147
+
137
148
  RangeTombstone tombstone(begin_key, end_key, 0 /* Sequence Number */);
138
149
  if (file_info.num_range_del_entries == 0) {
139
150
  file_info.smallest_range_del_key.assign(tombstone.start_key_.data(),
@@ -37,12 +37,13 @@ struct TableReaderOptions {
37
37
  const std::shared_ptr<const SliceTransform>& _prefix_extractor,
38
38
  const EnvOptions& _env_options,
39
39
  const InternalKeyComparator& _internal_comparator,
40
- bool _skip_filters = false, bool _immortal = false,
41
- bool _force_direct_prefetch = false, int _level = -1,
42
- BlockCacheTracer* const _block_cache_tracer = nullptr,
40
+ uint8_t _block_protection_bytes_per_key, bool _skip_filters = false,
41
+ bool _immortal = false, bool _force_direct_prefetch = false,
42
+ int _level = -1, BlockCacheTracer* const _block_cache_tracer = nullptr,
43
43
  size_t _max_file_size_for_l0_meta_pin = 0,
44
44
  const std::string& _cur_db_session_id = "", uint64_t _cur_file_num = 0,
45
- UniqueId64x2 _unique_id = {}, SequenceNumber _largest_seqno = 0)
45
+ UniqueId64x2 _unique_id = {}, SequenceNumber _largest_seqno = 0,
46
+ uint64_t _tail_size = 0)
46
47
  : ioptions(_ioptions),
47
48
  prefix_extractor(_prefix_extractor),
48
49
  env_options(_env_options),
@@ -56,7 +57,9 @@ struct TableReaderOptions {
56
57
  max_file_size_for_l0_meta_pin(_max_file_size_for_l0_meta_pin),
57
58
  cur_db_session_id(_cur_db_session_id),
58
59
  cur_file_num(_cur_file_num),
59
- unique_id(_unique_id) {}
60
+ unique_id(_unique_id),
61
+ block_protection_bytes_per_key(_block_protection_bytes_per_key),
62
+ tail_size(_tail_size) {}
60
63
 
61
64
  const ImmutableOptions& ioptions;
62
65
  const std::shared_ptr<const SliceTransform>& prefix_extractor;
@@ -86,6 +89,10 @@ struct TableReaderOptions {
86
89
 
87
90
  // Known unique_id or {}, kNullUniqueId64x2 means unknown
88
91
  UniqueId64x2 unique_id;
92
+
93
+ uint8_t block_protection_bytes_per_key;
94
+
95
+ uint64_t tail_size;
89
96
  };
90
97
 
91
98
  struct TableBuilderOptions {
@@ -197,6 +204,8 @@ class TableBuilder {
197
204
  // is enabled.
198
205
  virtual uint64_t EstimatedFileSize() const { return FileSize(); }
199
206
 
207
+ virtual uint64_t GetTailSize() const { return 0; }
208
+
200
209
  // If the user defined table properties collector suggest the file to
201
210
  // be further compacted.
202
211
  virtual bool NeedCompact() const { return false; }
@@ -303,6 +303,8 @@ const std::string TablePropertiesNames::kFastCompressionEstimatedDataSize =
303
303
  "rocksdb.sample_for_compression.fast.data.size";
304
304
  const std::string TablePropertiesNames::kSequenceNumberTimeMapping =
305
305
  "rocksdb.seqno.time.map";
306
+ const std::string TablePropertiesNames::kTailStartOffset =
307
+ "rocksdb.tail.start.offset";
306
308
 
307
309
  #ifndef NDEBUG
308
310
  // WARNING: TEST_SetRandomTableProperties assumes the following layout of
@@ -76,7 +76,8 @@ class TableReader {
76
76
  // function and letting ApproximateSize take optional start and end, so
77
77
  // that absolute start and end can be specified and optimized without
78
78
  // key / index work.
79
- virtual uint64_t ApproximateOffsetOf(const Slice& key,
79
+ virtual uint64_t ApproximateOffsetOf(const ReadOptions& read_options,
80
+ const Slice& key,
80
81
  TableReaderCaller caller) = 0;
81
82
 
82
83
  // Given start and end keys, return the approximate data size in the file
@@ -84,7 +85,8 @@ class TableReader {
84
85
  // includes effects like compression of the underlying data and applicable
85
86
  // portions of metadata including filters and indexes. Nullptr for start or
86
87
  // end (or both) indicates absolute start or end of the table.
87
- virtual uint64_t ApproximateSize(const Slice& start, const Slice& end,
88
+ virtual uint64_t ApproximateSize(const ReadOptions& read_options,
89
+ const Slice& start, const Slice& end,
88
90
  TableReaderCaller caller) = 0;
89
91
 
90
92
  struct Anchor {
@@ -160,7 +162,8 @@ class TableReader {
160
162
  // Prefetch data corresponding to a give range of keys
161
163
  // Typically this functionality is required for table implementations that
162
164
  // persists the data on a non volatile storage medium like disk/SSD
163
- virtual Status Prefetch(const Slice* begin = nullptr,
165
+ virtual Status Prefetch(const ReadOptions& /* read_options */,
166
+ const Slice* begin = nullptr,
164
167
  const Slice* end = nullptr) {
165
168
  (void)begin;
166
169
  (void)end;
@@ -144,7 +144,7 @@ void TableReaderBenchmark(Options& opts, EnvOptions& env_options,
144
144
  new RandomAccessFileReader(std::move(raf), file_name));
145
145
  s = opts.table_factory->NewTableReader(
146
146
  TableReaderOptions(ioptions, moptions.prefix_extractor, env_options,
147
- ikc),
147
+ ikc, 0 /* block_protection_bytes_per_key */),
148
148
  std::move(file_reader), file_size, &table_reader);
149
149
  if (!s.ok()) {
150
150
  fprintf(stderr, "Open Table Error: %s\n", s.ToString().c_str());