@nxtedition/rocksdb 13.1.5 → 13.2.0

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 (237) hide show
  1. package/binding.cc +37 -12
  2. package/deps/rocksdb/rocksdb/{TARGETS → BUCK} +27 -0
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +3 -1
  4. package/deps/rocksdb/rocksdb/Makefile +2 -2
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +3 -1
  6. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +2 -0
  7. package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +34 -9
  8. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +7 -6
  9. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +5 -1
  10. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +22 -14
  11. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +149 -0
  12. package/deps/rocksdb/rocksdb/db/builder.cc +13 -24
  13. package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +35 -10
  14. package/deps/rocksdb/rocksdb/db/column_family.cc +21 -10
  15. package/deps/rocksdb/rocksdb/db/column_family.h +15 -8
  16. package/deps/rocksdb/rocksdb/db/column_family_test.cc +98 -7
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +126 -16
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +51 -5
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +2 -2
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +2 -8
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +24 -0
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +52 -22
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -7
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +36 -9
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +6 -0
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +30 -17
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +26 -23
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +43 -33
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +6 -5
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +19 -9
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -5
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +632 -411
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +171 -51
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -5
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +37 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +51 -11
  37. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +10 -3
  38. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +350 -154
  39. package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
  40. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +62 -27
  41. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +68 -1
  42. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +91 -0
  43. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +134 -70
  44. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +71 -23
  45. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +43 -16
  46. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +47 -33
  47. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +27 -19
  48. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +38 -25
  49. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +3 -3
  50. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +7 -4
  51. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +258 -42
  52. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +161 -9
  53. package/deps/rocksdb/rocksdb/db/db_iter.cc +118 -86
  54. package/deps/rocksdb/rocksdb/db/db_iter.h +44 -17
  55. package/deps/rocksdb/rocksdb/db/db_options_test.cc +27 -6
  56. package/deps/rocksdb/rocksdb/db/db_test.cc +48 -16
  57. package/deps/rocksdb/rocksdb/db/db_test2.cc +60 -15
  58. package/deps/rocksdb/rocksdb/db/db_test_util.cc +97 -44
  59. package/deps/rocksdb/rocksdb/db/db_test_util.h +7 -1
  60. package/deps/rocksdb/rocksdb/db/dbformat.cc +15 -5
  61. package/deps/rocksdb/rocksdb/db/dbformat.h +137 -55
  62. package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
  63. package/deps/rocksdb/rocksdb/db/experimental.cc +54 -0
  64. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +663 -8
  65. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +152 -91
  66. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +134 -11
  67. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +55 -9
  68. package/deps/rocksdb/rocksdb/db/flush_job.cc +52 -29
  69. package/deps/rocksdb/rocksdb/db/flush_job.h +5 -3
  70. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +18 -12
  71. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +23 -29
  72. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +3 -2
  73. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +2 -0
  74. package/deps/rocksdb/rocksdb/db/internal_stats.cc +9 -6
  75. package/deps/rocksdb/rocksdb/db/internal_stats.h +54 -0
  76. package/deps/rocksdb/rocksdb/db/job_context.h +1 -1
  77. package/deps/rocksdb/rocksdb/db/log_reader.cc +6 -7
  78. package/deps/rocksdb/rocksdb/db/manifest_ops.cc +47 -0
  79. package/deps/rocksdb/rocksdb/db/manifest_ops.h +20 -0
  80. package/deps/rocksdb/rocksdb/db/memtable.cc +165 -64
  81. package/deps/rocksdb/rocksdb/db/memtable.h +422 -243
  82. package/deps/rocksdb/rocksdb/db/memtable_list.cc +99 -68
  83. package/deps/rocksdb/rocksdb/db/memtable_list.h +63 -38
  84. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +28 -25
  85. package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +118 -60
  86. package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +344 -89
  87. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +2 -3
  88. package/deps/rocksdb/rocksdb/db/repair.cc +15 -14
  89. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -13
  90. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +7 -0
  91. package/deps/rocksdb/rocksdb/db/table_cache.cc +62 -65
  92. package/deps/rocksdb/rocksdb/db/table_cache.h +70 -76
  93. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +5 -6
  94. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -1
  95. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +8 -7
  96. package/deps/rocksdb/rocksdb/db/version_builder.cc +17 -19
  97. package/deps/rocksdb/rocksdb/db/version_builder.h +13 -12
  98. package/deps/rocksdb/rocksdb/db/version_edit.h +30 -0
  99. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +3 -5
  100. package/deps/rocksdb/rocksdb/db/version_set.cc +89 -129
  101. package/deps/rocksdb/rocksdb/db/version_set.h +12 -4
  102. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -2
  103. package/deps/rocksdb/rocksdb/db/version_set_test.cc +12 -8
  104. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +0 -15
  105. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -2
  106. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +9 -7
  107. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +0 -8
  108. package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +28 -2
  109. package/deps/rocksdb/rocksdb/db/write_batch.cc +32 -10
  110. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +9 -0
  111. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +2 -1
  112. package/deps/rocksdb/rocksdb/db/write_thread.cc +3 -1
  113. package/deps/rocksdb/rocksdb/db/write_thread.h +6 -2
  114. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +15 -0
  115. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +7 -0
  116. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
  117. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +18 -2
  118. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +100 -22
  119. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -4
  120. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +34 -8
  121. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +223 -78
  122. package/deps/rocksdb/rocksdb/env/file_system.cc +6 -1
  123. package/deps/rocksdb/rocksdb/env/fs_posix.cc +53 -0
  124. package/deps/rocksdb/rocksdb/env/io_posix.cc +63 -17
  125. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  126. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +132 -48
  127. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +92 -24
  128. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +727 -109
  129. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +3 -4
  130. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +1 -1
  131. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +8 -0
  132. package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +20 -1
  133. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +9 -0
  134. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +9 -5
  135. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -0
  136. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +10 -2
  137. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -0
  138. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +7 -0
  139. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +34 -37
  140. package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +21 -0
  141. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +56 -28
  142. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -0
  143. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +36 -28
  144. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +11 -0
  145. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
  146. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +84 -60
  147. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +102 -0
  148. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +89 -2
  149. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +32 -0
  150. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +30 -1
  151. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +23 -2
  152. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  153. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +2 -0
  154. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +79 -21
  155. package/deps/rocksdb/rocksdb/memtable/skiplist.h +41 -18
  156. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -5
  157. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +169 -0
  158. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +400 -0
  159. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -0
  160. package/deps/rocksdb/rocksdb/options/cf_options.cc +137 -82
  161. package/deps/rocksdb/rocksdb/options/cf_options.h +18 -6
  162. package/deps/rocksdb/rocksdb/options/configurable.cc +31 -17
  163. package/deps/rocksdb/rocksdb/options/configurable_helper.h +7 -6
  164. package/deps/rocksdb/rocksdb/options/options_helper.cc +10 -8
  165. package/deps/rocksdb/rocksdb/options/options_parser.cc +74 -54
  166. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +89 -0
  167. package/deps/rocksdb/rocksdb/options/options_test.cc +112 -26
  168. package/deps/rocksdb/rocksdb/port/port.h +5 -9
  169. package/deps/rocksdb/rocksdb/src.mk +8 -0
  170. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +4 -0
  171. package/deps/rocksdb/rocksdb/table/block_based/block.h +1 -7
  172. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -0
  173. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +62 -80
  174. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +13 -3
  175. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +16 -5
  176. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +38 -7
  177. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +12 -4
  178. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +4 -1
  179. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +4 -1
  180. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +204 -1
  181. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
  182. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
  183. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +4 -0
  184. package/deps/rocksdb/rocksdb/table/format.cc +3 -3
  185. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +4 -1
  186. package/deps/rocksdb/rocksdb/table/mock_table.cc +0 -50
  187. package/deps/rocksdb/rocksdb/table/mock_table.h +53 -0
  188. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +4 -0
  189. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
  190. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +10 -5
  191. package/deps/rocksdb/rocksdb/table/table_builder.h +3 -1
  192. package/deps/rocksdb/rocksdb/table/table_properties.cc +181 -0
  193. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +5 -5
  194. package/deps/rocksdb/rocksdb/table/table_test.cc +71 -64
  195. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +45 -45
  196. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +35 -35
  197. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +43 -43
  198. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +41 -4
  199. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +1 -0
  200. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +1 -1
  201. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +13 -0
  202. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +24 -5
  203. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +7 -0
  204. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +0 -52
  205. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +1 -10
  206. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +92 -0
  207. package/deps/rocksdb/rocksdb/util/thread_operation.h +1 -0
  208. package/deps/rocksdb/rocksdb/util/udt_util.cc +50 -4
  209. package/deps/rocksdb/rocksdb/util/udt_util.h +24 -11
  210. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +26 -13
  211. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -16
  212. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +2 -0
  213. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +214 -0
  214. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.h +60 -0
  215. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +124 -0
  216. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +441 -0
  217. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.cc +34 -3
  218. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_for_tiering_collector.h +7 -2
  219. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +437 -0
  220. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +34 -11
  221. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +14 -7
  222. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +7 -1
  223. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +17 -0
  224. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +69 -0
  225. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +20 -0
  226. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1290 -0
  227. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +324 -0
  228. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +18 -1
  229. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +8 -1
  230. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -12
  231. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +32 -3
  232. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +33 -2
  233. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +721 -9
  234. package/deps/rocksdb/rocksdb.gyp +2 -0
  235. package/package.json +1 -1
  236. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  237. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -92,13 +92,12 @@ class TableCache {
92
92
  const ReadOptions& options, const FileOptions& toptions,
93
93
  const InternalKeyComparator& internal_comparator,
94
94
  const FileMetaData& file_meta, RangeDelAggregator* range_del_agg,
95
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
95
+ const MutableCFOptions& mutable_cf_options,
96
96
  TableReader** table_reader_ptr, HistogramImpl* file_read_hist,
97
97
  TableReaderCaller caller, Arena* arena, bool skip_filters, int level,
98
98
  size_t max_file_size_for_l0_meta_pin,
99
99
  const InternalKey* smallest_compaction_key,
100
100
  const InternalKey* largest_compaction_key, bool allow_unprepared_value,
101
- uint8_t protection_bytes_per_key,
102
101
  const SequenceNumber* range_del_read_seqno = nullptr,
103
102
  std::unique_ptr<TruncatedRangeDelIterator>* range_del_iter = nullptr);
