@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
|
@@ -14,11 +14,13 @@
|
|
|
14
14
|
#include "db/db_test_util.h"
|
|
15
15
|
#include "db/dbformat.h"
|
|
16
16
|
#include "env/mock_env.h"
|
|
17
|
+
#include "file/filename.h"
|
|
17
18
|
#include "port/port.h"
|
|
18
19
|
#include "port/stack_trace.h"
|
|
19
20
|
#include "rocksdb/advanced_options.h"
|
|
20
21
|
#include "rocksdb/concurrent_task_limiter.h"
|
|
21
22
|
#include "rocksdb/experimental.h"
|
|
23
|
+
#include "rocksdb/file_checksum.h"
|
|
22
24
|
#include "rocksdb/iostats_context.h"
|
|
23
25
|
#include "rocksdb/sst_file_writer.h"
|
|
24
26
|
#include "test_util/mock_time_env.h"
|
|
@@ -797,6 +799,13 @@ TEST_F(DBCompactionTest, CompactRangeBottomPri) {
|
|
|
797
799
|
// and one compact to L2 in bottom pri pool.
|
|
798
800
|
int low_pri_count = 0;
|
|
799
801
|
int bottom_pri_count = 0;
|
|
802
|
+
bool bottom_running_seen = false;
|
|
803
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
804
|
+
"BackgroundCallCompaction:1", [&](void*) {
|
|
805
|
+
if (dbfull()->TEST_NumRunningBottomCompactions() > 0) {
|
|
806
|
+
bottom_running_seen = true;
|
|
807
|
+
}
|
|
808
|
+
});
|
|
800
809
|
SyncPoint::GetInstance()->SetCallBack(
|
|
801
810
|
"ThreadPoolImpl::Impl::BGThread:BeforeRun", [&](void* arg) {
|
|
802
811
|
Env::Priority* pri = static_cast<Env::Priority*>(arg);
|
|
@@ -815,6 +824,7 @@ TEST_F(DBCompactionTest, CompactRangeBottomPri) {
|
|
|
815
824
|
ASSERT_OK(dbfull()->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
816
825
|
ASSERT_EQ(1, low_pri_count);
|
|
817
826
|
ASSERT_EQ(1, bottom_pri_count);
|
|
827
|
+
ASSERT_TRUE(bottom_running_seen);
|
|
818
828
|
ASSERT_EQ("0,0,2", FilesPerLevel(0));
|
|
819
829
|
|
|
820
830
|
// Recompact bottom most level uses bottom pool
|
|
@@ -2208,7 +2218,8 @@ TEST_P(DBDeleteFileRangeTest, DeleteFileRange) {
|
|
|
2208
2218
|
std::string end_string = Key(2000);
|
|
2209
2219
|
Slice begin(begin_string);
|
|
2210
2220
|
Slice end(end_string);
|
|
2211
|
-
ASSERT_OK(
|
|
2221
|
+
ASSERT_OK(
|
|
2222
|
+
DeleteFilesInRange(db_.get(), db_->DefaultColumnFamily(), &begin, &end));
|
|
2212
2223
|
|
|
2213
2224
|
int32_t deleted_count = 0;
|
|
2214
2225
|
for (int32_t i = 0; i < 4300; i++) {
|
|
@@ -2229,8 +2240,8 @@ TEST_P(DBDeleteFileRangeTest, DeleteFileRange) {
|
|
|
2229
2240
|
Slice begin1(begin_string);
|
|
2230
2241
|
Slice end1(end_string);
|
|
2231
2242
|
// Try deleting files in range which contain no keys
|
|
2232
|
-
ASSERT_OK(
|
|
2233
|
-
|
|
2243
|
+
ASSERT_OK(DeleteFilesInRange(db_.get(), db_->DefaultColumnFamily(), &begin1,
|
|
2244
|
+
&end1));
|
|
2234
2245
|
|
|
2235
2246
|
// Push data from level 0 to level 1 to force all data to be deleted
|
|
2236
2247
|
// Note that we don't delete level 0 files
|
|
@@ -2239,8 +2250,8 @@ TEST_P(DBDeleteFileRangeTest, DeleteFileRange) {
|
|
|
2239
2250
|
ASSERT_OK(db_->CompactRange(compact_options, nullptr, nullptr));
|
|
2240
2251
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
2241
2252
|
|
|
2242
|
-
ASSERT_OK(
|
|
2243
|
-
|
|
2253
|
+
ASSERT_OK(DeleteFilesInRange(db_.get(), db_->DefaultColumnFamily(), nullptr,
|
|
2254
|
+
nullptr));
|
|
2244
2255
|
|
|
2245
2256
|
int32_t deleted_count2 = 0;
|
|
2246
2257
|
for (int32_t i = 0; i < 4300; i++) {
|
|
@@ -2308,7 +2319,7 @@ TEST_P(DBDeleteFileRangeTest, DeleteFilesInRanges) {
|
|
|
2308
2319
|
ranges.emplace_back(begin_str1, end_str1);
|
|
2309
2320
|
ranges.emplace_back(begin_str2, end_str2);
|
|
2310
2321
|
ranges.emplace_back(begin_str3, end_str3);
|
|
2311
|
-
ASSERT_OK(DeleteFilesInRanges(db_, db_->DefaultColumnFamily(),
|
|
2322
|
+
ASSERT_OK(DeleteFilesInRanges(db_.get(), db_->DefaultColumnFamily(),
|
|
2312
2323
|
ranges.data(), ranges.size()));
|
|
2313
2324
|
ASSERT_EQ("0,3,7", FilesPerLevel(0));
|
|
2314
2325
|
|
|
@@ -2335,7 +2346,7 @@ TEST_P(DBDeleteFileRangeTest, DeleteFilesInRanges) {
|
|
|
2335
2346
|
ranges.emplace_back(&begin1, &end1);
|
|
2336
2347
|
ranges.emplace_back(&begin2, &end2);
|
|
2337
2348
|
ranges.emplace_back(&begin3, &end3);
|
|
2338
|
-
ASSERT_OK(DeleteFilesInRanges(db_, db_->DefaultColumnFamily(),
|
|
2349
|
+
ASSERT_OK(DeleteFilesInRanges(db_.get(), db_->DefaultColumnFamily(),
|
|
2339
2350
|
ranges.data(), ranges.size(), false));
|
|
2340
2351
|
ASSERT_EQ("0,1,4", FilesPerLevel(0));
|
|
2341
2352
|
|
|
@@ -2356,7 +2367,8 @@ TEST_P(DBDeleteFileRangeTest, DeleteFilesInRanges) {
|
|
|
2356
2367
|
// Delete all files.
|
|
2357
2368
|
{
|
|
2358
2369
|
RangeOpt range;
|
|
2359
|
-
ASSERT_OK(
|
|
2370
|
+
ASSERT_OK(
|
|
2371
|
+
DeleteFilesInRanges(db_.get(), db_->DefaultColumnFamily(), &range, 1));
|
|
2360
2372
|
ASSERT_EQ("", FilesPerLevel(0));
|
|
2361
2373
|
|
|
2362
2374
|
for (auto i = 0; i < 1000; i++) {
|
|
@@ -2418,7 +2430,8 @@ TEST_P(DBDeleteFileRangeTest, DeleteFileRangeFileEndpointsOverlapBug) {
|
|
|
2418
2430
|
// "1 -> vals[0]" to reappear.
|
|
2419
2431
|
std::string begin_str = Key(0), end_str = Key(1);
|
|
2420
2432
|
Slice begin = begin_str, end = end_str;
|
|
2421
|
-
ASSERT_OK(
|
|
2433
|
+
ASSERT_OK(
|
|
2434
|
+
DeleteFilesInRange(db_.get(), db_->DefaultColumnFamily(), &begin, &end));
|
|
2422
2435
|
ASSERT_EQ(vals[1], GetValue(Key(1)));
|
|
2423
2436
|
|
|
2424
2437
|
db_->ReleaseSnapshot(snapshot);
|
|
@@ -3657,7 +3670,7 @@ TEST_F(DBCompactionTest, SuggestCompactRangeNoTwoLevel0Compactions) {
|
|
|
3657
3670
|
|
|
3658
3671
|
GenerateNewRandomFile(&rnd, /* nowait */ true);
|
|
3659
3672
|
ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
|
|
3660
|
-
ASSERT_OK(experimental::SuggestCompactRange(db_, nullptr, nullptr));
|
|
3673
|
+
ASSERT_OK(experimental::SuggestCompactRange(db_.get(), nullptr, nullptr));
|
|
3661
3674
|
for (int num = 0; num < options.level0_file_num_compaction_trigger + 1;
|
|
3662
3675
|
num++) {
|
|
3663
3676
|
GenerateNewRandomFile(&rnd, /* nowait */ true);
|
|
@@ -4533,7 +4546,8 @@ TEST_F(DBCompactionTest, DeleteFilesInRangeConflictWithCompaction) {
|
|
|
4533
4546
|
std::string end_string = Key(kMaxKey + 1);
|
|
4534
4547
|
Slice begin(begin_string);
|
|
4535
4548
|
Slice end(end_string);
|
|
4536
|
-
ASSERT_OK(
|
|
4549
|
+
ASSERT_OK(
|
|
4550
|
+
DeleteFilesInRange(db_.get(), db_->DefaultColumnFamily(), &begin, &end));
|
|
4537
4551
|
SyncPoint::GetInstance()->DisableProcessing();
|
|
4538
4552
|
}
|
|
4539
4553
|
|
|
@@ -7840,7 +7854,7 @@ class DBCompactionTestL0FilesMisorderCorruption : public DBCompactionTest {
|
|
|
7840
7854
|
options_.level0_file_num_compaction_trigger = 3;
|
|
7841
7855
|
|
|
7842
7856
|
CompactionOptionsFIFO fifo_options;
|
|
7843
|
-
if (compaction_path_to_test == "
|
|
7857
|
+
if (compaction_path_to_test == "PickCostBasedIntraL0Compaction" ||
|
|
7844
7858
|
compaction_path_to_test == "CompactRange") {
|
|
7845
7859
|
fifo_options.allow_compaction = true;
|
|
7846
7860
|
} else if (compaction_path_to_test == "CompactFile") {
|
|
@@ -7940,7 +7954,7 @@ class DBCompactionTestL0FilesMisorderCorruption : public DBCompactionTest {
|
|
|
7940
7954
|
|
|
7941
7955
|
void SetupSyncPoints(const std::string& compaction_path_to_test) {
|
|
7942
7956
|
compaction_path_sync_point_called_.store(false);
|
|
7943
|
-
if (compaction_path_to_test == "
|
|
7957
|
+
if (compaction_path_to_test == "PickCostBasedIntraL0Compaction" &&
|
|
7944
7958
|
options_.compaction_style == CompactionStyle::kCompactionStyleLevel) {
|
|
7945
7959
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
7946
7960
|
"PostPickFileToCompact", [&](void* arg) {
|
|
@@ -7950,7 +7964,7 @@ class DBCompactionTestL0FilesMisorderCorruption : public DBCompactionTest {
|
|
|
7950
7964
|
*picked_file_to_compact = false;
|
|
7951
7965
|
});
|
|
7952
7966
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
7953
|
-
"
|
|
7967
|
+
"PickCostBasedIntraL0Compaction", [&](void* /*arg*/) {
|
|
7954
7968
|
compaction_path_sync_point_called_.store(true);
|
|
7955
7969
|
});
|
|
7956
7970
|
|
|
@@ -7986,12 +8000,12 @@ class DBCompactionTestL0FilesMisorderCorruption : public DBCompactionTest {
|
|
|
7986
8000
|
"PickDeleteTriggeredCompactionReturnNonnullptr", [&](void* /*arg*/) {
|
|
7987
8001
|
compaction_path_sync_point_called_.store(true);
|
|
7988
8002
|
});
|
|
7989
|
-
} else if ((compaction_path_to_test == "
|
|
8003
|
+
} else if ((compaction_path_to_test == "PickCostBasedIntraL0Compaction" ||
|
|
7990
8004
|
compaction_path_to_test == "CompactRange") &&
|
|
7991
8005
|
options_.compaction_style ==
|
|
7992
8006
|
CompactionStyle::kCompactionStyleFIFO) {
|
|
7993
8007
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
7994
|
-
"
|
|
8008
|
+
"PickCostBasedIntraL0Compaction", [&](void* /*arg*/) {
|
|
7995
8009
|
compaction_path_sync_point_called_.store(true);
|
|
7996
8010
|
});
|
|
7997
8011
|
}
|
|
@@ -8063,7 +8077,7 @@ TEST_F(DBCompactionTest, CompactFilesSupportKeyPlacementRangeConflict) {
|
|
|
8063
8077
|
ASSERT_OK(Flush());
|
|
8064
8078
|
ASSERT_OK(Put("k4", "v"));
|
|
8065
8079
|
ASSERT_OK(Flush());
|
|
8066
|
-
ASSERT_OK(experimental::PromoteL0(db_, db_->DefaultColumnFamily(), 1));
|
|
8080
|
+
ASSERT_OK(experimental::PromoteL0(db_.get(), db_->DefaultColumnFamily(), 1));
|
|
8067
8081
|
ASSERT_EQ("0,2,1", FilesPerLevel());
|
|
8068
8082
|
|
|
8069
8083
|
ASSERT_OK(Put("k2", "v"));
|
|
@@ -8151,7 +8165,7 @@ TEST_F(DBCompactionTestL0FilesMisorderCorruption,
|
|
|
8151
8165
|
IngestOneKeyValue(dbfull(), Key(i), "new", options_);
|
|
8152
8166
|
}
|
|
8153
8167
|
|
|
8154
|
-
SetupSyncPoints("
|
|
8168
|
+
SetupSyncPoints("PickCostBasedIntraL0Compaction");
|
|
8155
8169
|
ResumeCompactionThread();
|
|
8156
8170
|
|
|
8157
8171
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
@@ -8284,7 +8298,8 @@ TEST_F(DBCompactionTestL0FilesMisorderCorruption,
|
|
|
8284
8298
|
|
|
8285
8299
|
TEST_F(DBCompactionTestL0FilesMisorderCorruption,
|
|
8286
8300
|
FlushAfterIntraL0FIFOCompactionWithIngestedFile) {
|
|
8287
|
-
for (const std::string compaction_path_to_test :
|
|
8301
|
+
for (const std::string compaction_path_to_test :
|
|
8302
|
+
{"PickCostBasedIntraL0Compaction"}) {
|
|
8288
8303
|
SetupOptions(CompactionStyle::kCompactionStyleFIFO,
|
|
8289
8304
|
compaction_path_to_test);
|
|
8290
8305
|
DestroyAndReopen(options_);
|
|
@@ -11483,20 +11498,24 @@ TEST_F(DBCompactionTest, RecordNewestKeyTimeForTtlCompaction) {
|
|
|
11483
11498
|
// Check that we are populating newest_key_time on flush
|
|
11484
11499
|
std::vector<FileMetaData*> file_metadatas = GetLevelFileMetadatas(0);
|
|
11485
11500
|
ASSERT_EQ(file_metadatas.size(), 4);
|
|
11486
|
-
uint64_t first_newest_key_time =
|
|
11487
|
-
|
|
11501
|
+
uint64_t first_newest_key_time = file_metadatas[0]
|
|
11502
|
+
->fd.pinned_reader.Get()
|
|
11503
|
+
->GetTableProperties()
|
|
11504
|
+
->newest_key_time;
|
|
11488
11505
|
ASSERT_NE(first_newest_key_time, kUnknownNewestKeyTime);
|
|
11489
11506
|
// Check that the newest_key_times are in expected ordering
|
|
11490
11507
|
uint64_t prev_newest_key_time = first_newest_key_time;
|
|
11491
11508
|
for (size_t idx = 1; idx < file_metadatas.size(); idx++) {
|
|
11492
11509
|
uint64_t newest_key_time = file_metadatas[idx]
|
|
11493
|
-
->fd.
|
|
11510
|
+
->fd.pinned_reader.Get()
|
|
11511
|
+
->GetTableProperties()
|
|
11494
11512
|
->newest_key_time;
|
|
11495
11513
|
|
|
11496
11514
|
ASSERT_LT(newest_key_time, prev_newest_key_time);
|
|
11497
11515
|
prev_newest_key_time = newest_key_time;
|
|
11498
11516
|
ASSERT_EQ(newest_key_time, file_metadatas[idx]
|
|
11499
|
-
->fd.
|
|
11517
|
+
->fd.pinned_reader.Get()
|
|
11518
|
+
->GetTableProperties()
|
|
11500
11519
|
->creation_time);
|
|
11501
11520
|
}
|
|
11502
11521
|
// The delta between the first and last newest_key_times is 15s
|
|
@@ -11511,14 +11530,18 @@ TEST_F(DBCompactionTest, RecordNewestKeyTimeForTtlCompaction) {
|
|
|
11511
11530
|
ASSERT_EQ(NumTableFilesAtLevel(0), 1);
|
|
11512
11531
|
file_metadatas = GetLevelFileMetadatas(0);
|
|
11513
11532
|
ASSERT_EQ(file_metadatas.size(), 1);
|
|
11514
|
-
ASSERT_EQ(
|
|
11515
|
-
|
|
11516
|
-
|
|
11533
|
+
ASSERT_EQ(file_metadatas[0]
|
|
11534
|
+
->fd.pinned_reader.Get()
|
|
11535
|
+
->GetTableProperties()
|
|
11536
|
+
->newest_key_time,
|
|
11537
|
+
first_newest_key_time);
|
|
11517
11538
|
// Contrast newest_key_time with creation_time, which records the oldest
|
|
11518
11539
|
// ancestor time (15s older than newest_key_time)
|
|
11519
|
-
ASSERT_EQ(
|
|
11520
|
-
|
|
11521
|
-
|
|
11540
|
+
ASSERT_EQ(file_metadatas[0]
|
|
11541
|
+
->fd.pinned_reader.Get()
|
|
11542
|
+
->GetTableProperties()
|
|
11543
|
+
->creation_time,
|
|
11544
|
+
last_newest_key_time);
|
|
11522
11545
|
ASSERT_EQ(file_metadatas[0]->oldest_ancester_time, last_newest_key_time);
|
|
11523
11546
|
|
|
11524
11547
|
// Make sure TTL of 5s causes compaction
|
|
@@ -11658,6 +11681,283 @@ TEST_F(DBCompactionTest, PeriodicTask) {
|
|
|
11658
11681
|
ASSERT_EQ(listener->num_periodic_compactions, 1);
|
|
11659
11682
|
Close();
|
|
11660
11683
|
}
|
|
11684
|
+
|
|
11685
|
+
// Regression test for a bug in SetupOtherFilesWithRoundRobinExpansion where
|
|
11686
|
+
// duplicate files are added to the compaction input, corrupting
|
|
11687
|
+
// ExpandInputsToCleanCut and violating the clean-cut invariant. The bug
|
|
11688
|
+
// requires: (1) kRoundRobin compaction priority, (2) files at a non-L0 level
|
|
11689
|
+
// with shared user key boundaries (adjacent files whose boundary keys share
|
|
11690
|
+
// the same user key), and (3) ExpandInputsToCleanCut expanding the initially
|
|
11691
|
+
// picked file to include multiple adjacent files in PickFileToCompact.
|
|
11692
|
+
TEST_F(DBCompactionTest, RoundRobinCleanCutWithSharedBoundary) {
|
|
11693
|
+
Options options = CurrentOptions();
|
|
11694
|
+
options.compaction_style = kCompactionStyleLevel;
|
|
11695
|
+
options.compaction_pri = kRoundRobin;
|
|
11696
|
+
options.level_compaction_dynamic_level_bytes = false;
|
|
11697
|
+
options.max_bytes_for_level_base = 100;
|
|
11698
|
+
options.disable_auto_compactions = true;
|
|
11699
|
+
|
|
11700
|
+
DestroyAndReopen(options);
|
|
11701
|
+
|
|
11702
|
+
std::vector<const Snapshot*> snapshots;
|
|
11703
|
+
for (int v = 0; v < 5; v++) {
|
|
11704
|
+
for (int k = 0; k < 3; k++) {
|
|
11705
|
+
ASSERT_OK(Put("key" + std::to_string(k), "v" + std::to_string(v)));
|
|
11706
|
+
}
|
|
11707
|
+
snapshots.push_back(db_->GetSnapshot());
|
|
11708
|
+
ASSERT_OK(Flush());
|
|
11709
|
+
}
|
|
11710
|
+
|
|
11711
|
+
// Force L0->L1 compaction output to split every 3 keys. With 3 keys x 5
|
|
11712
|
+
// versions (15 KVs) sorted by (user_key asc, seq desc), splitting every 3
|
|
11713
|
+
// creates 5 files where adjacent files share boundaries across different
|
|
11714
|
+
// user keys (e.g., File0 ends with key0, File1 starts with key0 and ends
|
|
11715
|
+
// with key1, etc.). This chain of 4+ shared boundaries across 3 different
|
|
11716
|
+
// user keys is needed so that ExpandInputsToCleanCut expands the picked
|
|
11717
|
+
// file to multiple files, and the duplicate in the round-robin loop causes
|
|
11718
|
+
// GetRange to return a truncated range that drops files from the set.
|
|
11719
|
+
std::atomic<int> key_count{0};
|
|
11720
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
11721
|
+
"CompactionOutputs::ShouldStopBefore::manual_decision", [&](void* arg) {
|
|
11722
|
+
auto* p = static_cast<std::pair<bool*, const Slice>*>(arg);
|
|
11723
|
+
int n = key_count.fetch_add(1);
|
|
11724
|
+
if (n > 0 && n % 3 == 0) {
|
|
11725
|
+
*(p->first) = true;
|
|
11726
|
+
}
|
|
11727
|
+
});
|
|
11728
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
11729
|
+
ASSERT_OK(dbfull()->TEST_CompactRange(0, nullptr, nullptr));
|
|
11730
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
11731
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
11732
|
+
|
|
11733
|
+
ColumnFamilyMetaData cf_meta;
|
|
11734
|
+
db_->GetColumnFamilyMetaData(&cf_meta);
|
|
11735
|
+
ASSERT_EQ(cf_meta.levels[1].files.size(), 5U);
|
|
11736
|
+
|
|
11737
|
+
for (auto s : snapshots) {
|
|
11738
|
+
db_->ReleaseSnapshot(s);
|
|
11739
|
+
}
|
|
11740
|
+
|
|
11741
|
+
ASSERT_OK(dbfull()->SetOptions({{"disable_auto_compactions", "false"}}));
|
|
11742
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
11743
|
+
|
|
11744
|
+
for (int k = 0; k < 3; k++) {
|
|
11745
|
+
ASSERT_EQ(Get("key" + std::to_string(k)), "v4");
|
|
11746
|
+
}
|
|
11747
|
+
}
|
|
11748
|
+
|
|
11749
|
+
// Regression test:
|
|
11750
|
+
// 1. Compaction succeeds at subcompaction level, VerifyOutputFiles adds cache
|
|
11751
|
+
// entries for output files via table_cache()->NewIterator().
|
|
11752
|
+
// 2. A post-verification step fails (injected here via sync point), setting
|
|
11753
|
+
// compact_->status to error while each subcompaction's status stays OK.
|
|
11754
|
+
// 3. SubcompactionState::Cleanup checks individual status (OK) and skips
|
|
11755
|
+
// ReleaseObsolete — the cache entries leak.
|
|
11756
|
+
// 4. FaultInjectionTestFS injects metadata read errors, causing GetChildren
|
|
11757
|
+
// to fail in FindObsoleteFiles.
|
|
11758
|
+
// 5. Close()'s FindObsoleteFiles also fails to find the orphan for the same
|
|
11759
|
+
// reason. TEST_VerifyNoObsoleteFilesCached finds the leaked entry.
|
|
11760
|
+
TEST_F(DBCompactionTest, LeakedTableCacheEntryOnCompactionFailure) {
|
|
11761
|
+
auto fault_fs = std::make_shared<FaultInjectionTestFS>(env_->GetFileSystem());
|
|
11762
|
+
std::unique_ptr<Env> fault_env(NewCompositeEnv(fault_fs));
|
|
11763
|
+
|
|
11764
|
+
Options options = CurrentOptions();
|
|
11765
|
+
options.env = fault_env.get();
|
|
11766
|
+
options.paranoid_file_checks = true;
|
|
11767
|
+
options.level0_file_num_compaction_trigger = 2;
|
|
11768
|
+
options.disable_auto_compactions = true;
|
|
11769
|
+
options.num_levels = 3;
|
|
11770
|
+
DestroyAndReopen(options);
|
|
11771
|
+
|
|
11772
|
+
// Write overlapping data to force a real (non-trivial) compaction.
|
|
11773
|
+
ASSERT_OK(Put("a", std::string(1024, 'x')));
|
|
11774
|
+
ASSERT_OK(Put("z", std::string(1024, 'x')));
|
|
11775
|
+
ASSERT_OK(Flush());
|
|
11776
|
+
ASSERT_OK(Put("a", std::string(1024, 'y')));
|
|
11777
|
+
ASSERT_OK(Put("z", std::string(1024, 'y')));
|
|
11778
|
+
ASSERT_OK(Flush());
|
|
11779
|
+
ASSERT_EQ(NumTableFilesAtLevel(0), 2);
|
|
11780
|
+
|
|
11781
|
+
// After VerifyOutputFiles succeeds (cache entries created), inject error
|
|
11782
|
+
// and deactivate the filesystem. The error makes the overall compaction
|
|
11783
|
+
// fail while individual subcompaction statuses stay OK (so Cleanup skips
|
|
11784
|
+
// ReleaseObsolete). The filesystem deactivation makes GetChildren fail
|
|
11785
|
+
// in FindObsoleteFiles, preventing the backstop from evicting the leaked
|
|
11786
|
+
// cache entries — matching the crash test's metadata read fault injection.
|
|
11787
|
+
std::atomic<bool> inject_error{true};
|
|
11788
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
11789
|
+
"CompactionJob::Run():AfterVerifyOutputFiles", [&](void* arg) {
|
|
11790
|
+
if (inject_error.exchange(false)) {
|
|
11791
|
+
*static_cast<Status*>(arg) = Status::Corruption("injected");
|
|
11792
|
+
}
|
|
11793
|
+
});
|
|
11794
|
+
|
|
11795
|
+
// Enable metadata read fault injection on the bg compaction thread after
|
|
11796
|
+
// the compaction job finishes but before FindObsoleteFiles runs. This
|
|
11797
|
+
// makes GetChildren fail (metadata read), matching crash test's
|
|
11798
|
+
// --open_metadata_read_fault_one_in=8. Only metadata reads fail —
|
|
11799
|
+
// logging and other IO operations continue normally.
|
|
11800
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
11801
|
+
"BackgroundCallCompaction:1", [&](void*) {
|
|
11802
|
+
fault_fs->SetThreadLocalErrorContext(
|
|
11803
|
+
FaultInjectionIOType::kMetadataRead, /*seed=*/0, /*one_in=*/1,
|
|
11804
|
+
/*retryable=*/false, /*has_data_loss=*/false);
|
|
11805
|
+
fault_fs->EnableThreadLocalErrorInjection(
|
|
11806
|
+
FaultInjectionIOType::kMetadataRead);
|
|
11807
|
+
});
|
|
11808
|
+
|
|
11809
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
|
|
11810
|
+
|
|
11811
|
+
// Trigger compaction — fails after VerifyOutputFiles.
|
|
11812
|
+
Status s = dbfull()->TEST_CompactRange(0, nullptr, nullptr);
|
|
11813
|
+
ASSERT_NOK(s);
|
|
11814
|
+
|
|
11815
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
11816
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
11817
|
+
|
|
11818
|
+
// Enable metadata read fault injection on the main thread too, so
|
|
11819
|
+
// Close()'s FindObsoleteFiles also fails to find the orphan file.
|
|
11820
|
+
fault_fs->SetThreadLocalErrorContext(
|
|
11821
|
+
FaultInjectionIOType::kMetadataRead, /*seed=*/0, /*one_in=*/1,
|
|
11822
|
+
/*retryable=*/false, /*has_data_loss=*/false);
|
|
11823
|
+
fault_fs->EnableThreadLocalErrorInjection(
|
|
11824
|
+
FaultInjectionIOType::kMetadataRead);
|
|
11825
|
+
|
|
11826
|
+
// TEST_VerifyNoObsoleteFilesCached asserted within Close on ASAN builds
|
|
11827
|
+
s = db_->Close();
|
|
11828
|
+
ASSERT_OK(s);
|
|
11829
|
+
// Release DB before fault_env goes out of scope to avoid use-after-free.
|
|
11830
|
+
db_ = nullptr;
|
|
11831
|
+
}
|
|
11832
|
+
|
|
11833
|
+
TEST_F(DBCompactionTest, VerifyFileChecksumOnCompactionOutput) {
|
|
11834
|
+
Options options = CurrentOptions();
|
|
11835
|
+
options.disable_auto_compactions = true;
|
|
11836
|
+
options.file_checksum_gen_factory = GetFileChecksumGenCrc32cFactory();
|
|
11837
|
+
options.verify_output_flags = VerifyOutputFlags::kVerifyFileChecksum |
|
|
11838
|
+
VerifyOutputFlags::kEnableForLocalCompaction;
|
|
11839
|
+
DestroyAndReopen(options);
|
|
11840
|
+
|
|
11841
|
+
// Create 2 L0 files to trigger compaction
|
|
11842
|
+
for (int i = 0; i < 10; i++) {
|
|
11843
|
+
ASSERT_OK(Put(Key(i), "value" + std::to_string(i)));
|
|
11844
|
+
}
|
|
11845
|
+
ASSERT_OK(Flush());
|
|
11846
|
+
|
|
11847
|
+
for (int i = 5; i < 15; i++) {
|
|
11848
|
+
ASSERT_OK(Put(Key(i), "value2_" + std::to_string(i)));
|
|
11849
|
+
}
|
|
11850
|
+
ASSERT_OK(Flush());
|
|
11851
|
+
|
|
11852
|
+
// Corrupt output files right before verification
|
|
11853
|
+
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
|
|
11854
|
+
"CompactionJob::Run:BeforeVerify", [&](void* /*arg*/) {
|
|
11855
|
+
// Find and corrupt the newest SST file (compaction output)
|
|
11856
|
+
std::vector<std::string> filenames;
|
|
11857
|
+
ASSERT_OK(env_->GetChildren(dbname_, &filenames));
|
|
11858
|
+
uint64_t max_number = 0;
|
|
11859
|
+
std::string target_fname;
|
|
11860
|
+
for (const auto& f : filenames) {
|
|
11861
|
+
uint64_t number;
|
|
11862
|
+
FileType type;
|
|
11863
|
+
if (ParseFileName(f, &number, &type) && type == kTableFile &&
|
|
11864
|
+
number > max_number) {
|
|
11865
|
+
max_number = number;
|
|
11866
|
+
target_fname = dbname_ + "/" + f;
|
|
11867
|
+
}
|
|
11868
|
+
}
|
|
11869
|
+
ASSERT_FALSE(target_fname.empty());
|
|
11870
|
+
ASSERT_OK(test::CorruptFile(env_, target_fname, 0, 1,
|
|
11871
|
+
false /* verifyChecksum */));
|
|
11872
|
+
});
|
|
11873
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
11874
|
+
|
|
11875
|
+
Status s = db_->CompactRange(CompactRangeOptions(), nullptr, nullptr);
|
|
11876
|
+
ASSERT_TRUE(s.IsCorruption()) << s.ToString();
|
|
11877
|
+
ASSERT_TRUE(
|
|
11878
|
+
std::strstr(s.getState(), "File checksum mismatch for compaction output"))
|
|
11879
|
+
<< s.ToString();
|
|
11880
|
+
|
|
11881
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
11882
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
11883
|
+
}
|
|
11884
|
+
|
|
11885
|
+
// Regression test: verify_output_flags with kVerifyIteration should work
|
|
11886
|
+
// correctly even when paranoid_file_checks is false. Before the fix, the
|
|
11887
|
+
// OutputValidator hash was only computed during writing when
|
|
11888
|
+
// paranoid_file_checks was true, but the verification always computed the
|
|
11889
|
+
// hash, leading to a false positive "Key-value checksum of compaction output
|
|
11890
|
+
// doesn't match" error.
|
|
11891
|
+
TEST_F(DBCompactionTest, VerifyIterationWithoutParanoidFileChecks) {
|
|
11892
|
+
Options options = CurrentOptions();
|
|
11893
|
+
options.disable_auto_compactions = true;
|
|
11894
|
+
options.paranoid_file_checks = false;
|
|
11895
|
+
options.verify_output_flags = VerifyOutputFlags::kVerifyIteration |
|
|
11896
|
+
VerifyOutputFlags::kEnableForLocalCompaction;
|
|
11897
|
+
DestroyAndReopen(options);
|
|
11898
|
+
|
|
11899
|
+
// Create 2 L0 files to trigger compaction
|
|
11900
|
+
for (int i = 0; i < 10; i++) {
|
|
11901
|
+
ASSERT_OK(Put(Key(i), "value" + std::to_string(i)));
|
|
11902
|
+
}
|
|
11903
|
+
ASSERT_OK(Flush());
|
|
11904
|
+
|
|
11905
|
+
for (int i = 5; i < 15; i++) {
|
|
11906
|
+
ASSERT_OK(Put(Key(i), "value2_" + std::to_string(i)));
|
|
11907
|
+
}
|
|
11908
|
+
ASSERT_OK(Flush());
|
|
11909
|
+
|
|
11910
|
+
// Compaction should succeed without false corruption errors
|
|
11911
|
+
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
11912
|
+
|
|
11913
|
+
// Verify data is intact
|
|
11914
|
+
for (int i = 0; i < 15; i++) {
|
|
11915
|
+
std::string expected;
|
|
11916
|
+
if (i >= 5) {
|
|
11917
|
+
expected = "value2_" + std::to_string(i);
|
|
11918
|
+
} else {
|
|
11919
|
+
expected = "value" + std::to_string(i);
|
|
11920
|
+
}
|
|
11921
|
+
ASSERT_EQ(Get(Key(i)), expected);
|
|
11922
|
+
}
|
|
11923
|
+
}
|
|
11924
|
+
|
|
11925
|
+
// Also test all verification types combined without paranoid_file_checks
|
|
11926
|
+
TEST_F(DBCompactionTest, VerifyAllOutputFlagsWithoutParanoidFileChecks) {
|
|
11927
|
+
Options options = CurrentOptions();
|
|
11928
|
+
options.disable_auto_compactions = true;
|
|
11929
|
+
options.paranoid_file_checks = false;
|
|
11930
|
+
options.file_checksum_gen_factory = GetFileChecksumGenCrc32cFactory();
|
|
11931
|
+
options.verify_output_flags = VerifyOutputFlags::kVerifyBlockChecksum |
|
|
11932
|
+
VerifyOutputFlags::kVerifyIteration |
|
|
11933
|
+
VerifyOutputFlags::kVerifyFileChecksum |
|
|
11934
|
+
VerifyOutputFlags::kEnableForLocalCompaction;
|
|
11935
|
+
DestroyAndReopen(options);
|
|
11936
|
+
|
|
11937
|
+
for (int i = 0; i < 10; i++) {
|
|
11938
|
+
ASSERT_OK(Put(Key(i), "value" + std::to_string(i)));
|
|
11939
|
+
}
|
|
11940
|
+
ASSERT_OK(Flush());
|
|
11941
|
+
|
|
11942
|
+
for (int i = 5; i < 15; i++) {
|
|
11943
|
+
ASSERT_OK(Put(Key(i), "value2_" + std::to_string(i)));
|
|
11944
|
+
}
|
|
11945
|
+
ASSERT_OK(Flush());
|
|
11946
|
+
|
|
11947
|
+
// Compaction should succeed with all verification types enabled
|
|
11948
|
+
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
11949
|
+
|
|
11950
|
+
for (int i = 0; i < 15; i++) {
|
|
11951
|
+
std::string expected;
|
|
11952
|
+
if (i >= 5) {
|
|
11953
|
+
expected = "value2_" + std::to_string(i);
|
|
11954
|
+
} else {
|
|
11955
|
+
expected = "value" + std::to_string(i);
|
|
11956
|
+
}
|
|
11957
|
+
ASSERT_EQ(Get(Key(i)), expected);
|
|
11958
|
+
}
|
|
11959
|
+
}
|
|
11960
|
+
|
|
11661
11961
|
} // namespace ROCKSDB_NAMESPACE
|
|
11662
11962
|
|
|
11663
11963
|
int main(int argc, char** argv) {
|