@nxtedition/rocksdb 13.1.4 → 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 +43 -16
  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
@@ -379,12 +379,12 @@ class TableConstructor : public Constructor {
379
379
  std::string column_family_name;
380
380
  const ReadOptions read_options;
381
381
  const WriteOptions write_options;
382
- builder.reset(ioptions.table_factory->NewTableBuilder(
383
- TableBuilderOptions(ioptions, moptions, read_options, write_options,
384
- internal_comparator,
385
- &internal_tbl_prop_coll_factories,
386
- options.compression, options.compression_opts,
387
- kUnknownColumnFamily, column_family_name, level_),
382
+ builder.reset(moptions.table_factory->NewTableBuilder(
383
+ TableBuilderOptions(
384
+ ioptions, moptions, read_options, write_options,
385
+ internal_comparator, &internal_tbl_prop_coll_factories,
386
+ options.compression, options.compression_opts, kUnknownColumnFamily,
387
+ column_family_name, level_, kUnknownNewestKeyTime),
388
388
  file_writer_.get()));
389
389
 
390
390
  for (const auto& kv : kv_map) {
@@ -440,7 +440,7 @@ class TableConstructor : public Constructor {
440
440
  TEST_GetSink()->contents(), file_num_, ioptions.allow_mmap_reads));
441
441
 
442
442
  file_reader_.reset(new RandomAccessFileReader(std::move(source), "test"));
443
- return ioptions.table_factory->NewTableReader(
443
+ return moptions.table_factory->NewTableReader(
444
444
  TableReaderOptions(ioptions, moptions.prefix_extractor, soptions,
445
445
  *last_internal_comparator_,
446
446
  0 /* block_protection_bytes_per_key */,
@@ -534,7 +534,8 @@ class MemTableConstructor : public Constructor {
534
534
  const SliceTransform* /*prefix_extractor*/) const override {
535
535
  return new KeyConvertingIterator(
536
536
  memtable_->NewIterator(ReadOptions(), /*seqno_to_time_mapping=*/nullptr,
537
- &arena_, /*prefix_extractor=*/nullptr),
537
+ &arena_, /*prefix_extractor=*/nullptr,
538
+ /*for_flush=*/false),
538
539
  true);
539
540
  }
540
541
 
@@ -3252,14 +3253,14 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupSeqScans) {
3252
3253
  FilePrefetchBuffer* prefetch_buffer =
3253
3254
  (static_cast<BlockBasedTableIterator*>(iter.get()))
3254
3255
  ->prefetch_buffer();
3255
- std::vector<std::pair<uint64_t, size_t>> buffer_info(1);
3256
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(1);
3256
3257
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3257
3258
 
3258
3259
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first, block_handle);
3259
3260
  // It won't prefetch the data of cache hit.
3260
3261
  // One block data.
3261
- ASSERT_EQ(buffer_info[0].second, 4096);
3262
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3262
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 4096);
3263
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3263
3264
 
3264
3265
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3265
3266
  1);
@@ -3290,14 +3291,14 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupSeqScans) {
3290
3291
  FilePrefetchBuffer* prefetch_buffer =
3291
3292
  (static_cast<BlockBasedTableIterator*>(iter.get()))
3292
3293
  ->prefetch_buffer();
3293
- std::vector<std::pair<uint64_t, size_t>> buffer_info(1);
3294
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(1);
3294
3295
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3295
3296
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first, block_handle);
3296
3297
 
3297
3298
  // It won't prefetch the data of cache hit.
3298
3299
  // 3 blocks data.
3299
- ASSERT_EQ(buffer_info[0].second, 12288);
3300
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3300
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 12288);
3301
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3301
3302
 
3302
3303
  for (; kv_iter != kvmap.end() && iter->Valid(); kv_iter++) {
3303
3304
  ASSERT_EQ(iter->key(), kv_iter->first);
@@ -3313,8 +3314,8 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupSeqScans) {
3313
3314
  // Second Prefetch.
3314
3315
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3315
3316
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first, block_handle);
3316
- ASSERT_EQ(buffer_info[0].second, 20480);
3317
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3317
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 20480);
3318
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3318
3319
 
3319
3320
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3320
3321
  1);
