@nxtedition/rocksdb 13.1.5 → 13.3.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 +62 -15
  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
@@ -395,10 +395,10 @@ Status SstFileWriter::Open(const std::string& file_path, Temperature temp) {
395
395
  r->ioptions, r->mutable_cf_options, ReadOptions(), r->write_options,
396
396
  r->internal_comparator, &internal_tbl_prop_coll_factories,
397
397
  compression_type, compression_opts, cf_id, r->column_family_name,
398
- unknown_level, false /* is_bottommost */, TableFileCreationReason::kMisc,
399
- 0 /* oldest_key_time */, 0 /* file_creation_time */,
400
- "SST Writer" /* db_id */, r->db_session_id, 0 /* target_file_size */,
401
- r->next_file_number);
398
+ unknown_level, kUnknownNewestKeyTime, false /* is_bottommost */,
399
+ TableFileCreationReason::kMisc, 0 /* oldest_key_time */,
400
+ 0 /* file_creation_time */, "SST Writer" /* db_id */, r->db_session_id,
401
+ 0 /* target_file_size */, r->next_file_number);
402
402
  // External SST files used to each get a unique session id. Now for
403
403
  // slightly better uniqueness probability in constructing cache keys, we
404
404
  // assign fake file numbers to each file (into table properties) and keep
