@nxtedition/rocksdb 9.0.0 → 9.0.1
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 +0 -21
- package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -9
- package/deps/rocksdb/rocksdb/Makefile +15 -6
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +17 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +74 -15
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +16 -4
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2024 -14
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +349 -23
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +126 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +182 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +31 -14
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -33
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +293 -17
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +21 -5
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +10 -0
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +25 -11
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +3 -3
- package/deps/rocksdb/rocksdb/db/c.cc +64 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +36 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +23 -15
- package/deps/rocksdb/rocksdb/db/column_family.h +9 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +101 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +36 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +146 -64
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +13 -39
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +8 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +59 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +186 -2
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +17 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +519 -240
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +104 -43
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +169 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +12 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +85 -53
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +99 -82
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +4 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +24 -21
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +83 -55
- package/deps/rocksdb/rocksdb/db/db_iter.h +10 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +187 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +134 -30
- package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +5 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +337 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +51 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +7 -6
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +58 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +17 -19
- package/deps/rocksdb/rocksdb/db/flush_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +18 -70
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.h +11 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +4 -3
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +454 -70
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +32 -19
- package/deps/rocksdb/rocksdb/db/table_cache.h +12 -6
- package/deps/rocksdb/rocksdb/db/version_edit.h +10 -4
- package/deps/rocksdb/rocksdb/db/version_set.cc +75 -73
- package/deps/rocksdb/rocksdb/db/version_set.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +22 -11
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +44 -20
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +15 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +108 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +36 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +195 -130
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +12 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +14 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +44 -38
- package/deps/rocksdb/rocksdb/env/env.cc +5 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +1 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +50 -29
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +32 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +513 -30
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +38 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +14 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +42 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +65 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +37 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +79 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +14 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +4 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -0
- package/deps/rocksdb/rocksdb/options/db_options.cc +47 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +12 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/options/options_test.cc +6 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +7 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +275 -61
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +96 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +179 -62
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +35 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +14 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +10 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +39 -18
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +10 -8
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +6 -2
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +12 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +33 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +2 -4
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -43
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +213 -28
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -10
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +26 -1
- package/deps/rocksdb/rocksdb/util/compression.h +9 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -0
- package/deps/rocksdb/rocksdb/util/udt_util.cc +42 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +19 -0
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +14 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +19 -15
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +9 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +41 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +155 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +81 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +7 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +57 -27
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +105 -8
- package/deps/rocksdb/rocksdb.gyp +4 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
#include "table/block_based/block_cache.h"
|
|
7
7
|
|
|
8
|
+
#include "table/block_based/block_based_table_reader.h"
|
|
9
|
+
|
|
8
10
|
namespace ROCKSDB_NAMESPACE {
|
|
9
11
|
|
|
10
12
|
void BlockCreateContext::Create(std::unique_ptr<Block_kData>* parsed_out,
|
|
@@ -96,7 +98,7 @@ const std::array<const Cache::CacheItemHelper*,
|
|
|
96
98
|
|
|
97
99
|
const Cache::CacheItemHelper* GetCacheItemHelper(
|
|
98
100
|
BlockType block_type, CacheTier lowest_used_cache_tier) {
|
|
99
|
-
if (lowest_used_cache_tier
|
|
101
|
+
if (lowest_used_cache_tier > CacheTier::kVolatileTier) {
|
|
100
102
|
return kCacheItemFullHelperForBlockType[static_cast<unsigned>(block_type)];
|
|
101
103
|
} else {
|
|
102
104
|
return kCacheItemBasicHelperForBlockType[static_cast<unsigned>(block_type)];
|
|
@@ -70,24 +70,28 @@ class Block_kMetaIndex : public Block {
|
|
|
70
70
|
struct BlockCreateContext : public Cache::CreateContext {
|
|
71
71
|
BlockCreateContext() {}
|
|
72
72
|
BlockCreateContext(const BlockBasedTableOptions* _table_options,
|
|
73
|
-
|
|
74
|
-
uint8_t _protection_bytes_per_key,
|
|
73
|
+
const ImmutableOptions* _ioptions, Statistics* _statistics,
|
|
74
|
+
bool _using_zstd, uint8_t _protection_bytes_per_key,
|
|
75
75
|
const Comparator* _raw_ucmp,
|
|
76
76
|
bool _index_value_is_full = false,
|
|
77
77
|
bool _index_has_first_key = false)
|
|
78
78
|
: table_options(_table_options),
|
|
79
|
+
ioptions(_ioptions),
|
|
79
80
|
statistics(_statistics),
|
|
81
|
+
raw_ucmp(_raw_ucmp),
|
|
80
82
|
using_zstd(_using_zstd),
|
|
81
83
|
protection_bytes_per_key(_protection_bytes_per_key),
|
|
82
|
-
raw_ucmp(_raw_ucmp),
|
|
83
84
|
index_value_is_full(_index_value_is_full),
|
|
84
85
|
index_has_first_key(_index_has_first_key) {}
|
|
85
86
|
|
|
86
87
|
const BlockBasedTableOptions* table_options = nullptr;
|
|
88
|
+
const ImmutableOptions* ioptions = nullptr;
|
|
87
89
|
Statistics* statistics = nullptr;
|
|
90
|
+
const Comparator* raw_ucmp = nullptr;
|
|
91
|
+
const UncompressionDict* dict = nullptr;
|
|
92
|
+
uint32_t format_version;
|
|
88
93
|
bool using_zstd = false;
|
|
89
94
|
uint8_t protection_bytes_per_key = 0;
|
|
90
|
-
const Comparator* raw_ucmp = nullptr;
|
|
91
95
|
bool index_value_is_full;
|
|
92
96
|
bool index_has_first_key;
|
|
93
97
|
|
|
@@ -95,9 +99,24 @@ struct BlockCreateContext : public Cache::CreateContext {
|
|
|
95
99
|
template <typename TBlocklike>
|
|
96
100
|
inline void Create(std::unique_ptr<TBlocklike>* parsed_out,
|
|
97
101
|
size_t* charge_out, const Slice& data,
|
|
98
|
-
MemoryAllocator* alloc) {
|
|
99
|
-
|
|
100
|
-
|
|
102
|
+
CompressionType type, MemoryAllocator* alloc) {
|
|
103
|
+
BlockContents uncompressed_block_contents;
|
|
104
|
+
if (type != CompressionType::kNoCompression) {
|
|
105
|
+
assert(dict != nullptr);
|
|
106
|
+
UncompressionContext context(type);
|
|
107
|
+
UncompressionInfo info(context, *dict, type);
|
|
108
|
+
Status s = UncompressBlockData(
|
|
109
|
+
info, data.data(), data.size(), &uncompressed_block_contents,
|
|
110
|
+
table_options->format_version, *ioptions, alloc);
|
|
111
|
+
if (!s.ok()) {
|
|
112
|
+
parsed_out->reset();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
uncompressed_block_contents =
|
|
117
|
+
BlockContents(AllocateAndCopyBlock(data, alloc), data.size());
|
|
118
|
+
}
|
|
119
|
+
Create(parsed_out, std::move(uncompressed_block_contents));
|
|
101
120
|
*charge_out = parsed_out->get()->ApproximateMemoryUsage();
|
|
102
121
|
}
|
|
103
122
|
|
|
@@ -12,15 +12,13 @@
|
|
|
12
12
|
#include "table/block_based/block_based_table_reader.h"
|
|
13
13
|
|
|
14
14
|
namespace ROCKSDB_NAMESPACE {
|
|
15
|
-
void BlockPrefetcher::PrefetchIfNeeded(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const ReadOptions& read_options) {
|
|
15
|
+
void BlockPrefetcher::PrefetchIfNeeded(
|
|
16
|
+
const BlockBasedTable::Rep* rep, const BlockHandle& handle,
|
|
17
|
+
const size_t readahead_size, bool is_for_compaction,
|
|
18
|
+
const bool no_sequential_checking, const ReadOptions& read_options,
|
|
19
|
+
const std::function<void(uint64_t, size_t, size_t&)>& readaheadsize_cb) {
|
|
21
20
|
const size_t len = BlockBasedTable::BlockSizeWithTrailer(handle);
|
|
22
21
|
const size_t offset = handle.offset();
|
|
23
|
-
|
|
24
22
|
if (is_for_compaction) {
|
|
25
23
|
if (!rep->file->use_direct_io() && compaction_readahead_size_ > 0) {
|
|
26
24
|
// If FS supports prefetching (readahead_limit_ will be non zero in that
|
|
@@ -50,7 +48,7 @@ void BlockPrefetcher::PrefetchIfNeeded(const BlockBasedTable::Rep* rep,
|
|
|
50
48
|
compaction_readahead_size_, compaction_readahead_size_,
|
|
51
49
|
&prefetch_buffer_, /*implicit_auto_readahead=*/false,
|
|
52
50
|
/*num_file_reads=*/0, /*num_file_reads_for_auto_readahead=*/0,
|
|
53
|
-
/*upper_bound_offset=*/0);
|
|
51
|
+
/*upper_bound_offset=*/0, /*readaheadsize_cb=*/nullptr);
|
|
54
52
|
return;
|
|
55
53
|
}
|
|
56
54
|
|
|
@@ -59,7 +57,9 @@ void BlockPrefetcher::PrefetchIfNeeded(const BlockBasedTable::Rep* rep,
|
|
|
59
57
|
rep->CreateFilePrefetchBufferIfNotExists(
|
|
60
58
|
readahead_size, readahead_size, &prefetch_buffer_,
|
|
61
59
|
/*implicit_auto_readahead=*/false, /*num_file_reads=*/0,
|
|
62
|
-
/*num_file_reads_for_auto_readahead=*/0, upper_bound_offset_
|
|
60
|
+
/*num_file_reads_for_auto_readahead=*/0, upper_bound_offset_,
|
|
61
|
+
readaheadsize_cb,
|
|
62
|
+
/*usage=*/FilePrefetchBufferUsage::kUserScanPrefetch);
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -84,7 +84,8 @@ void BlockPrefetcher::PrefetchIfNeeded(const BlockBasedTable::Rep* rep,
|
|
|
84
84
|
&prefetch_buffer_, /*implicit_auto_readahead=*/true,
|
|
85
85
|
/*num_file_reads=*/0,
|
|
86
86
|
rep->table_options.num_file_reads_for_auto_readahead,
|
|
87
|
-
upper_bound_offset_
|
|
87
|
+
upper_bound_offset_, readaheadsize_cb,
|
|
88
|
+
/*usage=*/FilePrefetchBufferUsage::kUserScanPrefetch);
|
|
88
89
|
return;
|
|
89
90
|
}
|
|
90
91
|
|
|
@@ -115,7 +116,8 @@ void BlockPrefetcher::PrefetchIfNeeded(const BlockBasedTable::Rep* rep,
|
|
|
115
116
|
initial_auto_readahead_size_, max_auto_readahead_size,
|
|
116
117
|
&prefetch_buffer_, /*implicit_auto_readahead=*/true, num_file_reads_,
|
|
117
118
|
rep->table_options.num_file_reads_for_auto_readahead,
|
|
118
|
-
upper_bound_offset_
|
|
119
|
+
upper_bound_offset_, readaheadsize_cb,
|
|
120
|
+
/*usage=*/FilePrefetchBufferUsage::kUserScanPrefetch);
|
|
119
121
|
return;
|
|
120
122
|
}
|
|
121
123
|
|
|
@@ -137,7 +139,8 @@ void BlockPrefetcher::PrefetchIfNeeded(const BlockBasedTable::Rep* rep,
|
|
|
137
139
|
initial_auto_readahead_size_, max_auto_readahead_size,
|
|
138
140
|
&prefetch_buffer_, /*implicit_auto_readahead=*/true, num_file_reads_,
|
|
139
141
|
rep->table_options.num_file_reads_for_auto_readahead,
|
|
140
|
-
upper_bound_offset_
|
|
142
|
+
upper_bound_offset_, readaheadsize_cb,
|
|
143
|
+
/*usage=*/FilePrefetchBufferUsage::kUserScanPrefetch);
|
|
141
144
|
return;
|
|
142
145
|
}
|
|
143
146
|
|
|
@@ -18,11 +18,11 @@ class BlockPrefetcher {
|
|
|
18
18
|
readahead_size_(initial_auto_readahead_size),
|
|
19
19
|
initial_auto_readahead_size_(initial_auto_readahead_size) {}
|
|
20
20
|
|
|
21
|
-
void PrefetchIfNeeded(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
void PrefetchIfNeeded(
|
|
22
|
+
const BlockBasedTable::Rep* rep, const BlockHandle& handle,
|
|
23
|
+
size_t readahead_size, bool is_for_compaction,
|
|
24
|
+
const bool no_sequential_checking, const ReadOptions& read_options,
|
|
25
|
+
const std::function<void(uint64_t, size_t, size_t&)>& readaheadsize_cb);
|
|
26
26
|
FilePrefetchBuffer* prefetch_buffer() { return prefetch_buffer_.get(); }
|
|
27
27
|
|
|
28
28
|
void UpdateReadPattern(const uint64_t& offset, const size_t& len) {
|
|
@@ -55,6 +55,11 @@ class BlockPrefetcher {
|
|
|
55
55
|
|
|
56
56
|
void SetUpperBoundOffset(uint64_t upper_bound_offset) {
|
|
57
57
|
upper_bound_offset_ = upper_bound_offset;
|
|
58
|
+
if (prefetch_buffer() != nullptr) {
|
|
59
|
+
// Upper bound can be changed on reseek. So update that in
|
|
60
|
+
// FilePrefetchBuffer.
|
|
61
|
+
prefetch_buffer()->ResetUpperBoundOffset(upper_bound_offset);
|
|
62
|
+
}
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
private:
|
|
@@ -848,9 +848,12 @@ TEST_F(BlockPerKVChecksumTest, EmptyBlock) {
|
|
|
848
848
|
Options options = Options();
|
|
849
849
|
BlockBasedTableOptions tbo;
|
|
850
850
|
uint8_t protection_bytes_per_key = 8;
|
|
851
|
-
BlockCreateContext create_context{
|
|
852
|
-
|
|
853
|
-
|
|
851
|
+
BlockCreateContext create_context{&tbo,
|
|
852
|
+
nullptr,
|
|
853
|
+
nullptr /* statistics */,
|
|
854
|
+
false /* using_zstd */,
|
|
855
|
+
protection_bytes_per_key,
|
|
856
|
+
options.comparator};
|
|
854
857
|
create_context.Create(&data_block, std::move(contents));
|
|
855
858
|
std::unique_ptr<DataBlockIter> biter{data_block->NewDataIterator(
|
|
856
859
|
options.comparator, kDisableGlobalSequenceNumber)};
|
|
@@ -885,9 +888,12 @@ TEST_F(BlockPerKVChecksumTest, InitializeProtectionInfo) {
|
|
|
885
888
|
Options options = Options();
|
|
886
889
|
BlockBasedTableOptions tbo;
|
|
887
890
|
uint8_t protection_bytes_per_key = 8;
|
|
888
|
-
BlockCreateContext create_context{
|
|
889
|
-
|
|
890
|
-
|
|
891
|
+
BlockCreateContext create_context{&tbo,
|
|
892
|
+
nullptr /* ioptions */,
|
|
893
|
+
nullptr /* statistics */,
|
|
894
|
+
false /* using_zstd */,
|
|
895
|
+
protection_bytes_per_key,
|
|
896
|
+
options.comparator};
|
|
891
897
|
|
|
892
898
|
{
|
|
893
899
|
std::string invalid_content = "1";
|
|
@@ -949,14 +955,19 @@ TEST_F(BlockPerKVChecksumTest, ApproximateMemory) {
|
|
|
949
955
|
uint8_t protection_bytes_per_key = 8;
|
|
950
956
|
BlockCreateContext with_checksum_create_context{
|
|
951
957
|
&tbo,
|
|
958
|
+
nullptr /* ioptions */,
|
|
952
959
|
nullptr /* statistics */,
|
|
953
960
|
false /* using_zstd */,
|
|
954
961
|
protection_bytes_per_key,
|
|
955
962
|
options.comparator,
|
|
956
963
|
true /* index_value_is_full */};
|
|
957
|
-
BlockCreateContext create_context{
|
|
958
|
-
|
|
959
|
-
|
|
964
|
+
BlockCreateContext create_context{&tbo,
|
|
965
|
+
nullptr /* ioptions */,
|
|
966
|
+
nullptr /* statistics */,
|
|
967
|
+
false /* using_zstd */,
|
|
968
|
+
0,
|
|
969
|
+
options.comparator,
|
|
970
|
+
true /* index_value_is_full */};
|
|
960
971
|
|
|
961
972
|
{
|
|
962
973
|
std::unique_ptr<Block_kData> data_block;
|
|
@@ -1045,8 +1056,11 @@ class DataBlockKVChecksumTest
|
|
|
1045
1056
|
std::vector<std::string> &keys, std::vector<std::string> &values,
|
|
1046
1057
|
int num_record) {
|
|
1047
1058
|
BlockBasedTableOptions tbo;
|
|
1048
|
-
BlockCreateContext create_context{&tbo,
|
|
1049
|
-
|
|
1059
|
+
BlockCreateContext create_context{&tbo,
|
|
1060
|
+
nullptr /* statistics */,
|
|
1061
|
+
nullptr /* ioptions */,
|
|
1062
|
+
false /* using_zstd */,
|
|
1063
|
+
GetChecksumLen(),
|
|
1050
1064
|
Options().comparator};
|
|
1051
1065
|
builder_ = std::make_unique<BlockBuilder>(
|
|
1052
1066
|
static_cast<int>(GetRestartInterval()),
|
|
@@ -1172,6 +1186,7 @@ class IndexBlockKVChecksumTest
|
|
|
1172
1186
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1173
1187
|
BlockCreateContext create_context{
|
|
1174
1188
|
&tbo,
|
|
1189
|
+
nullptr /* ioptions */,
|
|
1175
1190
|
nullptr /* statistics */,
|
|
1176
1191
|
false /* _using_zstd */,
|
|
1177
1192
|
protection_bytes_per_key,
|
|
@@ -1312,9 +1327,12 @@ class MetaIndexBlockKVChecksumTest
|
|
|
1312
1327
|
Options options = Options();
|
|
1313
1328
|
BlockBasedTableOptions tbo;
|
|
1314
1329
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1315
|
-
BlockCreateContext create_context{
|
|
1316
|
-
|
|
1317
|
-
|
|
1330
|
+
BlockCreateContext create_context{&tbo,
|
|
1331
|
+
nullptr /* ioptions */,
|
|
1332
|
+
nullptr /* statistics */,
|
|
1333
|
+
false /* using_zstd */,
|
|
1334
|
+
protection_bytes_per_key,
|
|
1335
|
+
options.comparator};
|
|
1318
1336
|
builder_ =
|
|
1319
1337
|
std::make_unique<BlockBuilder>(static_cast<int>(GetRestartInterval()));
|
|
1320
1338
|
// add a bunch of records to a block
|
|
@@ -1344,9 +1362,12 @@ TEST_P(MetaIndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
|
|
|
1344
1362
|
Options options = Options();
|
|
1345
1363
|
BlockBasedTableOptions tbo;
|
|
1346
1364
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1347
|
-
BlockCreateContext create_context{
|
|
1348
|
-
|
|
1349
|
-
|
|
1365
|
+
BlockCreateContext create_context{&tbo,
|
|
1366
|
+
nullptr /* ioptions */,
|
|
1367
|
+
nullptr /* statistics */,
|
|
1368
|
+
false /* using_zstd */,
|
|
1369
|
+
protection_bytes_per_key,
|
|
1370
|
+
options.comparator};
|
|
1350
1371
|
std::vector<int> num_restart_intervals = {1, 16};
|
|
1351
1372
|
for (const auto num_restart_interval : num_restart_intervals) {
|
|
1352
1373
|
const int kNumRecords = num_restart_interval * GetRestartInterval();
|
|
@@ -1680,4 +1701,4 @@ int main(int argc, char **argv) {
|
|
|
1680
1701
|
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1681
1702
|
::testing::InitGoogleTest(&argc, argv);
|
|
1682
1703
|
return RUN_ALL_TESTS();
|
|
1683
|
-
}
|
|
1704
|
+
}
|
|
@@ -28,12 +28,12 @@ Status FilterBlockReaderCommon<TBlocklike>::ReadFilterBlock(
|
|
|
28
28
|
const BlockBasedTable::Rep* const rep = table->get_rep();
|
|
29
29
|
assert(rep);
|
|
30
30
|
|
|
31
|
-
const Status s =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const Status s = table->RetrieveBlock(
|
|
32
|
+
prefetch_buffer, read_options, rep->filter_handle,
|
|
33
|
+
UncompressionDict::GetEmptyDict(), filter_block, get_context,
|
|
34
|
+
lookup_context,
|
|
35
|
+
/* for_compaction */ false, use_cache,
|
|
36
|
+
/* async_read */ false, /* use_block_cache_for_lookup */ true);
|
|
37
37
|
|
|
38
38
|
return s;
|
|
39
39
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
#include "rocksdb/filter_policy.h"
|
|
11
11
|
|
|
12
12
|
#include <array>
|
|
13
|
+
#include <atomic>
|
|
13
14
|
#include <climits>
|
|
14
15
|
#include <cstring>
|
|
15
16
|
#include <deque>
|
|
@@ -24,6 +25,7 @@
|
|
|
24
25
|
#include "rocksdb/rocksdb_namespace.h"
|
|
25
26
|
#include "rocksdb/slice.h"
|
|
26
27
|
#include "rocksdb/utilities/object_registry.h"
|
|
28
|
+
#include "rocksdb/utilities/options_type.h"
|
|
27
29
|
#include "table/block_based/block_based_table_reader.h"
|
|
28
30
|
#include "table/block_based/filter_policy_internal.h"
|
|
29
31
|
#include "table/block_based/full_filter_block.h"
|
|
@@ -1730,7 +1732,15 @@ const FilterPolicy* NewBloomFilterPolicy(double bits_per_key,
|
|
|
1730
1732
|
RibbonFilterPolicy::RibbonFilterPolicy(double bloom_equivalent_bits_per_key,
|
|
1731
1733
|
int bloom_before_level)
|
|
1732
1734
|
: BloomLikeFilterPolicy(bloom_equivalent_bits_per_key),
|
|
1733
|
-
bloom_before_level_(bloom_before_level) {
|
|
1735
|
+
bloom_before_level_(bloom_before_level) {
|
|
1736
|
+
static const std::unordered_map<std::string, OptionTypeInfo> type_info = {
|
|
1737
|
+
{"bloom_before_level",
|
|
1738
|
+
{offsetof(class RibbonFilterPolicy, bloom_before_level_),
|
|
1739
|
+
OptionType::kAtomicInt, OptionVerificationType::kNormal,
|
|
1740
|
+
OptionTypeFlags::kMutable}},
|
|
1741
|
+
};
|
|
1742
|
+
RegisterOptions(this, &type_info);
|
|
1743
|
+
}
|
|
1734
1744
|
|
|
1735
1745
|
FilterBitsBuilder* RibbonFilterPolicy::GetBuilderWithContext(
|
|
1736
1746
|
const FilterBuildingContext& context) const {
|
|
@@ -1738,31 +1748,38 @@ FilterBitsBuilder* RibbonFilterPolicy::GetBuilderWithContext(
|
|
|
1738
1748
|
// "No filter" special case
|
|
1739
1749
|
return nullptr;
|
|
1740
1750
|
}
|
|
1741
|
-
// Treat unknown same as bottommost
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1751
|
+
// Treat unknown same as bottommost, INT_MAX - 1.
|
|
1752
|
+
// INT_MAX is reserved for "always use Bloom".
|
|
1753
|
+
int levelish = INT_MAX - 1;
|
|
1754
|
+
|
|
1755
|
+
int bloom_before_level = bloom_before_level_.load(std::memory_order_relaxed);
|
|
1756
|
+
if (bloom_before_level < INT_MAX) {
|
|
1757
|
+
switch (context.compaction_style) {
|
|
1758
|
+
case kCompactionStyleLevel:
|
|
1759
|
+
case kCompactionStyleUniversal: {
|
|
1760
|
+
if (context.reason == TableFileCreationReason::kFlush) {
|
|
1761
|
+
// Treat flush as level -1
|
|
1762
|
+
assert(context.level_at_creation == 0);
|
|
1763
|
+
levelish = -1;
|
|
1764
|
+
} else if (context.level_at_creation == -1) {
|
|
1765
|
+
// Unknown level
|
|
1766
|
+
assert(levelish == INT_MAX - 1);
|
|
1767
|
+
} else {
|
|
1768
|
+
levelish = context.level_at_creation;
|
|
1769
|
+
}
|
|
1770
|
+
break;
|
|
1756
1771
|
}
|
|
1757
|
-
|
|
1772
|
+
case kCompactionStyleFIFO:
|
|
1773
|
+
case kCompactionStyleNone:
|
|
1774
|
+
// Treat as bottommost
|
|
1775
|
+
assert(levelish == INT_MAX - 1);
|
|
1776
|
+
break;
|
|
1758
1777
|
}
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
assert(levelish == INT_MAX);
|
|
1763
|
-
break;
|
|
1778
|
+
} else {
|
|
1779
|
+
// INT_MAX == always Bloom
|
|
1780
|
+
assert(levelish < bloom_before_level);
|
|
1764
1781
|
}
|
|
1765
|
-
if (levelish <
|
|
1782
|
+
if (levelish < bloom_before_level) {
|
|
1766
1783
|
return GetFastLocalBloomBuilderWithContext(context);
|
|
1767
1784
|
} else {
|
|
1768
1785
|
return GetStandard128RibbonBuilderWithContext(context);
|
|
@@ -1771,14 +1788,15 @@ FilterBitsBuilder* RibbonFilterPolicy::GetBuilderWithContext(
|
|
|
1771
1788
|
|
|
1772
1789
|
const char* RibbonFilterPolicy::kClassName() { return "ribbonfilter"; }
|
|
1773
1790
|
const char* RibbonFilterPolicy::kNickName() { return "rocksdb.RibbonFilter"; }
|
|
1791
|
+
const char* RibbonFilterPolicy::kName() { return "RibbonFilterPolicy"; }
|
|
1774
1792
|
|
|
1775
1793
|
std::string RibbonFilterPolicy::GetId() const {
|
|
1776
1794
|
return BloomLikeFilterPolicy::GetId() + ":" +
|
|
1777
|
-
std::to_string(bloom_before_level_);
|
|
1795
|
+
std::to_string(bloom_before_level_.load(std::memory_order_acquire));
|
|
1778
1796
|
}
|
|
1779
1797
|
|
|
1780
|
-
|
|
1781
|
-
|
|
1798
|
+
FilterPolicy* NewRibbonFilterPolicy(double bloom_equivalent_bits_per_key,
|
|
1799
|
+
int bloom_before_level) {
|
|
1782
1800
|
return new RibbonFilterPolicy(bloom_equivalent_bits_per_key,
|
|
1783
1801
|
bloom_before_level);
|
|
1784
1802
|
}
|
|
@@ -290,10 +290,11 @@ class RibbonFilterPolicy : public BloomLikeFilterPolicy {
|
|
|
290
290
|
const char* Name() const override { return kClassName(); }
|
|
291
291
|
static const char* kNickName();
|
|
292
292
|
const char* NickName() const override { return kNickName(); }
|
|
293
|
+
static const char* kName();
|
|
293
294
|
std::string GetId() const override;
|
|
294
295
|
|
|
295
296
|
private:
|
|
296
|
-
|
|
297
|
+
std::atomic<int> bloom_before_level_;
|
|
297
298
|
};
|
|
298
299
|
|
|
299
300
|
// For testing only, but always constructable with internal names
|
|
@@ -29,7 +29,7 @@ Status BlockBasedTable::IndexReaderCommon::ReadIndexBlock(
|
|
|
29
29
|
prefetch_buffer, read_options, rep->index_handle,
|
|
30
30
|
UncompressionDict::GetEmptyDict(), &index_block->As<Block_kIndex>(),
|
|
31
31
|
get_context, lookup_context, /* for_compaction */ false, use_cache,
|
|
32
|
-
/* async_read */ false);
|
|
32
|
+
/* async_read */ false, /* use_block_cache_for_lookup */ true);
|
|
33
33
|
|
|
34
34
|
return s;
|
|
35
35
|
}
|
|
@@ -317,12 +317,12 @@ Status PartitionedFilterBlockReader::GetFilterPartitionBlock(
|
|
|
317
317
|
read_options.read_tier = kBlockCacheTier;
|
|
318
318
|
}
|
|
319
319
|
|
|
320
|
-
const Status s =
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
320
|
+
const Status s = table()->RetrieveBlock(
|
|
321
|
+
prefetch_buffer, read_options, fltr_blk_handle,
|
|
322
|
+
UncompressionDict::GetEmptyDict(), filter_block, get_context,
|
|
323
|
+
lookup_context,
|
|
324
|
+
/* for_compaction */ false, /* use_cache */ true,
|
|
325
|
+
/* async_read */ false, /* use_block_cache_for_lookup */ true);
|
|
326
326
|
|
|
327
327
|
return s;
|
|
328
328
|
}
|
|
@@ -498,7 +498,8 @@ Status PartitionedFilterBlockReader::CacheDependencies(
|
|
|
498
498
|
rep->CreateFilePrefetchBuffer(
|
|
499
499
|
0, 0, &prefetch_buffer, false /* Implicit autoreadahead */,
|
|
500
500
|
0 /*num_reads_*/, 0 /*num_file_reads_for_auto_readahead*/,
|
|
501
|
-
/*upper_bound_offset*/ 0
|
|
501
|
+
/*upper_bound_offset*/ 0, /*readaheadsize_cb*/ nullptr,
|
|
502
|
+
/*usage=*/FilePrefetchBufferUsage::kUnknown);
|
|
502
503
|
|
|
503
504
|
IOOptions opts;
|
|
504
505
|
s = rep->file->PrepareIOOptions(ro, opts);
|
|
@@ -521,7 +522,8 @@ Status PartitionedFilterBlockReader::CacheDependencies(
|
|
|
521
522
|
prefetch_buffer ? prefetch_buffer.get() : tail_prefetch_buffer, ro,
|
|
522
523
|
handle, UncompressionDict::GetEmptyDict(),
|
|
523
524
|
/* for_compaction */ false, &block, nullptr /* get_context */,
|
|
524
|
-
&lookup_context, nullptr /* contents */, false
|
|
525
|
+
&lookup_context, nullptr /* contents */, false,
|
|
526
|
+
/* use_block_cache_for_lookup */ true);
|
|
525
527
|
if (!s.ok()) {
|
|
526
528
|
return s;
|
|
527
529
|
}
|
|
@@ -91,14 +91,16 @@ void PartitionedIndexIterator::InitPartitionedIndexBlock() {
|
|
|
91
91
|
// Enabled from the very first IO when ReadOptions.readahead_size is set.
|
|
92
92
|
block_prefetcher_.PrefetchIfNeeded(
|
|
93
93
|
rep, partitioned_index_handle, read_options_.readahead_size,
|
|
94
|
-
is_for_compaction, /*no_sequential_checking=*/false, read_options_
|
|
94
|
+
is_for_compaction, /*no_sequential_checking=*/false, read_options_,
|
|
95
|
+
/*readaheadsize_cb=*/nullptr);
|
|
95
96
|
Status s;
|
|
96
97
|
table_->NewDataBlockIterator<IndexBlockIter>(
|
|
97
98
|
read_options_, partitioned_index_handle, &block_iter_,
|
|
98
99
|
BlockType::kIndex,
|
|
99
100
|
/*get_context=*/nullptr, &lookup_context_,
|
|
100
101
|
block_prefetcher_.prefetch_buffer(),
|
|
101
|
-
/*for_compaction=*/is_for_compaction, /*async_read=*/false, s
|
|
102
|
+
/*for_compaction=*/is_for_compaction, /*async_read=*/false, s,
|
|
103
|
+
/*use_block_cache_for_lookup=*/true);
|
|
102
104
|
block_iter_points_to_real_block_ = true;
|
|
103
105
|
// We could check upper bound here but it is complicated to reason about
|
|
104
106
|
// upper bound in index iterator. On the other than, in large scans, index
|
|
@@ -170,7 +170,8 @@ Status PartitionIndexReader::CacheDependencies(
|
|
|
170
170
|
rep->CreateFilePrefetchBuffer(
|
|
171
171
|
0, 0, &prefetch_buffer, false /*Implicit auto readahead*/,
|
|
172
172
|
0 /*num_reads_*/, 0 /*num_file_reads_for_auto_readahead*/,
|
|
173
|
-
/*upper_bound_offset*/ 0
|
|
173
|
+
/*upper_bound_offset*/ 0, /*readaheadsize_cb*/ nullptr,
|
|
174
|
+
/*usage=*/FilePrefetchBufferUsage::kUnknown);
|
|
174
175
|
IOOptions opts;
|
|
175
176
|
{
|
|
176
177
|
Status s = rep->file->PrepareIOOptions(ro, opts);
|
|
@@ -200,7 +201,7 @@ Status PartitionIndexReader::CacheDependencies(
|
|
|
200
201
|
handle, UncompressionDict::GetEmptyDict(),
|
|
201
202
|
/*for_compaction=*/false, &block.As<Block_kIndex>(),
|
|
202
203
|
/*get_context=*/nullptr, &lookup_context, /*contents=*/nullptr,
|
|
203
|
-
/*async_read=*/false);
|
|
204
|
+
/*async_read=*/false, /*use_block_cache_for_lookup=*/true);
|
|
204
205
|
|
|
205
206
|
if (!s.ok()) {
|
|
206
207
|
return s;
|
|
@@ -63,7 +63,7 @@ Status UncompressionDictReader::ReadUncompressionDictionary(
|
|
|
63
63
|
UncompressionDict::GetEmptyDict(), uncompression_dict, get_context,
|
|
64
64
|
lookup_context,
|
|
65
65
|
/* for_compaction */ false, use_cache,
|
|
66
|
-
/* async_read */ false);
|
|
66
|
+
/* async_read */ false, /* use_block_cache_for_lookup */ true);
|
|
67
67
|
|
|
68
68
|
if (!s.ok()) {
|
|
69
69
|
ROCKS_LOG_WARN(
|
|
@@ -336,9 +336,11 @@ IOStatus BlockFetcher::ReadBlockContents() {
|
|
|
336
336
|
#ifndef NDEBUG
|
|
337
337
|
num_heap_buf_memcpy_++;
|
|
338
338
|
#endif
|
|
339
|
-
|
|
339
|
+
// Save the compressed block without trailer
|
|
340
|
+
slice_ = Slice(slice_.data(), block_size_);
|
|
340
341
|
} else {
|
|
341
342
|
GetBlockContents();
|
|
343
|
+
slice_ = Slice();
|
|
342
344
|
}
|
|
343
345
|
|
|
344
346
|
InsertUncompressedBlockToPersistentCacheIfNeeded();
|
|
@@ -387,7 +389,6 @@ IOStatus BlockFetcher::ReadAsyncBlockContents() {
|
|
|
387
389
|
#ifndef NDEBUG
|
|
388
390
|
num_heap_buf_memcpy_++;
|
|
389
391
|
#endif
|
|
390
|
-
compression_type_ = kNoCompression;
|
|
391
392
|
} else {
|
|
392
393
|
GetBlockContents();
|
|
393
394
|
}
|
|
@@ -79,6 +79,10 @@ class BlockFetcher {
|
|
|
79
79
|
inline size_t GetBlockSizeWithTrailer() const {
|
|
80
80
|
return block_size_with_trailer_;
|
|
81
81
|
}
|
|
82
|
+
inline Slice& GetCompressedBlock() {
|
|
83
|
+
assert(compression_type_ != kNoCompression);
|
|
84
|
+
return slice_;
|
|
85
|
+
}
|
|
82
86
|
|
|
83
87
|
#ifndef NDEBUG
|
|
84
88
|
int TEST_GetNumStackBufMemcpy() const { return num_stack_buf_memcpy_; }
|
|
@@ -299,7 +299,7 @@ class BlockFetcherTest : public testing::Test {
|
|
|
299
299
|
MemoryAllocator* heap_buf_allocator,
|
|
300
300
|
MemoryAllocator* compressed_buf_allocator,
|
|
301
301
|
BlockContents* contents, MemcpyStats* stats,
|
|
302
|
-
CompressionType*
|
|
302
|
+
CompressionType* compression_type) {
|
|
303
303
|
ImmutableOptions ioptions(options_);
|
|
304
304
|
ReadOptions roptions;
|
|
305
305
|
PersistentCacheOptions persistent_cache_options;
|
|
@@ -318,7 +318,11 @@ class BlockFetcherTest : public testing::Test {
|
|
|
318
318
|
stats->num_compressed_buf_memcpy =
|
|
319
319
|
fetcher->TEST_GetNumCompressedBufMemcpy();
|
|
320
320
|
|
|
321
|
-
|
|
321
|
+
if (do_uncompress) {
|
|
322
|
+
*compression_type = kNoCompression;
|
|
323
|
+
} else {
|
|
324
|
+
*compression_type = fetcher->get_compression_type();
|
|
325
|
+
}
|
|
322
326
|
}
|
|
323
327
|
|
|
324
328
|
// NOTE: expected_compression_type is the expected compression
|