@@ -3401,13 +3402,13 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupAsyncScansSeek) {
3401
3402
  FilePrefetchBuffer* prefetch_buffer =
3402
3403
  (static_cast<BlockBasedTableIterator*>(iter.get()))
3403
3404
  ->prefetch_buffer();
3404
- std::vector<std::pair<uint64_t, size_t>> buffer_info(2);
3405
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(2);
3405
3406
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3406
3407
 
3407
3408
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first, block_handle);
3408
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3409
- ASSERT_EQ(buffer_info[0].second, 4096);
3410
- ASSERT_EQ(buffer_info[1].second, 0);
3409
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3410
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 4096);
3411
+ ASSERT_EQ(std::get<1>(buffer_info[1]), 0);
3411
3412
 
3412
3413
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3413
3414
  2);
@@ -3440,21 +3441,21 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupAsyncScansSeek) {
3440
3441
  FilePrefetchBuffer* prefetch_buffer =
3441
3442
  (static_cast<BlockBasedTableIterator*>(iter.get()))
3442
3443
  ->prefetch_buffer();
3443
- std::vector<std::pair<uint64_t, size_t>> buffer_info(2);
3444
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(2);
3444
3445
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3445
3446
  {
3446
3447
  // 1st Buffer Verification.
3447
3448
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first,
3448
3449
  block_handle);
3449
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3450
- ASSERT_EQ(buffer_info[0].second, 8192);
3450
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3451
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 8192);
3451
3452
 
3452
3453
  // 2nd Buffer Verification.
3453
3454
  InternalKey ikey_tmp("00000360", 0, kTypeValue);
3454
3455
  bbt->TEST_GetDataBlockHandle(read_options, ikey_tmp.Encode().ToString(),
3455
3456
  block_handle);
3456
- ASSERT_EQ(buffer_info[1].first, block_handle.offset());
3457
- ASSERT_EQ(buffer_info[1].second, 8192);
3457
+ ASSERT_EQ(std::get<0>(buffer_info[1]), block_handle.offset());
3458
+ ASSERT_EQ(std::get<1>(buffer_info[1]), 8192);
3458
3459
 
3459
3460
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3460
3461
  1);
@@ -3493,21 +3494,21 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupAsyncScansSeek) {
3493
3494
  ->prefetch_buffer();
3494
3495
 
3495
3496
  {
3496
- std::vector<std::pair<uint64_t, size_t>> buffer_info(2);
3497
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(2);
3497
3498
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3498
3499
 
3499
3500
  // 1st Buffer Verification.
3500
3501
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first,
3501
3502
  block_handle);
3502
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3503
- ASSERT_EQ(buffer_info[0].second, 8192);
3503
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3504
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 8192);
3504
3505
 
3505
3506
  // 2nd Buffer Verification.
3506
3507
  InternalKey ikey_tmp("00000540", 0, kTypeValue);
3507
3508
  bbt->TEST_GetDataBlockHandle(read_options, ikey_tmp.Encode().ToString(),
3508
3509
  block_handle);
3509
- ASSERT_EQ(buffer_info[1].first, block_handle.offset());
3510
- ASSERT_EQ(buffer_info[1].second, 8192);
3510
+ ASSERT_EQ(std::get<0>(buffer_info[1]), block_handle.offset());
3511
+ ASSERT_EQ(std::get<1>(buffer_info[1]), 8192);
3511
3512
 
3512
3513
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3513
3514
  1);
@@ -3527,21 +3528,21 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupAsyncScansSeek) {
3527
3528
  }
3528
3529
 
3529
3530
  {
3530
- std::vector<std::pair<uint64_t, size_t>> buffer_info(2);
3531
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(2);
3531
3532
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3532
3533
 
3533
3534
  // 1st Buffer Verification.
3534
3535
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first,
3535
3536
  block_handle);
3536
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3537
- ASSERT_EQ(buffer_info[0].second, 8192);
3537
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3538
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 8192);
3538
3539
 
3539
3540
  // 2nd Buffer Verification.
3540
3541
  InternalKey ikey_tmp("00000585", 0, kTypeValue);
3541
3542
  bbt->TEST_GetDataBlockHandle(read_options, ikey_tmp.Encode().ToString(),
3542
3543
  block_handle);
3543
- ASSERT_EQ(buffer_info[1].first, block_handle.offset());
3544
- ASSERT_EQ(buffer_info[1].second, 4096);
3544
+ ASSERT_EQ(std::get<0>(buffer_info[1]), block_handle.offset());
3545
+ ASSERT_EQ(std::get<1>(buffer_info[1]), 4096);
3545
3546
 