104
103
 
@@ -112,21 +111,20 @@ class TableCache {
112
111
  // recorded
113
112
  // @param skip_filters Disables loading/accessing the filter block
114
113
  // @param level The level this table is at, -1 for "not set / don't know"
115
- Status Get(
116
- const ReadOptions& options,
117
- const InternalKeyComparator& internal_comparator,
118
- const FileMetaData& file_meta, const Slice& k, GetContext* get_context,
119
- uint8_t block_protection_bytes_per_key,
120
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
121
- HistogramImpl* file_read_hist = nullptr, bool skip_filters = false,
122
- int level = -1, size_t max_file_size_for_l0_meta_pin = 0);
114
+ Status Get(const ReadOptions& options,
115
+ const InternalKeyComparator& internal_comparator,
116
+ const FileMetaData& file_meta, const Slice& k,
117
+ GetContext* get_context,
118
+ const MutableCFOptions& mutable_cf_options,
119
+ HistogramImpl* file_read_hist = nullptr, bool skip_filters = false,
120
+ int level = -1, size_t max_file_size_for_l0_meta_pin = 0);
123
121
 
124
122
  // Return the range delete tombstone iterator of the file specified by
125
123
  // `file_meta`.
126
124
  Status GetRangeTombstoneIterator(
127
125
  const ReadOptions& options,
128
126
  const InternalKeyComparator& internal_comparator,
129
- const FileMetaData& file_meta, uint8_t block_protection_bytes_per_key,
127
+ const FileMetaData& file_meta, const MutableCFOptions& mutable_cf_options,
130
128
  std::unique_ptr<FragmentedRangeTombstoneIterator>* out_iter);
131
129
 
132
130
  // Call table reader's MultiGetFilter to use the bloom filter to filter out
@@ -134,14 +132,13 @@ class TableCache {
134
132
  // If the table cache is looked up to get the table reader, the cache handle
135
133
  // is returned in table_handle. This handle should be passed back to
136
134
  // MultiGet() so it can be released.
137
- Status MultiGetFilter(
138
- const ReadOptions& options,
139
- const InternalKeyComparator& internal_comparator,
140
- const FileMetaData& file_meta,
141
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
142
- HistogramImpl* file_read_hist, int level,
143
- MultiGetContext::Range* mget_range, TypedHandle** table_handle,
144
- uint8_t block_protection_bytes_per_key);
135
+ Status MultiGetFilter(const ReadOptions& options,
136
+ const InternalKeyComparator& internal_comparator,
137
+ const FileMetaData& file_meta,
138
+ const MutableCFOptions& mutable_cf_options,
139
+ HistogramImpl* file_read_hist, int level,
140
+ MultiGetContext::Range* mget_range,
141
+ TypedHandle** table_handle);
145
142
 
146
143
  // If a seek to internal key "k" in specified file finds an entry,
147
144
  // call get_context->SaveValue() repeatedly until
@@ -152,22 +149,24 @@ class TableCache {
152
149
  // in the embedded GetContext
153
150
  // @param skip_filters Disables loading/accessing the filter block
154
151
  // @param level The level this table is at, -1 for "not set / don't know"
155
- DECLARE_SYNC_AND_ASYNC(
156
- Status, MultiGet, const ReadOptions& options,
157
- const InternalKeyComparator& internal_comparator,
158
- const FileMetaData& file_meta, const MultiGetContext::Range* mget_range,
159
- uint8_t block_protection_bytes_per_key,
160
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
161
- HistogramImpl* file_read_hist = nullptr, bool skip_filters = false,
162
- bool skip_range_deletions = false, int level = -1,
163
- TypedHandle* table_handle = nullptr);
152
+ DECLARE_SYNC_AND_ASYNC(Status, MultiGet, const ReadOptions& options,
153
+ const InternalKeyComparator& internal_comparator,
154
+ const FileMetaData& file_meta,
155
+ const MultiGetContext::Range* mget_range,
156
+ const MutableCFOptions& mutable_cf_options,
157
+ HistogramImpl* file_read_hist = nullptr,
158
+ bool skip_filters = false,
159
+ bool skip_range_deletions = false, int level = -1,
160
+ TypedHandle* table_handle = nullptr);
164
161
 
165
- // Evict any entry for the specified file number
162
+ // Evict any entry for the specified file number. ReleaseObsolete() is
163
+ // preferred for cleaning up from obsolete files.
166
164
  static void Evict(Cache* cache, uint64_t file_number);
167
165
 
168
166
  // Handles releasing, erasing, etc. of what should be the last reference
169
- // to an obsolete file.
170
- static void ReleaseObsolete(Cache* cache, Cache::Handle* handle,
167
+ // to an obsolete file. `handle` may be nullptr if no prior handle is known.
168
+ static void ReleaseObsolete(Cache* cache, uint64_t file_number,
169
+ Cache::Handle* handle,
171
170
  uint32_t uncache_aggressiveness);
172
171
 
173
172
  // Return handle to an existing cache entry if there is one
@@ -176,17 +175,16 @@ class TableCache {
176
175
  // Find table reader
177
176
  // @param skip_filters Disables loading/accessing the filter block
178
177
  // @param level == -1 means not specified
179
- Status FindTable(
180
- const ReadOptions& ro, const FileOptions& toptions,
181
- const InternalKeyComparator& internal_comparator,
182
- const FileMetaData& file_meta, TypedHandle**,
183
- uint8_t block_protection_bytes_per_key,
184
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
185
- const bool no_io = false, HistogramImpl* file_read_hist = nullptr,
186
- bool skip_filters = false, int level = -1,
187
- bool prefetch_index_and_filter_in_cache = true,
188
- size_t max_file_size_for_l0_meta_pin = 0,
189
- Temperature file_temperature = Temperature::kUnknown);
178
+ Status FindTable(const ReadOptions& ro, const FileOptions& toptions,
179
+ const InternalKeyComparator& internal_comparator,
180
+ const FileMetaData& file_meta, TypedHandle**,
181
+ const MutableCFOptions& mutable_cf_options,
182
+ const bool no_io = false,
183
+ HistogramImpl* file_read_hist = nullptr,
184
+ bool skip_filters = false, int level = -1,
185
+ bool prefetch_index_and_filter_in_cache = true,
186
+ size_t max_file_size_for_l0_meta_pin = 0,
187
+ Temperature file_temperature = Temperature::kUnknown);
190
188
 
191
189
  // Get the table properties of a given table.
192
190
  // @no_io: indicates if we should load table to the cache if it is not present
@@ -194,19 +192,18 @@ class TableCache {
194
192
  // @returns: `properties` will be reset on success. Please note that we will
195
193
  // return Status::Incomplete() if table is not present in cache and
196
194
  // we set `no_io` to be true.
197
- Status GetTableProperties(
198
- const FileOptions& toptions, const ReadOptions& read_options,
199
- const InternalKeyComparator& internal_comparator,
200
- const FileMetaData& file_meta,
201
- std::shared_ptr<const TableProperties>* properties,
202
- uint8_t block_protection_bytes_per_key,
203
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
204
- bool no_io = false);
195
+ Status GetTableProperties(const FileOptions& toptions,
196
+ const ReadOptions& read_options,
197
+ const InternalKeyComparator& internal_comparator,
198
+ const FileMetaData& file_meta,
199
+ std::shared_ptr<const TableProperties>* properties,
200
+ const MutableCFOptions& mutable_cf_options,
201
+ bool no_io = false);
205
202
 
206
203
  Status ApproximateKeyAnchors(const ReadOptions& ro,
207
204
  const InternalKeyComparator& internal_comparator,
208
205
  const FileMetaData& file_meta,
209
- uint8_t block_protection_bytes_per_key,
206
+ const MutableCFOptions& mutable_cf_options,
210
207
  std::vector<TableReader::Anchor>& anchors);
211
208
 
212
209
  // Return total memory usage of the table reader of the file.
@@ -214,25 +211,23 @@ class TableCache {
214
211
  size_t GetMemoryUsageByTableReader(
215
212
  const FileOptions& toptions, const ReadOptions& read_options,
216
213
  const InternalKeyComparator& internal_comparator,
217
- const FileMetaData& file_meta, uint8_t block_protection_bytes_per_key,
218
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr);
214
+ const FileMetaData& file_meta,
215
+ const MutableCFOptions& mutable_cf_options);
219
216
 
220
217
  // Returns approximated offset of a key in a file represented by fd.
221
- uint64_t ApproximateOffsetOf(
222
- const ReadOptions& read_options, const Slice& key,
223
- const FileMetaData& file_meta, TableReaderCaller caller,
224
- const InternalKeyComparator& internal_comparator,
225
- uint8_t block_protection_bytes_per_key,
226
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr);
218
+ uint64_t ApproximateOffsetOf(const ReadOptions& read_options,
219
+ const Slice& key, const FileMetaData& file_meta,
220
+ TableReaderCaller caller,
221
+ const InternalKeyComparator& internal_comparator,
222
+ const MutableCFOptions& mutable_cf_options);
227
223
 
228
224
  // Returns approximated data size between start and end keys in a file
229
225
  // represented by fd (the start key must not be greater than the end key).
230
- uint64_t ApproximateSize(
231
- const ReadOptions& read_options, const Slice& start, const Slice& end,
232
- const FileMetaData& file_meta, TableReaderCaller caller,
233
- const InternalKeyComparator& internal_comparator,
234
- uint8_t block_protection_bytes_per_key,
235
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr);
226
+ uint64_t ApproximateSize(const ReadOptions& read_options, const Slice& start,
227
+ const Slice& end, const FileMetaData& file_meta,
228
+ TableReaderCaller caller,
229
+ const InternalKeyComparator& internal_comparator,
230
+ const MutableCFOptions& mutable_cf_options);
236
231
 
237
232
  CacheInterface& get_cache() { return cache_; }
238
233
 
@@ -250,17 +245,16 @@ class TableCache {
250
245
 
251
246
  private:
252
247
  // Build a table reader
253
- Status GetTableReader(
254
- const ReadOptions& ro, const FileOptions& file_options,
255
- const InternalKeyComparator& internal_comparator,
256
- const FileMetaData& file_meta, bool sequential_mode,
257
- uint8_t block_protection_bytes_per_key, HistogramImpl* file_read_hist,
258
- std::unique_ptr<TableReader>* table_reader,
259
- const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
260
- bool skip_filters = false, int level = -1,
261
- bool prefetch_index_and_filter_in_cache = true,
262
- size_t max_file_size_for_l0_meta_pin = 0,
263
- Temperature file_temperature = Temperature::kUnknown);
248
+ Status GetTableReader(const ReadOptions& ro, const FileOptions& file_options,
249
+ const InternalKeyComparator& internal_comparator,
250
+ const FileMetaData& file_meta, bool sequential_mode,
251
+ HistogramImpl* file_read_hist,
252
+ std::unique_ptr<TableReader>* table_reader,
253
+ const MutableCFOptions& mutable_cf_options,
254
+ bool skip_filters = false, int level = -1,
255
+ bool prefetch_index_and_filter_in_cache = true,
256
+ size_t max_file_size_for_l0_meta_pin = 0,
257
+ Temperature file_temperature = Temperature::kUnknown);
264
258
 
265
259
  // Update the max_covering_tombstone_seq in the GetContext for each key based
266
260
  // on the range deletions in the table
@@ -17,10 +17,8 @@ namespace ROCKSDB_NAMESPACE {
17
17
  DEFINE_SYNC_AND_ASYNC(Status, TableCache::MultiGet)
18
18
  (const ReadOptions& options, const InternalKeyComparator& internal_comparator,
19
19
  const FileMetaData& file_meta, const MultiGetContext::Range* mget_range,
20
- uint8_t block_protection_bytes_per_key,
21
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
22
- HistogramImpl* file_read_hist, bool skip_filters, bool skip_range_deletions,
23
- int level, TypedHandle* handle) {
20
+ const MutableCFOptions& mutable_cf_options, HistogramImpl* file_read_hist,
21
+ bool skip_filters, bool skip_range_deletions, int level, TypedHandle* handle) {
24
22
  auto& fd = file_meta.fd;
25
23
  Status s;
26
24
  TableReader* t = fd.table_reader;
@@ -72,7 +70,7 @@ DEFINE_SYNC_AND_ASYNC(Status, TableCache::MultiGet)
72
70
  if (t == nullptr) {
73
71
  assert(handle == nullptr);
74
72
  s = FindTable(options, file_options_, internal_comparator, file_meta,
75
- &handle, block_protection_bytes_per_key, prefix_extractor,
73
+ &handle, mutable_cf_options,
76
74
  options.read_tier == kBlockCacheTier /* no_io */,
77
75
  file_read_hist, skip_filters, level,
78
76
  true /* prefetch_index_and_filter_in_cache */,
@@ -88,7 +86,8 @@ DEFINE_SYNC_AND_ASYNC(Status, TableCache::MultiGet)
88
86
  }
89
87
  if (s.ok()) {
90
88
  CO_AWAIT(t->MultiGet)
91
- (options, &table_range, prefix_extractor.get(), skip_filters);
89
+ (options, &table_range, mutable_cf_options.prefix_extractor.get(),
90
+ skip_filters);
92
91
  } else if (options.read_tier == kBlockCacheTier && s.IsIncomplete()) {
93
92
  for (auto iter = table_range.begin(); iter != table_range.end(); ++iter) {
94
93
  Status* status = iter->s;
@@ -58,7 +58,7 @@ void MakeBuilder(
58
58
  ioptions, moptions, read_options, write_options, internal_comparator,
59
59
  internal_tbl_prop_coll_factories, options.compression,
60
60
  options.compression_opts, kTestColumnFamilyId, kTestColumnFamilyName,
61
- kTestLevel);
61
+ kTestLevel, kUnknownNewestKeyTime);
62
62
  builder->reset(NewTableBuilder(tboptions, writable->get()));
63
63
  }
64
64
  } // namespace
@@ -231,13 +231,14 @@ bool TransactionLogIteratorImpl::IsBatchExpected(
231
231
  assert(batch);
232
232
  SequenceNumber batchSeq = WriteBatchInternal::Sequence(batch);
233
233
  if (batchSeq != expected_seq) {
234
- char buf[200];
235
- snprintf(buf, sizeof(buf),
236
- "Discontinuity in log records. Got seq=%" PRIu64
237
- ", Expected seq=%" PRIu64 ", Last flushed seq=%" PRIu64
238
- ".Log iterator will reseek the correct batch.",
239
- batchSeq, expected_seq, versions_->LastSequence());
240
- reporter_.Info(buf);
234
+ std::ostringstream oss;
235
+ oss << "Discontinuity in log records. "
236
+ << "Got seq=" << batchSeq << ", "
237
+ << "Expected seq=" << expected_seq << ", "
238
+ << "Last flushed seq=" << versions_->LastSequence() << ". "
239
+ << "Log iterator will reseek the correct batch.";
240
+
241
+ reporter_.Info(oss.str().c_str());
241
242
  return false;
242
243
  }
243
244
  return true;
@@ -1637,12 +1637,12 @@ class VersionBuilder::Rep {
1637
1637
  return s;
1638
1638
  }
1639
1639
 
1640
- Status LoadTableHandlers(
1641
- InternalStats* internal_stats, int max_threads,
1642
- bool prefetch_index_and_filter_in_cache, bool is_initial_load,
1643
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
1644
- size_t max_file_size_for_l0_meta_pin, const ReadOptions& read_options,
1645
- uint8_t block_protection_bytes_per_key) {
1640
+ Status LoadTableHandlers(InternalStats* internal_stats, int max_threads,
1641
+ bool prefetch_index_and_filter_in_cache,
1642
+ bool is_initial_load,
1643
+ const MutableCFOptions& mutable_cf_options,
1644
+ size_t max_file_size_for_l0_meta_pin,
1645
+ const ReadOptions& read_options) {
1646
1646
  assert(table_cache_ != nullptr);
1647
1647
  assert(!track_found_and_missing_files_ || valid_version_available_);
1648
1648
 
@@ -1717,7 +1717,7 @@ class VersionBuilder::Rep {
1717
1717
  statuses[file_idx] = table_cache_->FindTable(
1718
1718
  read_options, file_options_,
1719
1719
  *(base_vstorage_->InternalComparator()), *file_meta, &handle,
1720
- block_protection_bytes_per_key, prefix_extractor, false /*no_io */,
1720
+ mutable_cf_options, false /*no_io */,
1721
1721
  internal_stats->GetFileReadHist(level), false, level,
1722
1722
  prefetch_index_and_filter_in_cache, max_file_size_for_l0_meta_pin,
1723
1723
  file_meta->temperature);
@@ -1778,13 +1778,12 @@ Status VersionBuilder::SaveTo(VersionStorageInfo* vstorage) const {
1778
1778
  Status VersionBuilder::LoadTableHandlers(
1779
1779
  InternalStats* internal_stats, int max_threads,
1780
1780
  bool prefetch_index_and_filter_in_cache, bool is_initial_load,
1781
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
1782
- size_t max_file_size_for_l0_meta_pin, const ReadOptions& read_options,
1783
- uint8_t block_protection_bytes_per_key) {
1784
- return rep_->LoadTableHandlers(
1785
- internal_stats, max_threads, prefetch_index_and_filter_in_cache,
1786
- is_initial_load, prefix_extractor, max_file_size_for_l0_meta_pin,
1787
- read_options, block_protection_bytes_per_key);
1781
+ const MutableCFOptions& mutable_cf_options,
1782
+ size_t max_file_size_for_l0_meta_pin, const ReadOptions& read_options) {
1783
+ return rep_->LoadTableHandlers(internal_stats, max_threads,
1784
+ prefetch_index_and_filter_in_cache,
1785
+ is_initial_load, mutable_cf_options,
1786
+ max_file_size_for_l0_meta_pin, read_options);
1788
1787
  }
1789
1788
 
1790
1789
  void VersionBuilder::CreateOrReplaceSavePoint() {
@@ -1815,16 +1814,15 @@ Status VersionBuilder::SaveSavePointTo(VersionStorageInfo* vstorage) const {
1815
1814
  Status VersionBuilder::LoadSavePointTableHandlers(
1816
1815
  InternalStats* internal_stats, int max_threads,
1817
1816
  bool prefetch_index_and_filter_in_cache, bool is_initial_load,
1818
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
1819
- size_t max_file_size_for_l0_meta_pin, const ReadOptions& read_options,
1820
- uint8_t block_protection_bytes_per_key) {
1817
+ const MutableCFOptions& mutable_cf_options,
1818
+ size_t max_file_size_for_l0_meta_pin, const ReadOptions& read_options) {
1821
1819
  if (!savepoint_ || !savepoint_->ValidVersionAvailable()) {
1822
1820
  return Status::InvalidArgument();
1823
1821
  }
1824
1822
  return savepoint_->LoadTableHandlers(
1825
1823
  internal_stats, max_threads, prefetch_index_and_filter_in_cache,
1826
- is_initial_load, prefix_extractor, max_file_size_for_l0_meta_pin,
1827
- read_options, block_protection_bytes_per_key);
1824
+ is_initial_load, mutable_cf_options, max_file_size_for_l0_meta_pin,
1825
+ read_options);
1828
1826
  }
1829
1827
 
1830
1828
  void VersionBuilder::ClearSavePoint() { savepoint_.reset(nullptr); }
@@ -54,12 +54,12 @@ class VersionBuilder {
54
54
  Status SaveTo(VersionStorageInfo* vstorage) const;
55
55
 
56
56
  // Load all the table handlers for the current Version in the builder.
57
- Status LoadTableHandlers(
58
- InternalStats* internal_stats, int max_threads,
59
- bool prefetch_index_and_filter_in_cache, bool is_initial_load,
60
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
61
- size_t max_file_size_for_l0_meta_pin, const ReadOptions& read_options,
62
- uint8_t block_protection_bytes_per_key);
57
+ Status LoadTableHandlers(InternalStats* internal_stats, int max_threads,
58
+ bool prefetch_index_and_filter_in_cache,
59
+ bool is_initial_load,
60
+ const MutableCFOptions& mutable_cf_options,
61
+ size_t max_file_size_for_l0_meta_pin,
62
+ const ReadOptions& read_options);
63
63
 
64
64
  //============APIs only used by VersionEditHandlerPointInTime ============//
65
65
 
@@ -99,12 +99,13 @@ class VersionBuilder {
99
99
 
100
100
  // Load all the table handlers for the Version in the save point.
101
101
  // Non-OK status will be returned if there is not a valid save point.
102
- Status LoadSavePointTableHandlers(
103
- InternalStats* internal_stats, int max_threads,
104
- bool prefetch_index_and_filter_in_cache, bool is_initial_load,
105
- const std::shared_ptr<const SliceTransform>& prefix_extractor,
106
- size_t max_file_size_for_l0_meta_pin, const ReadOptions& read_options,
107
- uint8_t block_protection_bytes_per_key);
102
+ Status LoadSavePointTableHandlers(InternalStats* internal_stats,
103
+ int max_threads,
104
+ bool prefetch_index_and_filter_in_cache,
105
+ bool is_initial_load,
106
+ const MutableCFOptions& mutable_cf_options,
107
+ size_t max_file_size_for_l0_meta_pin,
108
+ const ReadOptions& read_options);
108
109
 
109
110
  void ClearSavePoint();
110
111
 
@@ -107,6 +107,7 @@ class VersionSet;
107
107
 
108
108
  constexpr uint64_t kFileNumberMask = 0x3FFFFFFFFFFFFFFF;
109
109
  constexpr uint64_t kUnknownOldestAncesterTime = 0;
110
+ constexpr uint64_t kUnknownNewestKeyTime = 0;
110
111
  constexpr uint64_t kUnknownFileCreationTime = 0;
111
112
  constexpr uint64_t kUnknownEpochNumber = 0;
112
113
  // If `Options::allow_ingest_behind` is true, this epoch number
@@ -333,6 +334,27 @@ struct FileMetaData {
333
334
  return kUnknownFileCreationTime;
334
335
  }
335
336
 
337
+ // Tries to get the newest key time from the current file
338
+ // Falls back on oldest ancestor time of previous (newer) file
339
+ uint64_t TryGetNewestKeyTime(FileMetaData* prev_file = nullptr) {
340
+ if (fd.table_reader != nullptr &&
341
+ fd.table_reader->GetTableProperties() != nullptr) {
342
+ uint64_t newest_key_time =
343
+ fd.table_reader->GetTableProperties()->newest_key_time;
344
+ if (newest_key_time != kUnknownNewestKeyTime) {
345
+ return newest_key_time;
346
+ }
347
+ }
348
+ if (prev_file != nullptr) {
349
+ uint64_t prev_oldest_ancestor_time =
350
+ prev_file->TryGetOldestAncesterTime();
351
+ if (prev_oldest_ancestor_time != kUnknownOldestAncesterTime) {
352
+ return prev_oldest_ancestor_time;
353
+ }
354
+ }
355
+ return kUnknownNewestKeyTime;
356
+ }
357
+
336
358
  // WARNING: manual update to this function is needed
337
359
  // whenever a new string property is added to FileMetaData
338
360
  // to reduce approximation error.
@@ -350,6 +372,14 @@ struct FileMetaData {
350
372
  file_checksum_func_name.size();
351
373
  return usage;
352
374
  }
375
+
376
+ // Returns whether this file is one with just one range tombstone. These type
377
+ // of file should always be marked for compaction.
378
+ bool FileIsStandAloneRangeTombstone() const {
379
+ bool res = num_range_deletions == 1 && num_entries == num_range_deletions;
380
+ assert(!res || fd.smallest_seqno == fd.largest_seqno);
381
+ return res;
382
+ }
353
383
  };
354
384
 
355
385
  // A compressed copy of file meta data that just contain minimum data needed
@@ -545,9 +545,8 @@ Status VersionEditHandler::LoadTables(ColumnFamilyData* cfd,
545
545
  Status s = builder->LoadTableHandlers(
546
546
  cfd->internal_stats(),
547
547
  version_set_->db_options_->max_file_opening_threads,
548
- prefetch_index_and_filter_in_cache, is_initial_load,
549
- moptions->prefix_extractor, MaxFileSizeForL0MetaPin(*moptions),
550
- read_options_, moptions->block_protection_bytes_per_key);
548
+ prefetch_index_and_filter_in_cache, is_initial_load, *moptions,
549
+ MaxFileSizeForL0MetaPin(*moptions), read_options_);
551
550
  if ((s.IsPathNotFound() || s.IsCorruption()) && no_error_if_files_missing_) {
552
551
  s = Status::OK();
553
552
  }
@@ -870,8 +869,7 @@ Status VersionEditHandlerPointInTime::MaybeCreateVersionBeforeApplyEdit(
870
869
  s = builder->LoadSavePointTableHandlers(
871
870
  cfd->internal_stats(),
872
871
  version_set_->db_options_->max_file_opening_threads, false, true,
873
- cf_opts_ptr->prefix_extractor, MaxFileSizeForL0MetaPin(*cf_opts_ptr),
874
- read_options_, cf_opts_ptr->block_protection_bytes_per_key);
872
+ *cf_opts_ptr, MaxFileSizeForL0MetaPin(*cf_opts_ptr), read_options_);
875
873
  if (!s.ok()) {
876
874
  delete version;
877
875
  if (s.IsCorruption()) {