@nxtedition/rocksdb 15.4.1 → 16.0.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.
- package/binding.cc +70 -23
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/index.js +70 -10
- package/iterator.js +25 -3
- package/max_rev_operator.h +9 -5
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -76,7 +76,8 @@ class VersionBuilderTest : public testing::Test {
|
|
|
76
76
|
oldest_blob_file_number, kUnknownOldestAncesterTime,
|
|
77
77
|
kUnknownFileCreationTime, epoch_number, kUnknownFileChecksum,
|
|
78
78
|
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0, 0,
|
|
79
|
-
/* user_defined_timestamps_persisted */ true
|
|
79
|
+
/* user_defined_timestamps_persisted */ true, /* min timestamp */ "",
|
|
80
|
+
/* max timestamp */ "");
|
|
80
81
|
f->compensated_file_size = file_size;
|
|
81
82
|
f->num_entries = num_entries;
|
|
82
83
|
f->num_deletions = num_deletions;
|
|
@@ -22,6 +22,40 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
22
22
|
|
|
23
23
|
namespace {} // anonymous namespace
|
|
24
24
|
|
|
25
|
+
// After copying, we rely on the caller to ensure no double releases. Fragile,
|
|
26
|
+
// but keeps copying cheap.
|
|
27
|
+
PinnedTableReader& PinnedTableReader::operator=(
|
|
28
|
+
const PinnedTableReader& other) {
|
|
29
|
+
TableReader* r = other.reader_.load(std::memory_order_acquire);
|
|
30
|
+
// Only read handle_ when reader_ is non-null. Pin() writes handle_ before
|
|
31
|
+
// reader_ (with release), so a non-null reader_ guarantees handle_ is stable.
|
|
32
|
+
// If reader_ is null, Pin() may be in progress — avoid reading handle_.
|
|
33
|
+
handle_ = (r != nullptr) ? other.handle_ : nullptr;
|
|
34
|
+
reader_.store(r, std::memory_order_release);
|
|
35
|
+
return *this;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Cache::Handle* PinnedTableReader::GetCacheHandle() const {
|
|
39
|
+
(void)reader_.load(std::memory_order_acquire);
|
|
40
|
+
return handle_;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
void PinnedTableReader::Pin(Cache::Handle* handle, TableReader* reader) {
|
|
44
|
+
assert(handle != nullptr);
|
|
45
|
+
assert(reader != nullptr);
|
|
46
|
+
handle_ = handle;
|
|
47
|
+
reader_.store(reader, std::memory_order_release);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
void PinnedTableReader::Release(Cache* cache) {
|
|
51
|
+
(void)reader_.load(std::memory_order_acquire);
|
|
52
|
+
if (handle_ != nullptr) {
|
|
53
|
+
cache->Release(handle_);
|
|
54
|
+
handle_ = nullptr;
|
|
55
|
+
reader_.store(nullptr, std::memory_order_relaxed);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
25
59
|
uint64_t PackFileNumberAndPathId(uint64_t number, uint64_t path_id) {
|
|
26
60
|
assert(number <= kFileNumberMask);
|
|
27
61
|
return number | (path_id * (kFileNumberMask + 1));
|
|
@@ -83,7 +117,7 @@ bool VersionEdit::EncodeTo(std::string* dst,
|
|
|
83
117
|
PutVarint32Varint64(dst, kNextFileNumber, next_file_number_);
|
|
84
118
|
}
|
|
85
119
|
if (has_max_column_family_) {
|
|
86
|
-
|
|
120
|
+
PutVarint32(dst, kMaxColumnFamily, max_column_family_);
|
|
87
121
|
}
|
|
88
122
|
if (has_min_log_number_to_keep_) {
|
|
89
123
|
PutVarint32Varint64(dst, kMinLogNumberToKeep, min_log_number_to_keep_);
|
|
@@ -143,7 +177,7 @@ bool VersionEdit::EncodeTo(std::string* dst,
|
|
|
143
177
|
|
|
144
178
|
// 0 is default and does not need to be explicitly written
|
|
145
179
|
if (column_family_ != 0) {
|
|
146
|
-
|
|
180
|
+
PutVarint32(dst, kColumnFamily, column_family_);
|
|
147
181
|
}
|
|
148
182
|
|
|
149
183
|
if (is_column_family_add_) {
|
|
@@ -304,6 +338,15 @@ void VersionEdit::EncodeToNewFile4(const FileMetaData& f, int level,
|
|
|
304
338
|
char p = static_cast<char>(0);
|
|
305
339
|
PutLengthPrefixedSlice(dst, Slice(&p, 1));
|
|
306
340
|
}
|
|
341
|
+
// Encode min/max timestamp if they are non-empty
|
|
342
|
+
if (!f.min_timestamp.empty()) {
|
|
343
|
+
PutVarint32(dst, NewFileCustomTag::kMinTimestamp);
|
|
344
|
+
PutLengthPrefixedSlice(dst, Slice(f.min_timestamp));
|
|
345
|
+
}
|
|
346
|
+
if (!f.max_timestamp.empty()) {
|
|
347
|
+
PutVarint32(dst, NewFileCustomTag::kMaxTimestamp);
|
|
348
|
+
PutLengthPrefixedSlice(dst, Slice(f.max_timestamp));
|
|
349
|
+
}
|
|
307
350
|
TEST_SYNC_POINT_CALLBACK("VersionEdit::EncodeTo:NewFile4:CustomizeFields",
|
|
308
351
|
dst);
|
|
309
352
|
|
|
@@ -443,6 +486,12 @@ const char* VersionEdit::DecodeNewFile4From(Slice* input, int& max_level,
|
|
|
443
486
|
}
|
|
444
487
|
f.user_defined_timestamps_persisted = (field[0] == 1);
|
|
445
488
|
break;
|
|
489
|
+
case kMinTimestamp:
|
|
490
|
+
f.min_timestamp = field.ToString();
|
|
491
|
+
break;
|
|
492
|
+
case kMaxTimestamp:
|
|
493
|
+
f.max_timestamp = field.ToString();
|
|
494
|
+
break;
|
|
446
495
|
default:
|
|
447
496
|
if ((custom_tag & kCustomTagNonSafeIgnoreMask) != 0) {
|
|
448
497
|
// Should not proceed if cannot understand it
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
#include "rocksdb/advanced_options.h"
|
|
26
26
|
#include "table/table_reader.h"
|
|
27
27
|
#include "table/unique_id_impl.h"
|
|
28
|
+
#include "test_util/sync_point.h"
|
|
28
29
|
#include "util/autovector.h"
|
|
29
30
|
|
|
30
31
|
namespace ROCKSDB_NAMESPACE {
|
|
@@ -133,14 +134,57 @@ constexpr uint64_t kReservedEpochNumberForFileIngestedBehind = 1;
|
|
|
133
134
|
|
|
134
135
|
uint64_t PackFileNumberAndPathId(uint64_t number, uint64_t path_id);
|
|
135
136
|
|
|
137
|
+
// PinnedTableReader is used to safely access a table reader in a multi-threaded
|
|
138
|
+
// context. It holds both a pointer to the table reader and a cache handle.
|
|
139
|
+
class PinnedTableReader {
|
|
140
|
+
public:
|
|
141
|
+
PinnedTableReader() : reader_(nullptr), handle_(nullptr) {}
|
|
142
|
+
~PinnedTableReader() = default;
|
|
143
|
+
PinnedTableReader(const PinnedTableReader& other)
|
|
144
|
+
: reader_(nullptr), handle_(nullptr) {
|
|
145
|
+
*this = other;
|
|
146
|
+
}
|
|
147
|
+
PinnedTableReader& operator=(const PinnedTableReader& other);
|
|
148
|
+
PinnedTableReader(PinnedTableReader&&) = delete;
|
|
149
|
+
PinnedTableReader& operator=(PinnedTableReader&&) = delete;
|
|
150
|
+
|
|
151
|
+
// Returns the pinned TableReader, or nullptr if not pinned.
|
|
152
|
+
TableReader* Get() const { return reader_.load(std::memory_order_acquire); }
|
|
153
|
+
|
|
154
|
+
// Returns the cache handle that keeps TableReader alive, or nullptr if not
|
|
155
|
+
// pinned.
|
|
156
|
+
Cache::Handle* GetCacheHandle() const;
|
|
157
|
+
|
|
158
|
+
// Pin a table reader with its cache handle.
|
|
159
|
+
void Pin(Cache::Handle* handle, TableReader* reader);
|
|
160
|
+
|
|
161
|
+
// Release the pinned handle via the given cache and reset state.
|
|
162
|
+
void Release(Cache* cache);
|
|
163
|
+
|
|
164
|
+
// Test-only: set a reader without a cache handle.
|
|
165
|
+
void TEST_SetReader(TableReader* reader) {
|
|
166
|
+
reader_.store(reader, std::memory_order_release);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
private:
|
|
170
|
+
// Internally, we need to ensure reads and writes to reader_ and handle_ are
|
|
171
|
+
// properly ordered. handle_ must be written to before reader_ is written to
|
|
172
|
+
// with release semantics. handle_ must be read after reader_ is read with
|
|
173
|
+
// acquire semantics.
|
|
174
|
+
std::atomic<TableReader*> reader_;
|
|
175
|
+
Cache::Handle* handle_;
|
|
176
|
+
};
|
|
177
|
+
|
|
136
178
|
// A copyable structure contains information needed to read data from an SST
|
|
137
179
|
// file. It can contain a pointer to a table reader opened for the file, or
|
|
138
180
|
// file number and size, which can be used to create a new table reader for it.
|
|
139
181
|
// The behavior is undefined when a copied of the structure is used when the
|
|
140
182
|
// file is not in any live version any more.
|
|
141
183
|
struct FileDescriptor {
|
|
142
|
-
//
|
|
143
|
-
|
|
184
|
+
// Fast access to table reader without cache lookup. Marked mutable because
|
|
185
|
+
// reads can pin the table reader, but can also be done safely in a
|
|
186
|
+
// multi-threaded context.
|
|
187
|
+
mutable PinnedTableReader pinned_reader;
|
|
144
188
|
uint64_t packed_number_and_path_id;
|
|
145
189
|
uint64_t file_size; // File size in bytes
|
|
146
190
|
SequenceNumber smallest_seqno; // The smallest seqno in this file
|
|
@@ -153,7 +197,7 @@ struct FileDescriptor {
|
|
|
153
197
|
|
|
154
198
|
FileDescriptor(uint64_t number, uint32_t path_id, uint64_t _file_size,
|
|
155
199
|
SequenceNumber _smallest_seqno, SequenceNumber _largest_seqno)
|
|
156
|
-
:
|
|
200
|
+
: pinned_reader(),
|
|
157
201
|
packed_number_and_path_id(PackFileNumberAndPathId(number, path_id)),
|
|
158
202
|
file_size(_file_size),
|
|
159
203
|
smallest_seqno(_smallest_seqno),
|
|
@@ -162,7 +206,7 @@ struct FileDescriptor {
|
|
|
162
206
|
FileDescriptor(const FileDescriptor& fd) { *this = fd; }
|
|
163
207
|
|
|
164
208
|
FileDescriptor& operator=(const FileDescriptor& fd) {
|
|
165
|
-
|
|
209
|
+
pinned_reader = fd.pinned_reader;
|
|
166
210
|
packed_number_and_path_id = fd.packed_number_and_path_id;
|
|
167
211
|
file_size = fd.file_size;
|
|
168
212
|
smallest_seqno = fd.smallest_seqno;
|
|
@@ -181,15 +225,20 @@ struct FileDescriptor {
|
|
|
181
225
|
};
|
|
182
226
|
|
|
183
227
|
struct FileSampledStats {
|
|
184
|
-
FileSampledStats()
|
|
228
|
+
FileSampledStats()
|
|
229
|
+
: num_reads_sampled(0), num_collapsible_entry_reads_sampled(0) {}
|
|
185
230
|
FileSampledStats(const FileSampledStats& other) { *this = other; }
|
|
186
231
|
FileSampledStats& operator=(const FileSampledStats& other) {
|
|
187
232
|
num_reads_sampled = other.num_reads_sampled.load();
|
|
233
|
+
num_collapsible_entry_reads_sampled =
|
|
234
|
+
other.num_collapsible_entry_reads_sampled.load();
|
|
188
235
|
return *this;
|
|
189
236
|
}
|
|
190
237
|
|
|
191
238
|
// number of user reads to this file.
|
|
192
239
|
mutable std::atomic<uint64_t> num_reads_sampled;
|
|
240
|
+
// number of reads of type kNotFound, kMerge, kTypeSingleDeletion
|
|
241
|
+
mutable std::atomic<uint64_t> num_collapsible_entry_reads_sampled;
|
|
193
242
|
};
|
|
194
243
|
|
|
195
244
|
struct FileMetaData {
|
|
@@ -197,9 +246,6 @@ struct FileMetaData {
|
|
|
197
246
|
InternalKey smallest; // Smallest internal key served by table
|
|
198
247
|
InternalKey largest; // Largest internal key served by table
|
|
199
248
|
|
|
200
|
-
// Needs to be disposed when refs becomes 0.
|
|
201
|
-
Cache::Handle* table_reader_handle = nullptr;
|
|
202
|
-
|
|
203
249
|
FileSampledStats stats;
|
|
204
250
|
|
|
205
251
|
// Stats for compensating deletion entries during compaction
|
|
@@ -276,6 +322,14 @@ struct FileMetaData {
|
|
|
276
322
|
// false, it's explicitly written to Manifest.
|
|
277
323
|
bool user_defined_timestamps_persisted = true;
|
|
278
324
|
|
|
325
|
+
// Minimum user-defined timestamp in the file. Empty if no UDT or unknown.
|
|
326
|
+
// This is populated from the table properties "rocksdb.timestamp_min".
|
|
327
|
+
std::string min_timestamp;
|
|
328
|
+
|
|
329
|
+
// Maximum user-defined timestamp in the file. Empty if no UDT or unknown.
|
|
330
|
+
// This is populated from the table properties "rocksdb.timestamp_max".
|
|
331
|
+
std::string max_timestamp;
|
|
332
|
+
|
|
279
333
|
FileMetaData() = default;
|
|
280
334
|
|
|
281
335
|
FileMetaData(uint64_t file, uint32_t file_path_id, uint64_t file_size,
|
|
@@ -288,7 +342,9 @@ struct FileMetaData {
|
|
|
288
342
|
const std::string& _file_checksum_func_name,
|
|
289
343
|
UniqueId64x2 _unique_id,
|
|
290
344
|
const uint64_t _compensated_range_deletion_size,
|
|
291
|
-
uint64_t _tail_size, bool _user_defined_timestamps_persisted
|
|
345
|
+
uint64_t _tail_size, bool _user_defined_timestamps_persisted,
|
|
346
|
+
const std::string& _min_timestamp,
|
|
347
|
+
const std::string& _max_timestamp)
|
|
292
348
|
: fd(file, file_path_id, file_size, smallest_seq, largest_seq),
|
|
293
349
|
smallest(smallest_key),
|
|
294
350
|
largest(largest_key),
|
|
@@ -303,7 +359,9 @@ struct FileMetaData {
|
|
|
303
359
|
file_checksum_func_name(_file_checksum_func_name),
|
|
304
360
|
unique_id(std::move(_unique_id)),
|
|
305
361
|
tail_size(_tail_size),
|
|
306
|
-
user_defined_timestamps_persisted(_user_defined_timestamps_persisted)
|
|
362
|
+
user_defined_timestamps_persisted(_user_defined_timestamps_persisted),
|
|
363
|
+
min_timestamp(_min_timestamp),
|
|
364
|
+
max_timestamp(_max_timestamp) {
|
|
307
365
|
TEST_SYNC_POINT_CALLBACK("FileMetaData::FileMetaData", this);
|
|
308
366
|
}
|
|
309
367
|
|
|
@@ -334,9 +392,10 @@ struct FileMetaData {
|
|
|
334
392
|
uint64_t TryGetOldestAncesterTime() {
|
|
335
393
|
if (oldest_ancester_time != kUnknownOldestAncesterTime) {
|
|
336
394
|
return oldest_ancester_time;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
|
|
395
|
+
}
|
|
396
|
+
TableReader* reader = fd.pinned_reader.Get();
|
|
397
|
+
if (reader != nullptr && reader->GetTableProperties() != nullptr) {
|
|
398
|
+
return reader->GetTableProperties()->creation_time;
|
|
340
399
|
}
|
|
341
400
|
return kUnknownOldestAncesterTime;
|
|
342
401
|
}
|
|
@@ -344,9 +403,10 @@ struct FileMetaData {
|
|
|
344
403
|
uint64_t TryGetFileCreationTime() {
|
|
345
404
|
if (file_creation_time != kUnknownFileCreationTime) {
|
|
346
405
|
return file_creation_time;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
|
|
406
|
+
}
|
|
407
|
+
TableReader* reader = fd.pinned_reader.Get();
|
|
408
|
+
if (reader != nullptr && reader->GetTableProperties() != nullptr) {
|
|
409
|
+
return reader->GetTableProperties()->file_creation_time;
|
|
350
410
|
}
|
|
351
411
|
return kUnknownFileCreationTime;
|
|
352
412
|
}
|
|
@@ -354,10 +414,9 @@ struct FileMetaData {
|
|
|
354
414
|
// Tries to get the newest key time from the current file
|
|
355
415
|
// Falls back on oldest ancestor time of previous (newer) file
|
|
356
416
|
uint64_t TryGetNewestKeyTime(FileMetaData* prev_file = nullptr) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
uint64_t newest_key_time =
|
|
360
|
-
fd.table_reader->GetTableProperties()->newest_key_time;
|
|
417
|
+
TableReader* reader = fd.pinned_reader.Get();
|
|
418
|
+
if (reader != nullptr && reader->GetTableProperties() != nullptr) {
|
|
419
|
+
uint64_t newest_key_time = reader->GetTableProperties()->newest_key_time;
|
|
361
420
|
if (newest_key_time != kUnknownNewestKeyTime) {
|
|
362
421
|
return newest_key_time;
|
|
363
422
|
}
|
|
@@ -386,7 +445,8 @@ struct FileMetaData {
|
|
|
386
445
|
usage += sizeof(*this);
|
|
387
446
|
#endif // ROCKSDB_MALLOC_USABLE_SIZE
|
|
388
447
|
usage += smallest.size() + largest.size() + file_checksum.size() +
|
|
389
|
-
file_checksum_func_name.size()
|
|
448
|
+
file_checksum_func_name.size() + min_timestamp.size() +
|
|
449
|
+
max_timestamp.size();
|
|
390
450
|
return usage;
|
|
391
451
|
}
|
|
392
452
|
|
|
@@ -737,17 +797,19 @@ class VersionEdit {
|
|
|
737
797
|
const std::string& file_checksum_func_name,
|
|
738
798
|
const UniqueId64x2& unique_id,
|
|
739
799
|
const uint64_t compensated_range_deletion_size,
|
|
740
|
-
uint64_t tail_size, bool user_defined_timestamps_persisted
|
|
800
|
+
uint64_t tail_size, bool user_defined_timestamps_persisted,
|
|
801
|
+
const std::string& min_timestamp = "",
|
|
802
|
+
const std::string& max_timestamp = "") {
|
|
741
803
|
assert(smallest_seqno <= largest_seqno);
|
|
742
804
|
new_files_.emplace_back(
|
|
743
805
|
level,
|
|
744
|
-
FileMetaData(
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
806
|
+
FileMetaData(
|
|
807
|
+
file, file_path_id, file_size, smallest, largest, smallest_seqno,
|
|
808
|
+
largest_seqno, marked_for_compaction, temperature,
|
|
809
|
+
oldest_blob_file_number, oldest_ancester_time, file_creation_time,
|
|
810
|
+
epoch_number, file_checksum, file_checksum_func_name, unique_id,
|
|
811
|
+
compensated_range_deletion_size, tail_size,
|
|
812
|
+
user_defined_timestamps_persisted, min_timestamp, max_timestamp));
|
|
751
813
|
files_to_quarantine_.push_back(file);
|
|
752
814
|
if (!HasLastSequence() || largest_seqno > GetLastSequence()) {
|
|
753
815
|
SetLastSequence(largest_seqno);
|
|
@@ -146,13 +146,13 @@ class VersionEditHandler : public VersionEditHandlerBase {
|
|
|
146
146
|
const std::shared_ptr<IOTracer>& io_tracer,
|
|
147
147
|
const ReadOptions& read_options, bool allow_incomplete_valid_version,
|
|
148
148
|
EpochNumberRequirement epoch_number_requirement =
|
|
149
|
-
EpochNumberRequirement::kMustPresent
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
149
|
+
EpochNumberRequirement::kMustPresent,
|
|
150
|
+
bool skip_load_table_files = false)
|
|
151
|
+
: VersionEditHandler(
|
|
152
|
+
read_only, column_families, version_set,
|
|
153
|
+
track_found_and_missing_files, no_error_if_files_missing, io_tracer,
|
|
154
|
+
read_options, skip_load_table_files, allow_incomplete_valid_version,
|
|
155
|
+
epoch_number_requirement) {}
|
|
156
156
|
|
|
157
157
|
~VersionEditHandler() override {}
|
|
158
158
|
|