@nxtedition/rocksdb 15.4.0 → 15.5.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 +24 -19
- package/cache.js +1 -1
- package/chained-batch.js +12 -3
- 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 +11 -2
- package/iterator.js +15 -7
- 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
|
@@ -29,8 +29,6 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
29
29
|
const std::string kPropertiesBlockName = "rocksdb.properties";
|
|
30
30
|
// NB: only used with format_version >= 6
|
|
31
31
|
const std::string kIndexBlockName = "rocksdb.index";
|
|
32
|
-
// Old property block name for backward compatibility
|
|
33
|
-
const std::string kPropertiesBlockOldName = "rocksdb.stats";
|
|
34
32
|
const std::string kCompressionDictBlockName = "rocksdb.compression_dict";
|
|
35
33
|
const std::string kRangeDelBlockName = "rocksdb.range_del";
|
|
36
34
|
|
|
@@ -170,6 +168,18 @@ void PropertyBlockBuilder::AddTableProperty(const TableProperties& props) {
|
|
|
170
168
|
if (props.key_smallest_seqno != UINT64_MAX) {
|
|
171
169
|
Add(TablePropertiesNames::kKeySmallestSeqno, props.key_smallest_seqno);
|
|
172
170
|
}
|
|
171
|
+
if (props.data_block_restart_interval > 0) {
|
|
172
|
+
Add(TablePropertiesNames::kDataBlockRestartInterval,
|
|
173
|
+
props.data_block_restart_interval);
|
|
174
|
+
}
|
|
175
|
+
if (props.index_block_restart_interval > 0) {
|
|
176
|
+
Add(TablePropertiesNames::kIndexBlockRestartInterval,
|
|
177
|
+
props.index_block_restart_interval);
|
|
178
|
+
}
|
|
179
|
+
if (props.separate_key_value_in_data_block > 0) {
|
|
180
|
+
Add(TablePropertiesNames::kSeparateKeyValueInDataBlock,
|
|
181
|
+
props.separate_key_value_in_data_block);
|
|
182
|
+
}
|
|
173
183
|
}
|
|
174
184
|
|
|
175
185
|
Slice PropertyBlockBuilder::Finish() {
|
|
@@ -316,6 +326,12 @@ Status ParsePropertiesBlock(
|
|
|
316
326
|
&new_table_properties->key_largest_seqno},
|
|
317
327
|
{TablePropertiesNames::kKeySmallestSeqno,
|
|
318
328
|
&new_table_properties->key_smallest_seqno},
|
|
329
|
+
{TablePropertiesNames::kDataBlockRestartInterval,
|
|
330
|
+
&new_table_properties->data_block_restart_interval},
|
|
331
|
+
{TablePropertiesNames::kIndexBlockRestartInterval,
|
|
332
|
+
&new_table_properties->index_block_restart_interval},
|
|
333
|
+
{TablePropertiesNames::kSeparateKeyValueInDataBlock,
|
|
334
|
+
&new_table_properties->separate_key_value_in_data_block},
|
|
319
335
|
};
|
|
320
336
|
|
|
321
337
|
Status s;
|
|
@@ -476,7 +492,8 @@ Status ReadTablePropertiesHelper(
|
|
|
476
492
|
// (See write_global_seqno comment above)
|
|
477
493
|
if (s.ok() && footer.GetBlockTrailerSize() > 0) {
|
|
478
494
|
s = VerifyBlockChecksum(footer, properties_block.data(), block_size,
|
|
479
|
-
file->file_name(), handle.offset()
|
|
495
|
+
file->file_name(), handle.offset(),
|
|
496
|
+
BlockType::kProperties);
|
|
480
497
|
if (s.IsCorruption()) {
|
|
481
498
|
if (new_table_properties->external_sst_file_global_seqno_offset != 0) {
|
|
482
499
|
std::string tmp_buf(properties_block.data(), len);
|
|
@@ -485,7 +502,8 @@ Status ReadTablePropertiesHelper(
|
|
|
485
502
|
handle.offset();
|
|
486
503
|
EncodeFixed64(&tmp_buf[static_cast<size_t>(global_seqno_offset)], 0);
|
|
487
504
|
s = VerifyBlockChecksum(footer, tmp_buf.data(), block_size,
|
|
488
|
-
file->file_name(), handle.offset()
|
|
505
|
+
file->file_name(), handle.offset(),
|
|
506
|
+
BlockType::kProperties);
|
|
489
507
|
}
|
|
490
508
|
}
|
|
491
509
|
}
|
|
@@ -543,14 +561,6 @@ Status FindOptionalMetaBlock(InternalIterator* meta_index_iter,
|
|
|
543
561
|
if (meta_index_iter->Valid() && meta_index_iter->key() == meta_block_name) {
|
|
544
562
|
Slice v = meta_index_iter->value();
|
|
545
563
|
return block_handle->DecodeFrom(&v);
|
|
546
|
-
} else if (meta_block_name == kPropertiesBlockName) {
|
|
547
|
-
// Have to try old name for compatibility
|
|
548
|
-
meta_index_iter->Seek(kPropertiesBlockOldName);
|
|
549
|
-
if (meta_index_iter->status().ok() && meta_index_iter->Valid() &&
|
|
550
|
-
meta_index_iter->key() == kPropertiesBlockOldName) {
|
|
551
|
-
Slice v = meta_index_iter->value();
|
|
552
|
-
return block_handle->DecodeFrom(&v);
|
|
553
|
-
}
|
|
554
564
|
}
|
|
555
565
|
}
|
|
556
566
|
// else
|
|
@@ -34,7 +34,6 @@ struct TableProperties;
|
|
|
34
34
|
// Meta block names for metaindex
|
|
35
35
|
extern const std::string kPropertiesBlockName;
|
|
36
36
|
extern const std::string kIndexBlockName;
|
|
37
|
-
extern const std::string kPropertiesBlockOldName;
|
|
38
37
|
extern const std::string kCompressionDictBlockName;
|
|
39
38
|
extern const std::string kRangeDelBlockName;
|
|
40
39
|
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
#include "port/port.h"
|
|
24
24
|
#include "rocksdb/db.h"
|
|
25
25
|
#include "rocksdb/env.h"
|
|
26
|
+
#include "rocksdb/file_checksum.h"
|
|
26
27
|
#include "rocksdb/iterator.h"
|
|
27
28
|
#include "rocksdb/slice_transform.h"
|
|
28
29
|
#include "rocksdb/status.h"
|
|
@@ -85,6 +86,7 @@ Status SstFileDumper::GetTableReader(const std::string& file_path) {
|
|
|
85
86
|
uint64_t file_size = 0;
|
|
86
87
|
FileOptions fopts = soptions_;
|
|
87
88
|
fopts.temperature = file_temp_;
|
|
89
|
+
fopts.file_checksum_func_name = kNoFileChecksumFuncName;
|
|
88
90
|
Status s = fs->NewRandomAccessFile(file_path, fopts, &file, nullptr);
|
|
89
91
|
if (s.ok()) {
|
|
90
92
|
// check empty file
|
|
@@ -129,18 +131,18 @@ Status SstFileDumper::GetTableReader(const std::string& file_path) {
|
|
|
129
131
|
if (magic_number == kCuckooTableMagicNumber) {
|
|
130
132
|
fopts = soptions_;
|
|
131
133
|
fopts.temperature = file_temp_;
|
|
134
|
+
fopts.file_checksum_func_name = kNoFileChecksumFuncName;
|
|
132
135
|
}
|
|
133
136
|
|
|
134
137
|
fs->NewRandomAccessFile(file_path, fopts, &file, nullptr);
|
|
135
138
|
file_.reset(new RandomAccessFileReader(std::move(file), file_path));
|
|
136
139
|
}
|
|
137
140
|
|
|
138
|
-
|
|
139
|
-
if (ReadTableProperties(magic_number, file_.get(), file_size,
|
|
141
|
+
s = ReadTableProperties(magic_number, file_.get(), file_size,
|
|
140
142
|
(magic_number == kBlockBasedTableMagicNumber)
|
|
141
143
|
? &prefetch_buffer
|
|
142
|
-
: nullptr)
|
|
143
|
-
|
|
144
|
+
: nullptr);
|
|
145
|
+
if (s.ok()) {
|
|
144
146
|
s = SetTableOptionsByMagicNumber(magic_number);
|
|
145
147
|
if (s.ok()) {
|
|
146
148
|
if (table_properties_ && !table_properties_->comparator_name.empty()) {
|
|
@@ -155,8 +157,6 @@ Status SstFileDumper::GetTableReader(const std::string& file_path) {
|
|
|
155
157
|
}
|
|
156
158
|
}
|
|
157
159
|
}
|
|
158
|
-
} else {
|
|
159
|
-
s = SetOldTableOptions();
|
|
160
160
|
}
|
|
161
161
|
options_.comparator = internal_comparator_.user_comparator();
|
|
162
162
|
|
|
@@ -458,8 +458,7 @@ Status SstFileDumper::ReadTableProperties(uint64_t table_magic_number,
|
|
|
458
458
|
Status SstFileDumper::SetTableOptionsByMagicNumber(
|
|
459
459
|
uint64_t table_magic_number) {
|
|
460
460
|
assert(table_properties_);
|
|
461
|
-
if (table_magic_number == kBlockBasedTableMagicNumber
|
|
462
|
-
table_magic_number == kLegacyBlockBasedTableMagicNumber) {
|
|
461
|
+
if (table_magic_number == kBlockBasedTableMagicNumber) {
|
|
463
462
|
// Preserve BlockBasedTableOptions on options_ when possible
|
|
464
463
|
if (!options_.table_factory->IsInstanceOf(
|
|
465
464
|
TableFactory::kBlockBasedTableName())) {
|
|
@@ -524,19 +523,6 @@ Status SstFileDumper::SetTableOptionsByMagicNumber(
|
|
|
524
523
|
return Status::OK();
|
|
525
524
|
}
|
|
526
525
|
|
|
527
|
-
Status SstFileDumper::SetOldTableOptions() {
|
|
528
|
-
assert(table_properties_ == nullptr);
|
|
529
|
-
if (!options_.table_factory->IsInstanceOf(
|
|
530
|
-
TableFactory::kBlockBasedTableName())) {
|
|
531
|
-
options_.table_factory = std::make_shared<BlockBasedTableFactory>();
|
|
532
|
-
}
|
|
533
|
-
if (!silent_) {
|
|
534
|
-
fprintf(stdout, "Sst file format: block-based(old version)\n");
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
return Status::OK();
|
|
538
|
-
}
|
|
539
|
-
|
|
540
526
|
Status SstFileDumper::ReadSequential(bool print_kv, uint64_t read_num_limit,
|
|
541
527
|
bool has_from, const std::string& from_key,
|
|
542
528
|
bool has_to, const std::string& to_key,
|
|
@@ -65,7 +65,6 @@ class SstFileDumper {
|
|
|
65
65
|
std::chrono::microseconds* read_time);
|
|
66
66
|
|
|
67
67
|
Status SetTableOptionsByMagicNumber(uint64_t table_magic_number);
|
|
68
|
-
Status SetOldTableOptions();
|
|
69
68
|
|
|
70
69
|
// Helper function to call the factory with settings specific to the
|
|
71
70
|
// factory implementation
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
#include "file/random_access_file_reader.h"
|
|
12
12
|
#include "options/cf_options.h"
|
|
13
13
|
#include "rocksdb/env.h"
|
|
14
|
+
#include "rocksdb/file_checksum.h"
|
|
14
15
|
#include "rocksdb/file_system.h"
|
|
15
16
|
#include "table/get_context.h"
|
|
16
17
|
#include "table/table_builder.h"
|
|
@@ -51,6 +52,7 @@ Status SstFileReader::Open(const std::string& file_path) {
|
|
|
51
52
|
std::unique_ptr<FSRandomAccessFile> file;
|
|
52
53
|
std::unique_ptr<RandomAccessFileReader> file_reader;
|
|
53
54
|
FileOptions fopts(r->soptions);
|
|
55
|
+
fopts.file_checksum_func_name = kNoFileChecksumFuncName;
|
|
54
56
|
const auto& fs = r->options.env->GetFileSystem();
|
|
55
57
|
|
|
56
58
|
s = fs->GetFileSize(file_path, fopts.io_options, &file_size, nullptr);
|
|
@@ -81,16 +83,20 @@ Status SstFileReader::Open(const std::string& file_path) {
|
|
|
81
83
|
return s;
|
|
82
84
|
}
|
|
83
85
|
|
|
84
|
-
std::vector<Status> SstFileReader::MultiGet(
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
std::vector<Status> SstFileReader::MultiGet(
|
|
87
|
+
const ReadOptions& roptions, const std::vector<Slice>& keys,
|
|
88
|
+
std::vector<PinnableSlice>* values) {
|
|
87
89
|
const auto num_keys = keys.size();
|
|
88
90
|
std::vector<Status> statuses(num_keys, Status::OK());
|
|
89
|
-
|
|
91
|
+
values->resize(num_keys);
|
|
92
|
+
for (size_t i = 0; i < num_keys; ++i) {
|
|
93
|
+
(*values)[i].Reset();
|
|
94
|
+
}
|
|
90
95
|
|
|
91
96
|
auto r = rep_.get();
|
|
92
97
|
const Comparator* user_comparator =
|
|
93
98
|
r->ioptions.internal_comparator.user_comparator();
|
|
99
|
+
Statistics* statistics = r->ioptions.stats;
|
|
94
100
|
|
|
95
101
|
autovector<KeyContext, MultiGetContext::MAX_BATCH_SIZE> key_context;
|
|
96
102
|
autovector<KeyContext*, MultiGetContext::MAX_BATCH_SIZE> sorted_keys;
|
|
@@ -98,16 +104,16 @@ std::vector<Status> SstFileReader::MultiGet(const ReadOptions& roptions,
|
|
|
98
104
|
autovector<MergeContext, MultiGetContext::MAX_BATCH_SIZE> merge_ctx;
|
|
99
105
|
sorted_keys.resize(num_keys);
|
|
100
106
|
for (size_t i = 0; i < num_keys; ++i) {
|
|
101
|
-
PinnableSlice* val = &
|
|
102
|
-
val->Reset();
|
|
107
|
+
PinnableSlice* val = &(*values)[i];
|
|
103
108
|
merge_ctx.emplace_back();
|
|
104
109
|
key_context.emplace_back(nullptr, keys[i], val, nullptr,
|
|
105
110
|
nullptr /* timestamp */, &statuses[i]);
|
|
106
|
-
get_ctx.emplace_back(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
+
get_ctx.emplace_back(
|
|
112
|
+
user_comparator, r->ioptions.merge_operator.get(), nullptr /* logger */,
|
|
113
|
+
statistics, GetContext::kNotFound, *key_context[i].key, val,
|
|
114
|
+
nullptr /* columns */, nullptr /* timestamp */,
|
|
115
|
+
nullptr /* value_found */, &merge_ctx[i], true,
|
|
116
|
+
&key_context[i].max_covering_tombstone_seq, r->ioptions.clock);
|
|
111
117
|
key_context[i].get_context = &get_ctx[i];
|
|
112
118
|
}
|
|
113
119
|
for (size_t i = 0; i < num_keys; ++i) {
|
|
@@ -135,12 +141,12 @@ std::vector<Status> SstFileReader::MultiGet(const ReadOptions& roptions,
|
|
|
135
141
|
r->moptions.prefix_extractor.get(),
|
|
136
142
|
false /* skip filters */);
|
|
137
143
|
|
|
138
|
-
values->resize(num_keys);
|
|
139
144
|
for (size_t i = 0; i < num_keys; ++i) {
|
|
145
|
+
get_ctx[i].ReportCounters();
|
|
146
|
+
|
|
140
147
|
if (statuses[i].ok()) {
|
|
141
148
|
switch (get_ctx[i].State()) {
|
|
142
149
|
case GetContext::kFound:
|
|
143
|
-
(*values)[i].assign(pin_values[i].data(), pin_values[i].size());
|
|
144
150
|
break;
|
|
145
151
|
case GetContext::kNotFound:
|
|
146
152
|
case GetContext::kDeleted:
|
|
@@ -160,6 +166,75 @@ std::vector<Status> SstFileReader::MultiGet(const ReadOptions& roptions,
|
|
|
160
166
|
return statuses;
|
|
161
167
|
}
|
|
162
168
|
|
|
169
|
+
std::vector<Status> SstFileReader::MultiGet(const ReadOptions& roptions,
|
|
170
|
+
const std::vector<Slice>& keys,
|
|
171
|
+
std::vector<std::string>* values) {
|
|
172
|
+
std::vector<PinnableSlice> pin_values;
|
|
173
|
+
std::vector<Status> statuses = MultiGet(roptions, keys, &pin_values);
|
|
174
|
+
values->resize(keys.size());
|
|
175
|
+
for (size_t i = 0; i < keys.size(); ++i) {
|
|
176
|
+
if (statuses[i].ok()) {
|
|
177
|
+
(*values)[i].assign(pin_values[i].data(), pin_values[i].size());
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return statuses;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
Status SstFileReader::Get(const ReadOptions& roptions, const Slice& key,
|
|
184
|
+
PinnableSlice* value) {
|
|
185
|
+
auto r = rep_.get();
|
|
186
|
+
value->Reset();
|
|
187
|
+
|
|
188
|
+
const Comparator* user_comparator =
|
|
189
|
+
r->ioptions.internal_comparator.user_comparator();
|
|
190
|
+
Statistics* statistics = r->ioptions.stats;
|
|
191
|
+
|
|
192
|
+
Status status;
|
|
193
|
+
MergeContext merge_context;
|
|
194
|
+
SequenceNumber max_covering_tombstone_seq = 0;
|
|
195
|
+
GetContext get_ctx(user_comparator, r->ioptions.merge_operator.get(),
|
|
196
|
+
nullptr /* logger */, statistics, GetContext::kNotFound,
|
|
197
|
+
key, value, nullptr /* columns */, nullptr /* timestamp */,
|
|
198
|
+
nullptr /* value_found */, &merge_context, true,
|
|
199
|
+
&max_covering_tombstone_seq, r->ioptions.clock);
|
|
200
|
+
|
|
201
|
+
status = r->table_reader->Get(
|
|
202
|
+
roptions, InternalKey(key, kMaxSequenceNumber, kTypeValue).Encode(),
|
|
203
|
+
&get_ctx, r->moptions.prefix_extractor.get(), false /* skip_filters */);
|
|
204
|
+
|
|
205
|
+
get_ctx.ReportCounters();
|
|
206
|
+
|
|
207
|
+
if (status.ok()) {
|
|
208
|
+
switch (get_ctx.State()) {
|
|
209
|
+
case GetContext::kFound:
|
|
210
|
+
break;
|
|
211
|
+
case GetContext::kNotFound:
|
|
212
|
+
case GetContext::kDeleted:
|
|
213
|
+
status = Status::NotFound();
|
|
214
|
+
break;
|
|
215
|
+
case GetContext::kMerge:
|
|
216
|
+
status = Status::MergeInProgress();
|
|
217
|
+
break;
|
|
218
|
+
case GetContext::kCorrupt:
|
|
219
|
+
case GetContext::kUnexpectedBlobIndex:
|
|
220
|
+
case GetContext::kMergeOperatorFailed:
|
|
221
|
+
status = Status::Corruption();
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return status;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
Status SstFileReader::Get(const ReadOptions& roptions, const Slice& key,
|
|
229
|
+
std::string* value) {
|
|
230
|
+
PinnableSlice pin_value;
|
|
231
|
+
Status s = Get(roptions, key, &pin_value);
|
|
232
|
+
if (s.ok()) {
|
|
233
|
+
value->assign(pin_value.data(), pin_value.size());
|
|
234
|
+
}
|
|
235
|
+
return s;
|
|
236
|
+
}
|
|
237
|
+
|
|
163
238
|
Iterator* SstFileReader::NewIterator(const ReadOptions& roptions) {
|
|
164
239
|
assert(roptions.io_activity == Env::IOActivity::kUnknown);
|
|
165
240
|
auto r = rep_.get();
|
|
@@ -164,7 +164,7 @@ TEST_F(SstFileReaderTest, ReadFileWithGlobalSeqno) {
|
|
|
164
164
|
Options options;
|
|
165
165
|
options.create_if_missing = true;
|
|
166
166
|
std::string db_name = test::PerThreadDBPath("test_db");
|
|
167
|
-
DB
|
|
167
|
+
std::unique_ptr<DB> db;
|
|
168
168
|
ASSERT_OK(DB::Open(options, db_name, &db));
|
|
169
169
|
// Bump sequence number.
|
|
170
170
|
ASSERT_OK(db->Put(WriteOptions(), keys[0], "foo"));
|
|
@@ -186,7 +186,7 @@ TEST_F(SstFileReaderTest, ReadFileWithGlobalSeqno) {
|
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
ASSERT_FALSE(ingested_file.empty());
|
|
189
|
-
|
|
189
|
+
db.reset();
|
|
190
190
|
|
|
191
191
|
// Verify the file can be open and read by SstFileReader.
|
|
192
192
|
CheckFile(db_name + ingested_file, keys, true /* check_global_seqno */);
|
|
@@ -768,39 +768,36 @@ TEST_F(SstFileReaderTableIteratorTest, UserDefinedTimestampsEnabled) {
|
|
|
768
768
|
Close();
|
|
769
769
|
}
|
|
770
770
|
|
|
771
|
-
class
|
|
771
|
+
class SstFileReaderTableGetTest : public DBTestBase,
|
|
772
|
+
public testing::WithParamInterface<bool> {
|
|
772
773
|
public:
|
|
773
|
-
|
|
774
|
-
: DBTestBase("
|
|
774
|
+
SstFileReaderTableGetTest()
|
|
775
|
+
: DBTestBase("sst_file_reader_table_get_test",
|
|
775
776
|
/*env_do_fsync=*/false) {}
|
|
776
777
|
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
ASSERT_OK(ParseInternalKey(iter->key(), &pikey, /*log_err_key=*/false));
|
|
785
|
-
ASSERT_EQ(pikey.user_key, user_key);
|
|
786
|
-
ASSERT_EQ(pikey.type, value_type);
|
|
787
|
-
if (expected_value.has_value()) {
|
|
788
|
-
ASSERT_EQ(iter->value(), expected_value.value());
|
|
789
|
-
}
|
|
790
|
-
if (!backward_iteration) {
|
|
791
|
-
iter->Next();
|
|
778
|
+
bool UseMultiGet() const { return GetParam(); }
|
|
779
|
+
|
|
780
|
+
std::vector<Status> DoGet(SstFileReader& reader,
|
|
781
|
+
const std::vector<Slice>& keys,
|
|
782
|
+
std::vector<std::string>* values) {
|
|
783
|
+
if (UseMultiGet()) {
|
|
784
|
+
return reader.MultiGet(ReadOptions(), keys, values);
|
|
792
785
|
} else {
|
|
793
|
-
|
|
786
|
+
values->resize(keys.size());
|
|
787
|
+
std::vector<Status> statuses(keys.size());
|
|
788
|
+
for (size_t i = 0; i < keys.size(); ++i) {
|
|
789
|
+
statuses[i] = reader.Get(ReadOptions(), keys[i], &(*values)[i]);
|
|
790
|
+
}
|
|
791
|
+
return statuses;
|
|
794
792
|
}
|
|
795
793
|
}
|
|
796
794
|
};
|
|
797
795
|
|
|
798
|
-
|
|
796
|
+
TEST_P(SstFileReaderTableGetTest, Basic) {
|
|
799
797
|
Options options = CurrentOptions();
|
|
800
|
-
const Comparator* ucmp = BytewiseComparator();
|
|
801
|
-
options.comparator = ucmp;
|
|
802
798
|
options.disable_auto_compactions = true;
|
|
803
799
|
options.merge_operator = MergeOperators::CreateStringAppendOperator();
|
|
800
|
+
options.statistics = CreateDBStatistics();
|
|
804
801
|
BlockBasedTableOptions bbto;
|
|
805
802
|
bbto.filter_policy.reset(NewBloomFilterPolicy(10, false));
|
|
806
803
|
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
@@ -822,7 +819,7 @@ TEST_F(SstFileReaderTableMultiGetTest, Basic) {
|
|
|
822
819
|
|
|
823
820
|
std::vector<LiveFileMetaData> files;
|
|
824
821
|
dbfull()->GetLiveFilesMetaData(&files);
|
|
825
|
-
|
|
822
|
+
ASSERT_EQ(files.size(), 1);
|
|
826
823
|
ASSERT_TRUE(files[0].level == 0);
|
|
827
824
|
std::string file_name = files[0].directory + "/" + files[0].relative_filename;
|
|
828
825
|
|
|
@@ -830,25 +827,36 @@ TEST_F(SstFileReaderTableMultiGetTest, Basic) {
|
|
|
830
827
|
ASSERT_OK(reader.Open(file_name));
|
|
831
828
|
ASSERT_OK(reader.VerifyChecksum());
|
|
832
829
|
|
|
833
|
-
|
|
830
|
+
ASSERT_OK(options.statistics->Reset());
|
|
831
|
+
|
|
832
|
+
std::vector<Slice> keys = {"fo1", "foo", "baz",
|
|
833
|
+
"bar", "aaa", "zzz_not_in_sst"};
|
|
834
834
|
std::vector<std::string> values;
|
|
835
|
+
auto statuses = DoGet(reader, keys, &values);
|
|
835
836
|
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
ASSERT_EQ("val4,val5"
|
|
837
|
+
// Non-existent key returns NotFound
|
|
838
|
+
ASSERT_TRUE(statuses[0].IsNotFound());
|
|
839
|
+
|
|
840
|
+
// Deleted key returns NotFound
|
|
841
|
+
ASSERT_TRUE(statuses[1].IsNotFound());
|
|
842
|
+
|
|
843
|
+
// Found keys
|
|
844
|
+
ASSERT_OK(statuses[2]);
|
|
845
|
+
ASSERT_EQ(values[2], "val3");
|
|
846
|
+
|
|
847
|
+
ASSERT_OK(statuses[3]);
|
|
848
|
+
ASSERT_EQ(values[3], "val2");
|
|
849
|
+
|
|
850
|
+
// Merged key
|
|
851
|
+
ASSERT_OK(statuses[4]);
|
|
852
|
+
ASSERT_EQ(values[4], "val4,val5");
|
|
853
|
+
|
|
854
|
+
// Bloom filter filtered key
|
|
855
|
+
ASSERT_TRUE(statuses[5].IsNotFound());
|
|
856
|
+
|
|
857
|
+
uint64_t cache_hits = options.statistics->getTickerCount(BLOCK_CACHE_HIT);
|
|
858
|
+
uint64_t cache_misses = options.statistics->getTickerCount(BLOCK_CACHE_MISS);
|
|
859
|
+
ASSERT_GT(cache_hits + cache_misses, 0);
|
|
852
860
|
|
|
853
861
|
dbfull()->ReleaseSnapshot(snapshot1);
|
|
854
862
|
dbfull()->ReleaseSnapshot(snapshot2);
|
|
@@ -856,6 +864,9 @@ TEST_F(SstFileReaderTableMultiGetTest, Basic) {
|
|
|
856
864
|
Close();
|
|
857
865
|
}
|
|
858
866
|
|
|
867
|
+
INSTANTIATE_TEST_CASE_P(SingleAndMulti, SstFileReaderTableGetTest,
|
|
868
|
+
testing::Bool());
|
|
869
|
+
|
|
859
870
|
} // namespace ROCKSDB_NAMESPACE
|
|
860
871
|
|
|
861
872
|
int main(int argc, char** argv) {
|
|
@@ -30,7 +30,7 @@ const size_t kFadviseTrigger = 1024 * 1024; // 1MB
|
|
|
30
30
|
struct SstFileWriter::Rep {
|
|
31
31
|
Rep(const EnvOptions& _env_options, const Options& options,
|
|
32
32
|
Env::IOPriority _io_priority, const Comparator* _user_comparator,
|
|
33
|
-
ColumnFamilyHandle* _cfh, bool _invalidate_page_cache,
|
|
33
|
+
ColumnFamilyHandle* _cfh, bool _invalidate_page_cache,
|
|
34
34
|
std::string _db_session_id)
|
|
35
35
|
: env_options(_env_options),
|
|
36
36
|
ioptions(options),
|
|
@@ -39,7 +39,6 @@ struct SstFileWriter::Rep {
|
|
|
39
39
|
internal_comparator(_user_comparator),
|
|
40
40
|
cfh(_cfh),
|
|
41
41
|
invalidate_page_cache(_invalidate_page_cache),
|
|
42
|
-
skip_filters(_skip_filters),
|
|
43
42
|
db_session_id(_db_session_id),
|
|
44
43
|
ts_sz(_user_comparator->timestamp_size()),
|
|
45
44
|
strip_timestamp(ts_sz > 0 &&
|
|
@@ -67,7 +66,6 @@ struct SstFileWriter::Rep {
|
|
|
67
66
|
// The size of the file during the last time we called Fadvise to remove
|
|
68
67
|
// cached pages from page cache.
|
|
69
68
|
uint64_t last_fadvise_size = 0;
|
|
70
|
-
bool skip_filters;
|
|
71
69
|
std::string db_session_id;
|
|
72
70
|
uint64_t next_file_number = 1;
|
|
73
71
|
size_t ts_sz;
|
|
@@ -305,9 +303,9 @@ SstFileWriter::SstFileWriter(const EnvOptions& env_options,
|
|
|
305
303
|
const Comparator* user_comparator,
|
|
306
304
|
ColumnFamilyHandle* column_family,
|
|
307
305
|
bool invalidate_page_cache,
|
|
308
|
-
Env::IOPriority io_priority
|
|
306
|
+
Env::IOPriority io_priority)
|
|
309
307
|
: rep_(new Rep(env_options, options, io_priority, user_comparator,
|
|
310
|
-
column_family, invalidate_page_cache,
|
|
308
|
+
column_family, invalidate_page_cache,
|
|
311
309
|
DBImpl::GenerateDbSessionId(options.env))) {
|
|
312
310
|
// SstFileWriter is used to create sst files that can be added to database
|
|
313
311
|
// later. Therefore, no real db_id and db_session_id are associated with it.
|
|
@@ -403,9 +401,6 @@ Status SstFileWriter::Open(const std::string& file_path, Temperature temp) {
|
|
|
403
401
|
// assign fake file numbers to each file (into table properties) and keep
|
|
404
402
|
// the same session id for the life of the SstFileWriter.
|
|
405
403
|
r->next_file_number++;
|
|
406
|
-
// XXX: when we can remove skip_filters from the SstFileWriter public API
|
|
407
|
-
// we can remove it from TableBuilderOptions.
|
|
408
|
-
table_builder_options.skip_filters = r->skip_filters;
|
|
409
404
|
FileTypeSet tmp_set = r->ioptions.checksum_handoff_file_types;
|
|
410
405
|
r->file_writer.reset(new WritableFileWriter(
|
|
411
406
|
std::move(sst_file), file_path, r->env_options, r->ioptions.clock,
|
|
@@ -424,10 +419,6 @@ Status SstFileWriter::Open(const std::string& file_path, Temperature temp) {
|
|
|
424
419
|
return s;
|
|
425
420
|
}
|
|
426
421
|
|
|
427
|
-
Status SstFileWriter::Add(const Slice& user_key, const Slice& value) {
|
|
428
|
-
return rep_->Add(user_key, value, ValueType::kTypeValue);
|
|
429
|
-
}
|
|
430
|
-
|
|
431
422
|
Status SstFileWriter::Put(const Slice& user_key, const Slice& value) {
|
|
432
423
|
return rep_->Add(user_key, value, ValueType::kTypeValue);
|
|
433
424
|
}
|
|
@@ -164,10 +164,6 @@ struct TableBuilderOptions : public TablePropertiesCollectorFactory::Context {
|
|
|
164
164
|
const TableFileCreationReason reason;
|
|
165
165
|
// END for FilterBuildingContext
|
|
166
166
|
|
|
167
|
-
// XXX: only used by BlockBasedTableBuilder for SstFileWriter. If you
|
|
168
|
-
// want to skip filters, that should be (for example) null filter_policy
|
|
169
|
-
// in the table options of the ioptions.table_factory
|
|
170
|
-
bool skip_filters = false;
|
|
171
167
|
const uint64_t cur_file_num;
|
|
172
168
|
};
|
|
173
169
|
|
|
@@ -328,6 +328,12 @@ const std::string TablePropertiesNames::kKeyLargestSeqno =
|
|
|
328
328
|
"rocksdb.key.largest.seqno";
|
|
329
329
|
const std::string TablePropertiesNames::kKeySmallestSeqno =
|
|
330
330
|
"rocksdb.key.smallest.seqno";
|
|
331
|
+
const std::string TablePropertiesNames::kDataBlockRestartInterval =
|
|
332
|
+
"rocksdb.data.block.restart.interval";
|
|
333
|
+
const std::string TablePropertiesNames::kIndexBlockRestartInterval =
|
|
334
|
+
"rocksdb.index.block.restart.interval";
|
|
335
|
+
const std::string TablePropertiesNames::kSeparateKeyValueInDataBlock =
|
|
336
|
+
"rocksdb.separate.key.value.in.data.block";
|
|
331
337
|
|
|
332
338
|
static std::unordered_map<std::string, OptionTypeInfo>
|
|
333
339
|
table_properties_type_info = {
|
|
@@ -450,6 +456,18 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
450
456
|
{offsetof(struct TableProperties, key_smallest_seqno),
|
|
451
457
|
OptionType::kUInt64T, OptionVerificationType::kNormal,
|
|
452
458
|
OptionTypeFlags::kNone}},
|
|
459
|
+
{"data_block_restart_interval",
|
|
460
|
+
{offsetof(struct TableProperties, data_block_restart_interval),
|
|
461
|
+
OptionType::kUInt64T, OptionVerificationType::kNormal,
|
|
462
|
+
OptionTypeFlags::kNone}},
|
|
463
|
+
{"index_block_restart_interval",
|
|
464
|
+
{offsetof(struct TableProperties, index_block_restart_interval),
|
|
465
|
+
OptionType::kUInt64T, OptionVerificationType::kNormal,
|
|
466
|
+
OptionTypeFlags::kNone}},
|
|
467
|
+
{"separate_key_value_in_data_block",
|
|
468
|
+
{offsetof(struct TableProperties, separate_key_value_in_data_block),
|
|
469
|
+
OptionType::kUInt64T, OptionVerificationType::kNormal,
|
|
470
|
+
OptionTypeFlags::kNone}},
|
|
453
471
|
{"db_id",
|
|
454
472
|
{offsetof(struct TableProperties, db_id), OptionType::kEncodedString}},
|
|
455
473
|
{"db_session_id",
|
|
@@ -84,7 +84,7 @@ void TableReaderBenchmark(Options& opts, EnvOptions& env_options,
|
|
|
84
84
|
Env* env = Env::Default();
|
|
85
85
|
auto* clock = env->GetSystemClock().get();
|
|
86
86
|
TableBuilder* tb = nullptr;
|
|
87
|
-
DB
|
|
87
|
+
std::unique_ptr<DB> db;
|
|
88
88
|
Status s;
|
|
89
89
|
const ImmutableOptions ioptions(opts);
|
|
90
90
|
const ColumnFamilyOptions cfo(opts);
|
|
@@ -257,8 +257,7 @@ void TableReaderBenchmark(Options& opts, EnvOptions& env_options,
|
|
|
257
257
|
if (!through_db) {
|
|
258
258
|
env->DeleteFile(file_name);
|
|
259
259
|
} else {
|
|
260
|
-
|
|
261
|
-
db = nullptr;
|
|
260
|
+
db.reset();
|
|
262
261
|
DestroyDB(dbname, opts);
|
|
263
262
|
}
|
|
264
263
|
}
|