3546
3547
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3547
3548
  1);
@@ -3561,21 +3562,21 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupAsyncScansSeek) {
3561
3562
  }
3562
3563
 
3563
3564
  {
3564
- std::vector<std::pair<uint64_t, size_t>> buffer_info(2);
3565
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(2);
3565
3566
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3566
3567
 
3567
3568
  // 1st Buffer Verification.
3568
3569
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first,
3569
3570
  block_handle);
3570
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3571
- ASSERT_EQ(buffer_info[0].second, 4096);
3571
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3572
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 4096);
3572
3573
 
3573
3574
  // 2nd Buffer Verification.
3574
3575
  InternalKey ikey_tmp("00000615", 0, kTypeValue);
3575
3576
  bbt->TEST_GetDataBlockHandle(read_options, ikey_tmp.Encode().ToString(),
3576
3577
  block_handle);
3577
- ASSERT_EQ(buffer_info[1].first, block_handle.offset());
3578
- ASSERT_EQ(buffer_info[1].second, 4096);
3578
+ ASSERT_EQ(std::get<0>(buffer_info[1]), block_handle.offset());
3579
+ ASSERT_EQ(std::get<1>(buffer_info[1]), 4096);
3579
3580
 
3580
3581
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3581
3582
  1);
@@ -3595,21 +3596,21 @@ TEST_P(BlockBasedTableTest, BlockCacheLookupAsyncScansSeek) {
3595
3596
  }
3596
3597
 
3597
3598
  {
3598
- std::vector<std::pair<uint64_t, size_t>> buffer_info(2);
3599
+ std::vector<std::tuple<uint64_t, size_t, bool>> buffer_info(2);
3599
3600
  prefetch_buffer->TEST_GetBufferOffsetandSize(buffer_info);
3600
3601
 
3601
3602
  // 1st Buffer Verification.
3602
3603
  bbt->TEST_GetDataBlockHandle(read_options, kv_iter->first,
3603
3604
  block_handle);
3604
- ASSERT_EQ(buffer_info[0].first, block_handle.offset());
3605
- ASSERT_EQ(buffer_info[0].second, 4096);
3605
+ ASSERT_EQ(std::get<0>(buffer_info[0]), block_handle.offset());
3606
+ ASSERT_EQ(std::get<1>(buffer_info[0]), 4096);
3606
3607
 
3607
3608
  // 2nd Buffer Verification.
3608
3609
  InternalKey ikey_tmp("00000630", 0, kTypeValue);
3609
3610
  bbt->TEST_GetDataBlockHandle(read_options, ikey_tmp.Encode().ToString(),
3610
3611
  block_handle);
3611
- ASSERT_EQ(buffer_info[1].first, block_handle.offset());
3612
- ASSERT_EQ(buffer_info[1].second, 8192);
3612
+ ASSERT_EQ(std::get<0>(buffer_info[1]), block_handle.offset());
3613
+ ASSERT_EQ(std::get<1>(buffer_info[1]), 8192);
3613
3614
 
3614
3615
  ASSERT_EQ(options.statistics->getAndResetTickerCount(READAHEAD_TRIMMED),
3615
3616
  0);
@@ -4460,11 +4461,12 @@ TEST_P(BlockBasedTableTest, NoFileChecksum) {
4460
4461
  std::unique_ptr<TableBuilder> builder;
4461
4462
  const ReadOptions read_options;
4462
4463
  const WriteOptions write_options;
4463
- builder.reset(ioptions.table_factory->NewTableBuilder(
4464
+ builder.reset(moptions.table_factory->NewTableBuilder(
4464
4465
  TableBuilderOptions(ioptions, moptions, read_options, write_options,
4465
4466
  *comparator, &internal_tbl_prop_coll_factories,
4466
4467
  options.compression, options.compression_opts,
4467
- kUnknownColumnFamily, column_family_name, level),
4468
+ kUnknownColumnFamily, column_family_name, level,
4469
+ kUnknownNewestKeyTime),
4468
4470
  f.GetFileWriter()));
4469
4471
  ASSERT_OK(f.ResetTableBuilder(std::move(builder)));
4470
4472
  f.AddKVtoKVMap(1000);
@@ -4498,11 +4500,12 @@ TEST_P(BlockBasedTableTest, Crc32cFileChecksum) {
4498
4500
  std::unique_ptr<TableBuilder> builder;
4499
4501
  const ReadOptions read_options;
4500
4502
  const WriteOptions write_options;
4501
- builder.reset(ioptions.table_factory->NewTableBuilder(
4503
+ builder.reset(moptions.table_factory->NewTableBuilder(
4502
4504
  TableBuilderOptions(ioptions, moptions, read_options, write_options,
4503
4505
  *comparator, &internal_tbl_prop_coll_factories,
4504
4506
  options.compression, options.compression_opts,
4505
- kUnknownColumnFamily, column_family_name, level),
4507
+ kUnknownColumnFamily, column_family_name, level,
4508
+ kUnknownNewestKeyTime),
4506
4509
  f.GetFileWriter()));
4507
4510
  ASSERT_OK(f.ResetTableBuilder(std::move(builder)));
4508
4511
  f.AddKVtoKVMap(1000);
@@ -4550,7 +4553,8 @@ TEST_F(PlainTableTest, BasicPlainTableProperties) {
4550
4553
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
4551
4554
  &internal_tbl_prop_coll_factories, kNoCompression,
4552
4555
  CompressionOptions(), kUnknownColumnFamily,
4553
- column_family_name, unknown_level),
4556
+ column_family_name, unknown_level,
4557
+ kUnknownNewestKeyTime),
4554
4558
  file_writer.get()));
4555
4559
 
4556
4560
  for (char c = 'a'; c <= 'z'; ++c) {
@@ -4605,7 +4609,8 @@ TEST_F(PlainTableTest, NoFileChecksum) {
4605
4609
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
4606
4610
  &internal_tbl_prop_coll_factories, kNoCompression,
4607
4611
  CompressionOptions(), kUnknownColumnFamily,
4608
- column_family_name, unknown_level),
4612
+ column_family_name, unknown_level,
4613
+ kUnknownNewestKeyTime),
4609
4614
  f.GetFileWriter()));