@@ -416,7 +416,7 @@ Status SstFileWriter::Open(const std::string& file_path, Temperature temp) {
416
416
 
417
417
  // TODO(tec) : If table_factory is using compressed block cache, we will
418
418
  // be adding the external sst file blocks into it, which is wasteful.
419
- r->builder.reset(r->ioptions.table_factory->NewTableBuilder(
419
+ r->builder.reset(r->mutable_cf_options.table_factory->NewTableBuilder(
420
420
  table_builder_options, r->file_writer.get()));
421
421
 
422
422
  r->file_info = ExternalSstFileInfo();
@@ -533,4 +533,9 @@ Status SstFileWriter::Finish(ExternalSstFileInfo* file_info) {
533
533
 
534
534
  uint64_t SstFileWriter::FileSize() { return rep_->file_info.file_size; }
535
535
 
536
+ bool SstFileWriter::CreatedBySstFileWriter(const TableProperties& tp) {
537
+ const auto& uprops = tp.user_collected_properties;
538
+ return uprops.find(ExternalSstFilePropertyNames::kVersion) != uprops.end();
539
+ }
540
+
536
541
  } // namespace ROCKSDB_NAMESPACE
@@ -108,7 +108,7 @@ struct TableBuilderOptions : public TablePropertiesCollectorFactory::Context {
108
108
  CompressionType _compression_type,
109
109
  const CompressionOptions& _compression_opts, uint32_t _column_family_id,
110
110
  const std::string& _column_family_name, int _level,
111
- bool _is_bottommost = false,
111
+ const int64_t _newest_key_time, bool _is_bottommost = false,
112
112
  TableFileCreationReason _reason = TableFileCreationReason::kMisc,
113
113
  const int64_t _oldest_key_time = 0,
114
114
  const uint64_t _file_creation_time = 0, const std::string& _db_id = "",
@@ -129,6 +129,7 @@ struct TableBuilderOptions : public TablePropertiesCollectorFactory::Context {
129
129
  compression_opts(_compression_opts),
130
130
  column_family_name(_column_family_name),
131
131
  oldest_key_time(_oldest_key_time),
132
+ newest_key_time(_newest_key_time),
132
133
  target_file_size(_target_file_size),
133
134
  file_creation_time(_file_creation_time),
134
135
  db_id(_db_id),
@@ -147,6 +148,7 @@ struct TableBuilderOptions : public TablePropertiesCollectorFactory::Context {
147
148
  const CompressionOptions& compression_opts;
148
149
  const std::string& column_family_name;
149
150
  const int64_t oldest_key_time;
151
+ const int64_t newest_key_time;
150
152
  const uint64_t target_file_size;
151
153
  const uint64_t file_creation_time;
152
154
  const std::string db_id;
@@ -10,6 +10,7 @@
10
10
  #include "port/port.h"
11
11
  #include "rocksdb/env.h"
12
12
  #include "rocksdb/unique_id.h"
13
+ #include "rocksdb/utilities/options_type.h"
13
14
  #include "table/table_properties_internal.h"
14
15
  #include "table/unique_id_impl.h"
15
16
  #include "util/random.h"
@@ -140,6 +141,8 @@ std::string TableProperties::ToString(const std::string& prop_delim,
140
141
 
141
142
  AppendProperty(result, "time stamp of earliest key", oldest_key_time,
142
143
  prop_delim, kv_delim);
144
+ AppendProperty(result, "time stamp of newest key", newest_key_time,
145
+ prop_delim, kv_delim);
143
146
 
144
147
  AppendProperty(result, "file creation time", file_creation_time, prop_delim,
145
148
  kv_delim);
@@ -301,6 +304,8 @@ const std::string TablePropertiesNames::kCompressionOptions =
301
304
  const std::string TablePropertiesNames::kCreationTime = "rocksdb.creation.time";
302
305
  const std::string TablePropertiesNames::kOldestKeyTime =
303
306
  "rocksdb.oldest.key.time";
307
+ const std::string TablePropertiesNames::kNewestKeyTime =
308
+ "rocksdb.newest.key.time";
304
309
  const std::string TablePropertiesNames::kFileCreationTime =
305
310
  "rocksdb.file.creation.time";
306
311
  const std::string TablePropertiesNames::kSlowCompressionEstimatedDataSize =
@@ -316,6 +321,182 @@ const std::string TablePropertiesNames::kUserDefinedTimestampsPersisted =
316
321
  const std::string TablePropertiesNames::kKeyLargestSeqno =
317
322
  "rocksdb.key.largest.seqno";
318
323
 
324
+ static std::unordered_map<std::string, OptionTypeInfo>
325
+ table_properties_type_info = {
326
+ {"orig_file_number",
327
+ {offsetof(struct TableProperties, orig_file_number),
328
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
329
+ OptionTypeFlags::kNone}},
330
+ {"data_size",
331
+ {offsetof(struct TableProperties, data_size), OptionType::kUInt64T,
332
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
333
+ {"index_size",
334
+ {offsetof(struct TableProperties, index_size), OptionType::kUInt64T,
335
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
336
+ {"index_partitions",
337
+ {offsetof(struct TableProperties, index_partitions),
338
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
339
+ OptionTypeFlags::kNone}},
340
+ {"top_level_index_size",
341
+ {offsetof(struct TableProperties, top_level_index_size),
342
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
343
+ OptionTypeFlags::kNone}},
344
+ {"index_key_is_user_key",
345
+ {offsetof(struct TableProperties, index_key_is_user_key),
346
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
347
+ OptionTypeFlags::kNone}},
348
+ {"index_value_is_delta_encoded",
349
+ {offsetof(struct TableProperties, index_value_is_delta_encoded),
350
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
351
+ OptionTypeFlags::kNone}},
352
+ {"filter_size",
353
+ {offsetof(struct TableProperties, filter_size), OptionType::kUInt64T,
354
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
355
+ {"raw_key_size",
356
+ {offsetof(struct TableProperties, raw_key_size), OptionType::kUInt64T,
357
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
358
+ {"raw_value_size",
359
+ {offsetof(struct TableProperties, raw_value_size),
360
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
361
+ OptionTypeFlags::kNone}},
362
+ {"num_data_blocks",
363
+ {offsetof(struct TableProperties, num_data_blocks),
364
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
365
+ OptionTypeFlags::kNone}},
366
+ {"num_entries",
367
+ {offsetof(struct TableProperties, num_entries), OptionType::kUInt64T,
368
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
369
+ {"num_filter_entries",
370
+ {offsetof(struct TableProperties, num_filter_entries),
371
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
372
+ OptionTypeFlags::kNone}},
373
+ {"num_deletions",
374
+ {offsetof(struct TableProperties, num_deletions), OptionType::kUInt64T,
375
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
376
+ {"num_merge_operands",
377
+ {offsetof(struct TableProperties, num_merge_operands),
378
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
379
+ OptionTypeFlags::kNone}},
380
+ {"num_range_deletions",
381
+ {offsetof(struct TableProperties, num_range_deletions),
382
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
383
+ OptionTypeFlags::kNone}},
384
+ {"format_version",
385
+ {offsetof(struct TableProperties, format_version),
386
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
387
+ OptionTypeFlags::kNone}},
388
+ {"fixed_key_len",
389
+ {offsetof(struct TableProperties, fixed_key_len), OptionType::kUInt64T,
390
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
391
+ {"column_family_id",
392
+ {offsetof(struct TableProperties, column_family_id),
393
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
394
+ OptionTypeFlags::kNone}},
395
+ {"creation_time",
396
+ {offsetof(struct TableProperties, creation_time), OptionType::kUInt64T,
397
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone}},
398
+ {"oldest_key_time",
399
+ {offsetof(struct TableProperties, oldest_key_time),
400
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
401
+ OptionTypeFlags::kNone}},
402
+ {"newest_key_time",
403
+ {offsetof(struct TableProperties, newest_key_time),
404
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
405
+ OptionTypeFlags::kNone}},
406
+ {"file_creation_time",
407
+ {offsetof(struct TableProperties, file_creation_time),
408
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
409
+ OptionTypeFlags::kNone}},
410
+ {"slow_compression_estimated_data_size",
411
+ {offsetof(struct TableProperties,
412
+ slow_compression_estimated_data_size),
413
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
414
+ OptionTypeFlags::kNone}},
415
+ {"fast_compression_estimated_data_size",
416
+ {offsetof(struct TableProperties,
417
+ fast_compression_estimated_data_size),
418
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
419
+ OptionTypeFlags::kNone}},
420
+ {"external_sst_file_global_seqno_offset",
421
+ {offsetof(struct TableProperties,
422
+ external_sst_file_global_seqno_offset),
423
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
424
+ OptionTypeFlags::kNone}},
425
+ {"tail_start_offset",
426
+ {offsetof(struct TableProperties, tail_start_offset),
427
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
428
+ OptionTypeFlags::kNone}},
429
+ {"user_defined_timestamps_persisted",
430
+ {offsetof(struct TableProperties, user_defined_timestamps_persisted),
431
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
432
+ OptionTypeFlags::kNone}},
433
+ {"key_largest_seqno",
434
+ {offsetof(struct TableProperties, key_largest_seqno),
435
+ OptionType::kUInt64T, OptionVerificationType::kNormal,
436
+ OptionTypeFlags::kNone}},
437
+ {"db_id",
438
+ {offsetof(struct TableProperties, db_id), OptionType::kEncodedString}},
439
+ {"db_session_id",
440
+ {offsetof(struct TableProperties, db_session_id),
441
+ OptionType::kEncodedString}},
442
+ {"db_host_id",
443
+ {offsetof(struct TableProperties, db_host_id),
444
+ OptionType::kEncodedString}},
445
+ {"column_family_name",
446
+ {offsetof(struct TableProperties, column_family_name),
447
+ OptionType::kEncodedString}},
448
+ {"filter_policy_name",
449
+ {offsetof(struct TableProperties, filter_policy_name),
450
+ OptionType::kEncodedString}},
451
+ {"comparator_name",
452
+ {offsetof(struct TableProperties, comparator_name),
453
+ OptionType::kEncodedString}},
454
+ {"merge_operator_name",
455
+ {offsetof(struct TableProperties, merge_operator_name),
456
+ OptionType::kEncodedString}},
457
+ {"prefix_extractor_name",
458
+ {offsetof(struct TableProperties, prefix_extractor_name),
459
+ OptionType::kEncodedString}},
460
+ {"property_collectors_names",
461
+ {offsetof(struct TableProperties, property_collectors_names),
462
+ OptionType::kEncodedString}},
463
+ {"compression_name",
464
+ {offsetof(struct TableProperties, compression_name),
465
+ OptionType::kEncodedString}},
466
+ {"compression_options",
467
+ {offsetof(struct TableProperties, compression_options),
468
+ OptionType::kEncodedString}},
469
+ {"seqno_to_time_mapping",
470
+ {offsetof(struct TableProperties, seqno_to_time_mapping),
471
+ OptionType::kEncodedString}},
472
+ {"user_collected_properties",
473
+ OptionTypeInfo::StringMap(
474
+ offsetof(struct TableProperties, user_collected_properties),
475
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone)},
476
+ {"readable_properties",
477
+ OptionTypeInfo::StringMap(
478
+ offsetof(struct TableProperties, readable_properties),
479
+ OptionVerificationType::kNormal, OptionTypeFlags::kNone)},
480
+ };
481
+
482
+ Status TableProperties::Serialize(const ConfigOptions& opts,
483
+ std::string* output) const {
484
+ return OptionTypeInfo::SerializeType(opts, table_properties_type_info, this,
485
+ output);
486
+ }
487
+ Status TableProperties::Parse(const ConfigOptions& opts,
488
+ const std::string& serialized,
489
+ TableProperties* table_properties) {
490
+ return OptionTypeInfo::ParseType(opts, serialized, table_properties_type_info,
491
+ table_properties);
492
+ }
493
+ bool TableProperties::AreEqual(const ConfigOptions& opts,
494
+ const TableProperties* other_table_properties,
495
+ std::string* mismatch) const {
496
+ return OptionTypeInfo::TypesAreEqual(opts, table_properties_type_info, this,
497
+ other_table_properties, mismatch);
498
+ }
499
+
319
500
  #ifndef NDEBUG
320
501
  // WARNING: TEST_SetRandomTableProperties assumes the following layout of
321
502
  // TableProperties
@@ -100,11 +100,11 @@ void TableReaderBenchmark(Options& opts, EnvOptions& env_options,
100
100
  int unknown_level = -1;
101
101
  const WriteOptions write_options;
102
102
  tb = opts.table_factory->NewTableBuilder(
103
- TableBuilderOptions(ioptions, moptions, read_options, write_options,
104
- ikc, &internal_tbl_prop_coll_factories,
105
- CompressionType::kNoCompression,
106
- CompressionOptions(), 0 /* column_family_id */,
107
- kDefaultColumnFamilyName, unknown_level),
103
+ TableBuilderOptions(
104
+ ioptions, moptions, read_options, write_options, ikc,
105
+ &internal_tbl_prop_coll_factories, CompressionType::kNoCompression,
106
+ CompressionOptions(), 0 /* column_family_id */,
107
+ kDefaultColumnFamilyName, unknown_level, kUnknownNewestKeyTime),
108
108
  file_writer.get());
109
109
  } else {
110
110
  s = DB::Open(opts, dbname, &db);