4610
4615
  ASSERT_OK(f.ResetTableBuilder(std::move(builder)));
4611
4616
  f.AddKVtoKVMap(1000);
@@ -4646,7 +4651,8 @@ TEST_F(PlainTableTest, Crc32cFileChecksum) {
4646
4651
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
4647
4652
  &internal_tbl_prop_coll_factories, kNoCompression,
4648
4653
  CompressionOptions(), kUnknownColumnFamily,
4649
- column_family_name, unknown_level),
4654
+ column_family_name, unknown_level,
4655
+ kUnknownNewestKeyTime),
4650
4656
  f.GetFileWriter()));
4651
4657
  ASSERT_OK(f.ResetTableBuilder(std::move(builder)));
4652
4658
  f.AddKVtoKVMap(1000);
@@ -4724,9 +4730,9 @@ static void DoCompressionTest(CompressionType comp) {
4724
4730
  ASSERT_TRUE(Between(c.ApproximateOffsetOf("abc"), 0, 0));
4725
4731
  ASSERT_TRUE(Between(c.ApproximateOffsetOf("k01"), 0, 0));
4726
4732
  ASSERT_TRUE(Between(c.ApproximateOffsetOf("k02"), 0, 0));
4727
- ASSERT_TRUE(Between(c.ApproximateOffsetOf("k03"), 2000, 3550));
4728
- ASSERT_TRUE(Between(c.ApproximateOffsetOf("k04"), 2000, 3550));
4729
- ASSERT_TRUE(Between(c.ApproximateOffsetOf("xyz"), 4000, 7100));
4733
+ ASSERT_TRUE(Between(c.ApproximateOffsetOf("k03"), 2000, 3555));
4734
+ ASSERT_TRUE(Between(c.ApproximateOffsetOf("k04"), 2000, 3555));
4735
+ ASSERT_TRUE(Between(c.ApproximateOffsetOf("xyz"), 4000, 7110));
4730
4736
  c.ResetTableReader();
4731
4737
  }
4732
4738
 
@@ -4906,7 +4912,8 @@ TEST_F(MemTableTest, Simple) {
4906
4912
  if (i == 0) {
4907
4913
  iter = GetMemTable()->NewIterator(ReadOptions(),
4908
4914
  /*seqno_to_time_mapping=*/nullptr,
4909
- &arena, /*prefix_extractor=*/nullptr);
4915
+ &arena, /*prefix_extractor=*/nullptr,
4916
+ /*for_flush=*/false);
4910
4917
  arena_iter_guard.reset(iter);
4911
4918
  } else {
4912
4919
  iter = GetMemTable()->NewRangeTombstoneIterator(
@@ -5261,7 +5268,7 @@ TEST_P(BlockBasedTableTest, DISABLED_TableWithGlobalSeqno) {
5261
5268
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
5262
5269
  &internal_tbl_prop_coll_factories, kNoCompression,
5263
5270
  CompressionOptions(), kUnknownColumnFamily,
5264
- column_family_name, -1),
5271
+ column_family_name, -1, kUnknownNewestKeyTime),
5265
5272
  file_writer.get()));
5266
5273
 
5267
5274
  for (char c = 'a'; c <= 'z'; ++c) {
@@ -5445,7 +5452,7 @@ TEST_P(BlockBasedTableTest, BlockAlignTest) {
5445
5452
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
5446
5453
  &internal_tbl_prop_coll_factories, kNoCompression,
5447
5454
  CompressionOptions(), kUnknownColumnFamily,
5448
- column_family_name, -1),
5455
+ column_family_name, -1, kUnknownNewestKeyTime),
5449
5456
  file_writer.get()));
5450
5457
 
5451
5458
  for (int i = 1; i <= 10000; ++i) {
@@ -5491,7 +5498,7 @@ TEST_P(BlockBasedTableTest, BlockAlignTest) {
5491
5498
  ImmutableOptions ioptions2(options2);
5492
5499
  const MutableCFOptions moptions2(options2);
5493
5500
 
5494
- ASSERT_OK(ioptions.table_factory->NewTableReader(
5501
+ ASSERT_OK(moptions.table_factory->NewTableReader(
5495
5502
  TableReaderOptions(ioptions2, moptions2.prefix_extractor, EnvOptions(),
5496
5503
  GetPlainInternalComparator(options2.comparator),
5497
5504
  0 /* block_protection_bytes_per_key */),
@@ -5631,7 +5638,7 @@ TEST_P(BlockBasedTableTest, PropertiesBlockRestartPointTest) {
5631
5638
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
5632
5639
  &internal_tbl_prop_coll_factories, kNoCompression,
5633
5640
  CompressionOptions(), kUnknownColumnFamily,
5634
- column_family_name, -1),
5641
+ column_family_name, -1, kUnknownNewestKeyTime),
5635
5642
  file_writer.get()));
5636
5643
 
5637
5644
  for (int i = 1; i <= 10000; ++i) {
@@ -6240,8 +6247,8 @@ TEST_F(ChargeCompressionDictionaryBuildingBufferTest, Basic) {
6240
6247
  TableBuilderOptions(ioptions, moptions, read_options, write_options,
6241
6248
  ikc, &internal_tbl_prop_coll_factories,
6242
6249
  kSnappyCompression, options.compression_opts,
6243
- kUnknownColumnFamily, "test_cf",
6244
- -1 /* level */),
6250
+ kUnknownColumnFamily, "test_cf", -1 /* level */,
6251
+ kUnknownNewestKeyTime),
6245
6252
  file_writer.get()));
6246
6253
 
6247
6254
  std::string key1 = "key1";
@@ -6318,7 +6325,7 @@ TEST_F(ChargeCompressionDictionaryBuildingBufferTest,
6318
6325
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
6319
6326
  &internal_tbl_prop_coll_factories, kSnappyCompression,
6320
6327
  options.compression_opts, kUnknownColumnFamily,
6321
- "test_cf", -1 /* level */),
6328
+ "test_cf", -1 /* level */, kUnknownNewestKeyTime),
6322
6329
  file_writer.get()));
6323
6330
 
6324
6331
  std::string key1 = "key1";
@@ -6405,7 +6412,7 @@ TEST_F(ChargeCompressionDictionaryBuildingBufferTest, BasicWithCacheFull) {
6405
6412
  TableBuilderOptions(ioptions, moptions, read_options, write_options, ikc,
6406
6413
  &internal_tbl_prop_coll_factories, kSnappyCompression,
6407
6414
  options.compression_opts, kUnknownColumnFamily,
6408
- "test_cf", -1 /* level */),
6415
+ "test_cf", -1 /* level */, kUnknownNewestKeyTime),
6409
6416
  file_writer.get()));
6410
6417
 
6411
6418
  std::string key1 = "key1";