@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.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/BUILDING.md +12 -4
- package/binding.cc +421 -40
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
- package/deps/rocksdb/rocksdb/Makefile +73 -91
- package/deps/rocksdb/rocksdb/TARGETS +27 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
- package/deps/rocksdb/rocksdb/db/c.cc +71 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
- package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
- package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
- package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
- package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
- package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +6 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +56 -7
- package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +20 -13
- package/index.js +187 -3
- package/iterator.js +1 -0
- package/package-lock.json +23687 -0
- package/package.json +2 -30
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/snapshot.js +23 -0
- package/deps/liburing/liburing/README +0 -46
- package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
- package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
- package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
- package/deps/liburing/liburing/test/Makefile +0 -312
- package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
- package/deps/liburing/liburing/test/accept-link.c +0 -251
- package/deps/liburing/liburing/test/accept-reuse.c +0 -164
- package/deps/liburing/liburing/test/accept-test.c +0 -79
- package/deps/liburing/liburing/test/accept.c +0 -476
- package/deps/liburing/liburing/test/across-fork.c +0 -283
- package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
- package/deps/liburing/liburing/test/close-opath.c +0 -122
- package/deps/liburing/liburing/test/config +0 -10
- package/deps/liburing/liburing/test/connect.c +0 -398
- package/deps/liburing/liburing/test/cq-full.c +0 -96
- package/deps/liburing/liburing/test/cq-overflow.c +0 -294
- package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
- package/deps/liburing/liburing/test/cq-ready.c +0 -94
- package/deps/liburing/liburing/test/cq-size.c +0 -58
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
- package/deps/liburing/liburing/test/defer.c +0 -307
- package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
- package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
- package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
- package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
- package/deps/liburing/liburing/test/eventfd.c +0 -112
- package/deps/liburing/liburing/test/fadvise.c +0 -202
- package/deps/liburing/liburing/test/fallocate.c +0 -249
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
- package/deps/liburing/liburing/test/file-register.c +0 -843
- package/deps/liburing/liburing/test/file-update.c +0 -173
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
- package/deps/liburing/liburing/test/fixed-link.c +0 -90
- package/deps/liburing/liburing/test/fsync.c +0 -224
- package/deps/liburing/liburing/test/hardlink.c +0 -136
- package/deps/liburing/liburing/test/helpers.c +0 -135
- package/deps/liburing/liburing/test/helpers.h +0 -67
- package/deps/liburing/liburing/test/io-cancel.c +0 -537
- package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
- package/deps/liburing/liburing/test/io_uring_register.c +0 -664
- package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
- package/deps/liburing/liburing/test/iopoll.c +0 -366
- package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
- package/deps/liburing/liburing/test/lfs-openat.c +0 -273
- package/deps/liburing/liburing/test/link-timeout.c +0 -1107
- package/deps/liburing/liburing/test/link.c +0 -496
- package/deps/liburing/liburing/test/link_drain.c +0 -229
- package/deps/liburing/liburing/test/madvise.c +0 -195
- package/deps/liburing/liburing/test/mkdir.c +0 -108
- package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
- package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
- package/deps/liburing/liburing/test/nop.c +0 -115
- package/deps/liburing/liburing/test/open-close.c +0 -146
- package/deps/liburing/liburing/test/openat2.c +0 -240
- package/deps/liburing/liburing/test/personality.c +0 -204
- package/deps/liburing/liburing/test/pipe-eof.c +0 -81
- package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
- package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
- package/deps/liburing/liburing/test/poll-cancel.c +0 -135
- package/deps/liburing/liburing/test/poll-link.c +0 -227
- package/deps/liburing/liburing/test/poll-many.c +0 -208
- package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
- package/deps/liburing/liburing/test/poll-ring.c +0 -48
- package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
- package/deps/liburing/liburing/test/poll.c +0 -109
- package/deps/liburing/liburing/test/probe.c +0 -137
- package/deps/liburing/liburing/test/read-write.c +0 -876
- package/deps/liburing/liburing/test/register-restrictions.c +0 -633
- package/deps/liburing/liburing/test/rename.c +0 -134
- package/deps/liburing/liburing/test/ring-leak.c +0 -173
- package/deps/liburing/liburing/test/ring-leak2.c +0 -249
- package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
- package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
- package/deps/liburing/liburing/test/runtests.sh +0 -170
- package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
- package/deps/liburing/liburing/test/self.c +0 -91
- package/deps/liburing/liburing/test/send_recv.c +0 -291
- package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
- package/deps/liburing/liburing/test/shared-wq.c +0 -84
- package/deps/liburing/liburing/test/short-read.c +0 -75
- package/deps/liburing/liburing/test/shutdown.c +0 -163
- package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
- package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
- package/deps/liburing/liburing/test/socket-rw.c +0 -147
- package/deps/liburing/liburing/test/splice.c +0 -511
- package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
- package/deps/liburing/liburing/test/sq-full.c +0 -45
- package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
- package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
- package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
- package/deps/liburing/liburing/test/sq-space_left.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
- package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
- package/deps/liburing/liburing/test/statx.c +0 -172
- package/deps/liburing/liburing/test/stdout.c +0 -232
- package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
- package/deps/liburing/liburing/test/submit-reuse.c +0 -239
- package/deps/liburing/liburing/test/symlink.c +0 -116
- package/deps/liburing/liburing/test/teardowns.c +0 -58
- package/deps/liburing/liburing/test/thread-exit.c +0 -131
- package/deps/liburing/liburing/test/timeout-new.c +0 -246
- package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
- package/deps/liburing/liburing/test/timeout.c +0 -1354
- package/deps/liburing/liburing/test/unlink.c +0 -111
- package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
prefix="@CMAKE_INSTALL_PREFIX@"
|
|
2
|
+
exec_prefix="${prefix}"
|
|
3
|
+
libdir="${prefix}/lib"
|
|
4
|
+
includedir="${prefix}/include"
|
|
5
|
+
|
|
6
|
+
Name: @PROJECT_NAME@
|
|
7
|
+
Description: @CMAKE_PROJECT_DESCRIPTION@
|
|
8
|
+
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
|
|
9
|
+
Version: @PROJECT_VERSION@
|
|
10
|
+
Cflags: -I"${includedir}"
|
|
11
|
+
Libs: -L"${libdir}" -lrocksdb
|
|
@@ -5,6 +5,7 @@ LIB_SOURCES = \
|
|
|
5
5
|
cache/cache_key.cc \
|
|
6
6
|
cache/cache_reservation_manager.cc \
|
|
7
7
|
cache/clock_cache.cc \
|
|
8
|
+
cache/fast_lru_cache.cc \
|
|
8
9
|
cache/lru_cache.cc \
|
|
9
10
|
cache/compressed_secondary_cache.cc \
|
|
10
11
|
cache/sharded_cache.cc \
|
|
@@ -210,7 +211,9 @@ LIB_SOURCES = \
|
|
|
210
211
|
trace_replay/trace_replay.cc \
|
|
211
212
|
trace_replay/block_cache_tracer.cc \
|
|
212
213
|
trace_replay/io_tracer.cc \
|
|
214
|
+
util/async_file_reader.cc \
|
|
213
215
|
util/build_version.cc \
|
|
216
|
+
util/cleanable.cc \
|
|
214
217
|
util/coding.cc \
|
|
215
218
|
util/compaction_job_stats_impl.cc \
|
|
216
219
|
util/comparator.cc \
|
|
@@ -362,6 +365,7 @@ STRESS_LIB_SOURCES = \
|
|
|
362
365
|
|
|
363
366
|
TEST_LIB_SOURCES = \
|
|
364
367
|
db/db_test_util.cc \
|
|
368
|
+
db/db_with_timestamp_test_util.cc \
|
|
365
369
|
test_util/mock_time_env.cc \
|
|
366
370
|
test_util/testharness.cc \
|
|
367
371
|
test_util/testutil.cc \
|
|
@@ -427,7 +431,6 @@ TEST_MAIN_SOURCES = \
|
|
|
427
431
|
db/corruption_test.cc \
|
|
428
432
|
db/cuckoo_table_db_test.cc \
|
|
429
433
|
db/db_basic_test.cc \
|
|
430
|
-
db/db_with_timestamp_basic_test.cc \
|
|
431
434
|
db/db_block_cache_test.cc \
|
|
432
435
|
db/db_bloom_filter_test.cc \
|
|
433
436
|
db/db_compaction_filter_test.cc \
|
|
@@ -435,6 +438,8 @@ TEST_MAIN_SOURCES = \
|
|
|
435
438
|
db/db_dynamic_level_test.cc \
|
|
436
439
|
db/db_encryption_test.cc \
|
|
437
440
|
db/db_flush_test.cc \
|
|
441
|
+
db/db_readonly_with_timestamp_test.cc \
|
|
442
|
+
db/db_with_timestamp_basic_test.cc \
|
|
438
443
|
db/import_column_family_test.cc \
|
|
439
444
|
db/db_inplace_update_test.cc \
|
|
440
445
|
db/db_io_failure_test.cc \
|
|
@@ -47,7 +47,8 @@ InternalIteratorBase<IndexValue>* BinarySearchIndexReader::NewIterator(
|
|
|
47
47
|
const bool no_io = (read_options.read_tier == kBlockCacheTier);
|
|
48
48
|
CachableEntry<Block> index_block;
|
|
49
49
|
const Status s =
|
|
50
|
-
GetOrReadIndexBlock(no_io,
|
|
50
|
+
GetOrReadIndexBlock(no_io, read_options.rate_limiter_priority,
|
|
51
|
+
get_context, lookup_context, &index_block);
|
|
51
52
|
if (!s.ok()) {
|
|
52
53
|
if (iter != nullptr) {
|
|
53
54
|
iter->Invalidate(s);
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
// Decodes the blocks generated by block_builder.cc.
|
|
11
11
|
|
|
12
12
|
#include "table/block_based/block.h"
|
|
13
|
+
|
|
13
14
|
#include <algorithm>
|
|
14
15
|
#include <string>
|
|
15
16
|
#include <unordered_map>
|
|
@@ -400,7 +401,8 @@ bool DataBlockIter::SeekForGetImpl(const Slice& target) {
|
|
|
400
401
|
return true;
|
|
401
402
|
}
|
|
402
403
|
|
|
403
|
-
if (
|
|
404
|
+
if (icmp_->user_comparator()->Compare(raw_key_.GetUserKey(),
|
|
405
|
+
target_user_key) != 0) {
|
|
404
406
|
// the key is not in this block and cannot be at the next block either.
|
|
405
407
|
return false;
|
|
406
408
|
}
|
|
@@ -719,7 +721,7 @@ void BlockIter<TValue>::FindKeyAfterBinarySeek(const Slice& target,
|
|
|
719
721
|
} else {
|
|
720
722
|
// We are in the last restart interval. The while-loop will terminate by
|
|
721
723
|
// `Valid()` returning false upon advancing past the block's last key.
|
|
722
|
-
max_offset =
|
|
724
|
+
max_offset = std::numeric_limits<uint32_t>::max();
|
|
723
725
|
}
|
|
724
726
|
while (true) {
|
|
725
727
|
NextImpl();
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
#pragma once
|
|
11
11
|
#include <stddef.h>
|
|
12
12
|
#include <stdint.h>
|
|
13
|
+
|
|
13
14
|
#include <string>
|
|
14
15
|
#include <vector>
|
|
15
16
|
|
|
@@ -266,23 +267,6 @@ class Block {
|
|
|
266
267
|
template <class TValue>
|
|
267
268
|
class BlockIter : public InternalIteratorBase<TValue> {
|
|
268
269
|
public:
|
|
269
|
-
void InitializeBase(const Comparator* raw_ucmp, const char* data,
|
|
270
|
-
uint32_t restarts, uint32_t num_restarts,
|
|
271
|
-
SequenceNumber global_seqno, bool block_contents_pinned) {
|
|
272
|
-
assert(data_ == nullptr); // Ensure it is called only once
|
|
273
|
-
assert(num_restarts > 0); // Ensure the param is valid
|
|
274
|
-
|
|
275
|
-
raw_ucmp_ = raw_ucmp;
|
|
276
|
-
data_ = data;
|
|
277
|
-
restarts_ = restarts;
|
|
278
|
-
num_restarts_ = num_restarts;
|
|
279
|
-
current_ = restarts_;
|
|
280
|
-
restart_index_ = num_restarts_;
|
|
281
|
-
global_seqno_ = global_seqno;
|
|
282
|
-
block_contents_pinned_ = block_contents_pinned;
|
|
283
|
-
cache_handle_ = nullptr;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
270
|
// Makes Valid() return false, status() return `s`, and Seek()/Prev()/etc do
|
|
287
271
|
// nothing. Calls cleanup functions.
|
|
288
272
|
virtual void Invalidate(const Status& s) {
|
|
@@ -371,6 +355,7 @@ class BlockIter : public InternalIteratorBase<TValue> {
|
|
|
371
355
|
Cache::Handle* cache_handle() { return cache_handle_; }
|
|
372
356
|
|
|
373
357
|
protected:
|
|
358
|
+
std::unique_ptr<InternalKeyComparator> icmp_;
|
|
374
359
|
const char* data_; // underlying block contents
|
|
375
360
|
uint32_t num_restarts_; // Number of uint32_t entries in restart array
|
|
376
361
|
|
|
@@ -405,11 +390,23 @@ class BlockIter : public InternalIteratorBase<TValue> {
|
|
|
405
390
|
template <typename DecodeEntryFunc>
|
|
406
391
|
inline bool ParseNextKey(bool* is_shared);
|
|
407
392
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
393
|
+
void InitializeBase(const Comparator* raw_ucmp, const char* data,
|
|
394
|
+
uint32_t restarts, uint32_t num_restarts,
|
|
395
|
+
SequenceNumber global_seqno, bool block_contents_pinned) {
|
|
396
|
+
assert(data_ == nullptr); // Ensure it is called only once
|
|
397
|
+
assert(num_restarts > 0); // Ensure the param is valid
|
|
411
398
|
|
|
412
|
-
|
|
399
|
+
icmp_ =
|
|
400
|
+
std::make_unique<InternalKeyComparator>(raw_ucmp, false /* named */);
|
|
401
|
+
data_ = data;
|
|
402
|
+
restarts_ = restarts;
|
|
403
|
+
num_restarts_ = num_restarts;
|
|
404
|
+
current_ = restarts_;
|
|
405
|
+
restart_index_ = num_restarts_;
|
|
406
|
+
global_seqno_ = global_seqno;
|
|
407
|
+
block_contents_pinned_ = block_contents_pinned;
|
|
408
|
+
cache_handle_ = nullptr;
|
|
409
|
+
}
|
|
413
410
|
|
|
414
411
|
// Must be called every time a key is found that needs to be returned to user,
|
|
415
412
|
// and may be called when no key is found (as a no-op). Updates `key_`,
|
|
@@ -440,16 +437,15 @@ class BlockIter : public InternalIteratorBase<TValue> {
|
|
|
440
437
|
int CompareCurrentKey(const Slice& other) {
|
|
441
438
|
if (raw_key_.IsUserKey()) {
|
|
442
439
|
assert(global_seqno_ == kDisableGlobalSequenceNumber);
|
|
443
|
-
return
|
|
440
|
+
return icmp_->user_comparator()->Compare(raw_key_.GetUserKey(), other);
|
|
444
441
|
} else if (global_seqno_ == kDisableGlobalSequenceNumber) {
|
|
445
|
-
return
|
|
442
|
+
return icmp_->Compare(raw_key_.GetInternalKey(), other);
|
|
446
443
|
}
|
|
447
|
-
return
|
|
444
|
+
return icmp_->Compare(raw_key_.GetInternalKey(), global_seqno_, other,
|
|
448
445
|
kDisableGlobalSequenceNumber);
|
|
449
446
|
}
|
|
450
447
|
|
|
451
448
|
private:
|
|
452
|
-
const Comparator* raw_ucmp_;
|
|
453
449
|
// Store the cache handle, if the block is cached. We need this since the
|
|
454
450
|
// only other place the handle is stored is as an argument to the Cleanable
|
|
455
451
|
// function callback, which is hard to retrieve. When multiple value
|
|
@@ -51,7 +51,7 @@ void AppendItem(std::string* props, const std::string& key,
|
|
|
51
51
|
|
|
52
52
|
template <class TKey>
|
|
53
53
|
void AppendItem(std::string* props, const TKey& key, const std::string& value) {
|
|
54
|
-
std::string key_str =
|
|
54
|
+
std::string key_str = std::to_string(key);
|
|
55
55
|
AppendItem(props, key_str, value);
|
|
56
56
|
}
|
|
57
57
|
} // namespace
|
|
@@ -337,7 +337,7 @@ std::string BlockBasedFilterBlockReader::ToString() const {
|
|
|
337
337
|
result.reserve(1024);
|
|
338
338
|
|
|
339
339
|
std::string s_bo("Block offset"), s_hd("Hex dump"), s_fb("# filter blocks");
|
|
340
|
-
AppendItem(&result, s_fb,
|
|
340
|
+
AppendItem(&result, s_fb, std::to_string(num));
|
|
341
341
|
AppendItem(&result, s_bo, s_hd);
|
|
342
342
|
|
|
343
343
|
for (size_t index = 0; index < num; index++) {
|
|
@@ -345,8 +345,7 @@ std::string BlockBasedFilterBlockReader::ToString() const {
|
|
|
345
345
|
uint32_t limit = DecodeFixed32(offset + index * 4 + 4);
|
|
346
346
|
|
|
347
347
|
if (start != limit) {
|
|
348
|
-
result.append(" filter block # " +
|
|
349
|
-
ROCKSDB_NAMESPACE::ToString(index + 1) + "\n");
|
|
348
|
+
result.append(" filter block # " + std::to_string(index + 1) + "\n");
|
|
350
349
|
Slice filter = Slice(data + start, limit - start);
|
|
351
350
|
AppendItem(&result, start, filter.ToString(true));
|
|
352
351
|
}
|
|
@@ -461,14 +461,24 @@ struct BlockBasedTableBuilder::Rep {
|
|
|
461
461
|
buffer_limit = std::min(tbo.target_file_size,
|
|
462
462
|
compression_opts.max_dict_buffer_bytes);
|
|
463
463
|
}
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
464
|
+
|
|
465
|
+
const auto compress_dict_build_buffer_charged =
|
|
466
|
+
table_options.cache_usage_options.options_overrides
|
|
467
|
+
.at(CacheEntryRole::kCompressionDictionaryBuildingBuffer)
|
|
468
|
+
.charged;
|
|
469
|
+
if (table_options.block_cache &&
|
|
470
|
+
(compress_dict_build_buffer_charged ==
|
|
471
|
+
CacheEntryRoleOptions::Decision::kEnabled ||
|
|
472
|
+
compress_dict_build_buffer_charged ==
|
|
473
|
+
CacheEntryRoleOptions::Decision::kFallback)) {
|
|
467
474
|
compression_dict_buffer_cache_res_mgr =
|
|
468
475
|
std::make_shared<CacheReservationManagerImpl<
|
|
469
476
|
CacheEntryRole::kCompressionDictionaryBuildingBuffer>>(
|
|
470
477
|
table_options.block_cache);
|
|
478
|
+
} else {
|
|
479
|
+
compression_dict_buffer_cache_res_mgr = nullptr;
|
|
471
480
|
}
|
|
481
|
+
|
|
472
482
|
for (uint32_t i = 0; i < compression_opts.parallel_threads; i++) {
|
|
473
483
|
compression_ctxs[i].reset(new CompressionContext(compression_type));
|
|
474
484
|
}
|
|
@@ -942,7 +952,7 @@ void BlockBasedTableBuilder::Add(const Slice& key, const Slice& value) {
|
|
|
942
952
|
(r->buffer_limit != 0 && r->data_begin_offset > r->buffer_limit);
|
|
943
953
|
bool exceeds_global_block_cache_limit = false;
|
|
944
954
|
|
|
945
|
-
// Increase cache
|
|
955
|
+
// Increase cache charging for the last buffered data block
|
|
946
956
|
// only if the block is not going to be unbuffered immediately
|
|
947
957
|
// and there exists a cache reservation manager
|
|
948
958
|
if (!exceeds_buffer_limit &&
|
|
@@ -1886,9 +1896,15 @@ void BlockBasedTableBuilder::EnterUnbuffered() {
|
|
|
1886
1896
|
// OK if compression_dict_samples is empty, we'll just get empty dictionary.
|
|
1887
1897
|
std::string dict;
|
|
1888
1898
|
if (r->compression_opts.zstd_max_train_bytes > 0) {
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1899
|
+
if (r->compression_opts.use_zstd_dict_trainer) {
|
|
1900
|
+
dict = ZSTD_TrainDictionary(compression_dict_samples,
|
|
1901
|
+
compression_dict_sample_lens,
|
|
1902
|
+
r->compression_opts.max_dict_bytes);
|
|
1903
|
+
} else {
|
|
1904
|
+
dict = ZSTD_FinalizeDictionary(
|
|
1905
|
+
compression_dict_samples, compression_dict_sample_lens,
|
|
1906
|
+
r->compression_opts.max_dict_bytes, r->compression_opts.level);
|
|
1907
|
+
}
|
|
1892
1908
|
} else {
|
|
1893
1909
|
dict = std::move(compression_dict_samples);
|
|
1894
1910
|
}
|
|
@@ -1924,7 +1940,6 @@ void BlockBasedTableBuilder::EnterUnbuffered() {
|
|
|
1924
1940
|
}
|
|
1925
1941
|
|
|
1926
1942
|
auto& data_block = r->data_block_buffers[i];
|
|
1927
|
-
|
|
1928
1943
|
if (r->IsParallelCompressionEnabled()) {
|
|
1929
1944
|
Slice first_key_in_next_block;
|
|
1930
1945
|
const Slice* first_key_in_next_block_ptr = &first_key_in_next_block;
|
|
@@ -234,6 +234,7 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
234
234
|
/* currently not supported
|
|
235
235
|
std::shared_ptr<Cache> block_cache = nullptr;
|
|
236
236
|
std::shared_ptr<Cache> block_cache_compressed = nullptr;
|
|
237
|
+
CacheUsageOptions cache_usage_options;
|
|
237
238
|
*/
|
|
238
239
|
{"flush_block_policy_factory",
|
|
239
240
|
OptionTypeInfo::AsCustomSharedPtr<FlushBlockPolicyFactory>(
|
|
@@ -328,12 +329,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
328
329
|
OptionType::kBoolean, OptionVerificationType::kNormal,
|
|
329
330
|
OptionTypeFlags::kMutable}},
|
|
330
331
|
{"reserve_table_builder_memory",
|
|
331
|
-
{
|
|
332
|
-
OptionType::kBoolean, OptionVerificationType::kNormal,
|
|
332
|
+
{0, OptionType::kBoolean, OptionVerificationType::kDeprecated,
|
|
333
333
|
OptionTypeFlags::kNone}},
|
|
334
334
|
{"reserve_table_reader_memory",
|
|
335
|
-
{
|
|
336
|
-
OptionType::kBoolean, OptionVerificationType::kNormal,
|
|
335
|
+
{0, OptionType::kBoolean, OptionVerificationType::kDeprecated,
|
|
337
336
|
OptionTypeFlags::kNone}},
|
|
338
337
|
{"skip_table_builder_flush",
|
|
339
338
|
{0, OptionType::kBoolean, OptionVerificationType::kDeprecated,
|
|
@@ -429,8 +428,12 @@ BlockBasedTableFactory::BlockBasedTableFactory(
|
|
|
429
428
|
InitializeOptions();
|
|
430
429
|
RegisterOptions(&table_options_, &block_based_table_type_info);
|
|
431
430
|
|
|
432
|
-
|
|
433
|
-
table_options_.
|
|
431
|
+
const auto table_reader_charged =
|
|
432
|
+
table_options_.cache_usage_options.options_overrides
|
|
433
|
+
.at(CacheEntryRole::kBlockBasedTableReader)
|
|
434
|
+
.charged;
|
|
435
|
+
if (table_options_.block_cache &&
|
|
436
|
+
table_reader_charged == CacheEntryRoleOptions::Decision::kEnabled) {
|
|
434
437
|
table_reader_cache_res_mgr_.reset(new ConcurrentCacheReservationManager(
|
|
435
438
|
std::make_shared<CacheReservationManagerImpl<
|
|
436
439
|
CacheEntryRole::kBlockBasedTableReader>>(
|
|
@@ -474,6 +477,19 @@ void BlockBasedTableFactory::InitializeOptions() {
|
|
|
474
477
|
// We do not support partitioned filters without partitioning indexes
|
|
475
478
|
table_options_.partition_filters = false;
|
|
476
479
|
}
|
|
480
|
+
auto& options_overrides =
|
|
481
|
+
table_options_.cache_usage_options.options_overrides;
|
|
482
|
+
const auto options = table_options_.cache_usage_options.options;
|
|
483
|
+
for (std::uint32_t i = 0; i < kNumCacheEntryRoles; ++i) {
|
|
484
|
+
CacheEntryRole role = static_cast<CacheEntryRole>(i);
|
|
485
|
+
auto options_overrides_iter = options_overrides.find(role);
|
|
486
|
+
if (options_overrides_iter == options_overrides.end()) {
|
|
487
|
+
options_overrides.insert({role, options});
|
|
488
|
+
} else if (options_overrides_iter->second.charged ==
|
|
489
|
+
CacheEntryRoleOptions::Decision::kFallback) {
|
|
490
|
+
options_overrides_iter->second.charged = options.charged;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
477
493
|
}
|
|
478
494
|
|
|
479
495
|
Status BlockBasedTableFactory::PrepareOptions(const ConfigOptions& opts) {
|
|
@@ -637,12 +653,6 @@ Status BlockBasedTableFactory::ValidateOptions(
|
|
|
637
653
|
"Enable pin_l0_filter_and_index_blocks_in_cache, "
|
|
638
654
|
", but block cache is disabled");
|
|
639
655
|
}
|
|
640
|
-
if (table_options_.reserve_table_reader_memory &&
|
|
641
|
-
table_options_.no_block_cache) {
|
|
642
|
-
return Status::InvalidArgument(
|
|
643
|
-
"Enable reserve_table_reader_memory, "
|
|
644
|
-
", but block cache is disabled");
|
|
645
|
-
}
|
|
646
656
|
if (!IsSupportedFormatVersion(table_options_.format_version)) {
|
|
647
657
|
return Status::InvalidArgument(
|
|
648
658
|
"Unsupported BlockBasedTable format_version. Please check "
|
|
@@ -658,7 +668,7 @@ Status BlockBasedTableFactory::ValidateOptions(
|
|
|
658
668
|
return Status::InvalidArgument(
|
|
659
669
|
"Block alignment requested but block size is not a power of 2");
|
|
660
670
|
}
|
|
661
|
-
if (table_options_.block_size >
|
|
671
|
+
if (table_options_.block_size > std::numeric_limits<uint32_t>::max()) {
|
|
662
672
|
return Status::InvalidArgument(
|
|
663
673
|
"block size exceeds maximum number (4GiB) allowed");
|
|
664
674
|
}
|
|
@@ -675,6 +685,34 @@ Status BlockBasedTableFactory::ValidateOptions(
|
|
|
675
685
|
"max_successive_merges larger than 0 is currently inconsistent with "
|
|
676
686
|
"unordered_write");
|
|
677
687
|
}
|
|
688
|
+
const auto& options_overrides =
|
|
689
|
+
table_options_.cache_usage_options.options_overrides;
|
|
690
|
+
for (auto options_overrides_iter = options_overrides.cbegin();
|
|
691
|
+
options_overrides_iter != options_overrides.cend();
|
|
692
|
+
++options_overrides_iter) {
|
|
693
|
+
const CacheEntryRole role = options_overrides_iter->first;
|
|
694
|
+
const CacheEntryRoleOptions options = options_overrides_iter->second;
|
|
695
|
+
static const std::set<CacheEntryRole> kMemoryChargingSupported = {
|
|
696
|
+
CacheEntryRole::kCompressionDictionaryBuildingBuffer,
|
|
697
|
+
CacheEntryRole::kFilterConstruction,
|
|
698
|
+
CacheEntryRole::kBlockBasedTableReader};
|
|
699
|
+
if (options.charged != CacheEntryRoleOptions::Decision::kFallback &&
|
|
700
|
+
kMemoryChargingSupported.count(role) == 0) {
|
|
701
|
+
return Status::NotSupported(
|
|
702
|
+
"Enable/Disable CacheEntryRoleOptions::charged"
|
|
703
|
+
"for CacheEntryRole " +
|
|
704
|
+
kCacheEntryRoleToCamelString[static_cast<uint32_t>(role)] +
|
|
705
|
+
" is not supported");
|
|
706
|
+
}
|
|
707
|
+
if (table_options_.no_block_cache &&
|
|
708
|
+
options.charged == CacheEntryRoleOptions::Decision::kEnabled) {
|
|
709
|
+
return Status::InvalidArgument(
|
|
710
|
+
"Enable CacheEntryRoleOptions::charged"
|
|
711
|
+
"for CacheEntryRole " +
|
|
712
|
+
kCacheEntryRoleToCamelString[static_cast<uint32_t>(role)] +
|
|
713
|
+
" but block cache is disabled");
|
|
714
|
+
}
|
|
715
|
+
}
|
|
678
716
|
{
|
|
679
717
|
Status s = CheckCacheOptionCompatibility(table_options_);
|
|
680
718
|
if (!s.ok()) {
|
|
@@ -686,8 +724,7 @@ Status BlockBasedTableFactory::ValidateOptions(
|
|
|
686
724
|
table_options_.checksum, &garbage)) {
|
|
687
725
|
return Status::InvalidArgument(
|
|
688
726
|
"Unrecognized ChecksumType for checksum: " +
|
|
689
|
-
|
|
690
|
-
static_cast<uint32_t>(table_options_.checksum)));
|
|
727
|
+
std::to_string(static_cast<uint32_t>(table_options_.checksum)));
|
|
691
728
|
}
|
|
692
729
|
return TableFactory::ValidateOptions(db_opts, cf_opts);
|
|
693
730
|
}
|
|
@@ -9,11 +9,21 @@
|
|
|
9
9
|
#include "table/block_based/block_based_table_iterator.h"
|
|
10
10
|
|
|
11
11
|
namespace ROCKSDB_NAMESPACE {
|
|
12
|
-
void BlockBasedTableIterator::Seek(const Slice& target) { SeekImpl(&target); }
|
|
13
12
|
|
|
14
|
-
void BlockBasedTableIterator::SeekToFirst() { SeekImpl(nullptr); }
|
|
13
|
+
void BlockBasedTableIterator::SeekToFirst() { SeekImpl(nullptr, false); }
|
|
14
|
+
|
|
15
|
+
void BlockBasedTableIterator::Seek(const Slice& target) {
|
|
16
|
+
SeekImpl(&target, true);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
void BlockBasedTableIterator::SeekImpl(const Slice* target,
|
|
20
|
+
bool async_prefetch) {
|
|
21
|
+
bool is_first_pass = true;
|
|
22
|
+
if (async_read_in_progress_) {
|
|
23
|
+
AsyncInitDataBlock(false);
|
|
24
|
+
is_first_pass = false;
|
|
25
|
+
}
|
|
15
26
|
|
|
16
|
-
void BlockBasedTableIterator::SeekImpl(const Slice* target) {
|
|
17
27
|
is_out_of_bound_ = false;
|
|
18
28
|
is_at_first_key_from_index_ = false;
|
|
19
29
|
if (target && !CheckPrefixMayMatch(*target, IterDirection::kForward)) {
|
|
@@ -74,7 +84,20 @@ void BlockBasedTableIterator::SeekImpl(const Slice* target) {
|
|
|
74
84
|
} else {
|
|
75
85
|
// Need to use the data block.
|
|
76
86
|
if (!same_block) {
|
|
77
|
-
|
|
87
|
+
if (read_options_.async_io && async_prefetch) {
|
|
88
|
+
if (is_first_pass) {
|
|
89
|
+
AsyncInitDataBlock(is_first_pass);
|
|
90
|
+
}
|
|
91
|
+
if (async_read_in_progress_) {
|
|
92
|
+
// Status::TryAgain indicates asynchronous request for retrieval of
|
|
93
|
+
// data blocks has been submitted. So it should return at this point
|
|
94
|
+
// and Seek should be called again to retrieve the requested block and
|
|
95
|
+
// execute the remaining code.
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
InitDataBlock();
|
|
100
|
+
}
|
|
78
101
|
} else {
|
|
79
102
|
// When the user does a reseek, the iterate_upper_bound might have
|
|
80
103
|
// changed. CheckDataBlockWithinUpperBound() needs to be called
|
|
@@ -234,18 +257,69 @@ void BlockBasedTableIterator::InitDataBlock() {
|
|
|
234
257
|
// Enabled from the very first IO when ReadOptions.readahead_size is set.
|
|
235
258
|
block_prefetcher_.PrefetchIfNeeded(
|
|
236
259
|
rep, data_block_handle, read_options_.readahead_size, is_for_compaction,
|
|
237
|
-
read_options_.async_io);
|
|
260
|
+
read_options_.async_io, read_options_.rate_limiter_priority);
|
|
238
261
|
Status s;
|
|
239
262
|
table_->NewDataBlockIterator<DataBlockIter>(
|
|
240
263
|
read_options_, data_block_handle, &block_iter_, BlockType::kData,
|
|
241
|
-
/*get_context=*/nullptr, &lookup_context_,
|
|
264
|
+
/*get_context=*/nullptr, &lookup_context_,
|
|
242
265
|
block_prefetcher_.prefetch_buffer(),
|
|
243
|
-
/*for_compaction=*/is_for_compaction);
|
|
266
|
+
/*for_compaction=*/is_for_compaction, /*async_read=*/false, s);
|
|
244
267
|
block_iter_points_to_real_block_ = true;
|
|
245
268
|
CheckDataBlockWithinUpperBound();
|
|
246
269
|
}
|
|
247
270
|
}
|
|
248
271
|
|
|
272
|
+
void BlockBasedTableIterator::AsyncInitDataBlock(bool is_first_pass) {
|
|
273
|
+
BlockHandle data_block_handle = index_iter_->value().handle;
|
|
274
|
+
bool is_for_compaction =
|
|
275
|
+
lookup_context_.caller == TableReaderCaller::kCompaction;
|
|
276
|
+
if (is_first_pass) {
|
|
277
|
+
if (!block_iter_points_to_real_block_ ||
|
|
278
|
+
data_block_handle.offset() != prev_block_offset_ ||
|
|
279
|
+
// if previous attempt of reading the block missed cache, try again
|
|
280
|
+
block_iter_.status().IsIncomplete()) {
|
|
281
|
+
if (block_iter_points_to_real_block_) {
|
|
282
|
+
ResetDataIter();
|
|
283
|
+
}
|
|
284
|
+
auto* rep = table_->get_rep();
|
|
285
|
+
// Prefetch additional data for range scans (iterators).
|
|
286
|
+
// Implicit auto readahead:
|
|
287
|
+
// Enabled after 2 sequential IOs when ReadOptions.readahead_size == 0.
|
|
288
|
+
// Explicit user requested readahead:
|
|
289
|
+
// Enabled from the very first IO when ReadOptions.readahead_size is
|
|
290
|
+
// set.
|
|
291
|
+
block_prefetcher_.PrefetchIfNeeded(
|
|
292
|
+
rep, data_block_handle, read_options_.readahead_size,
|
|
293
|
+
is_for_compaction, read_options_.async_io,
|
|
294
|
+
read_options_.rate_limiter_priority);
|
|
295
|
+
|
|
296
|
+
Status s;
|
|
297
|
+
table_->NewDataBlockIterator<DataBlockIter>(
|
|
298
|
+
read_options_, data_block_handle, &block_iter_, BlockType::kData,
|
|
299
|
+
/*get_context=*/nullptr, &lookup_context_,
|
|
300
|
+
block_prefetcher_.prefetch_buffer(),
|
|
301
|
+
/*for_compaction=*/is_for_compaction, /*async_read=*/true, s);
|
|
302
|
+
|
|
303
|
+
if (s.IsTryAgain()) {
|
|
304
|
+
async_read_in_progress_ = true;
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
} else {
|
|
309
|
+
// Second pass will call the Poll to get the data block which has been
|
|
310
|
+
// requested asynchronously.
|
|
311
|
+
Status s;
|
|
312
|
+
table_->NewDataBlockIterator<DataBlockIter>(
|
|
313
|
+
read_options_, data_block_handle, &block_iter_, BlockType::kData,
|
|
314
|
+
/*get_context=*/nullptr, &lookup_context_,
|
|
315
|
+
block_prefetcher_.prefetch_buffer(),
|
|
316
|
+
/*for_compaction=*/is_for_compaction, /*async_read=*/false, s);
|
|
317
|
+
}
|
|
318
|
+
block_iter_points_to_real_block_ = true;
|
|
319
|
+
CheckDataBlockWithinUpperBound();
|
|
320
|
+
async_read_in_progress_ = false;
|
|
321
|
+
}
|
|
322
|
+
|
|
249
323
|
bool BlockBasedTableIterator::MaterializeCurrentBlock() {
|
|
250
324
|
assert(is_at_first_key_from_index_);
|
|
251
325
|
assert(!block_iter_points_to_real_block_);
|
|
@@ -41,7 +41,8 @@ class BlockBasedTableIterator : public InternalIteratorBase<Slice> {
|
|
|
41
41
|
allow_unprepared_value_(allow_unprepared_value),
|
|
42
42
|
block_iter_points_to_real_block_(false),
|
|
43
43
|
check_filter_(check_filter),
|
|
44
|
-
need_upper_bound_check_(need_upper_bound_check)
|
|
44
|
+
need_upper_bound_check_(need_upper_bound_check),
|
|
45
|
+
async_read_in_progress_(false) {}
|
|
45
46
|
|
|
46
47
|
~BlockBasedTableIterator() {}
|
|
47
48
|
|
|
@@ -96,6 +97,8 @@ class BlockBasedTableIterator : public InternalIteratorBase<Slice> {
|
|
|
96
97
|
return index_iter_->status();
|
|
97
98
|
} else if (block_iter_points_to_real_block_) {
|
|
98
99
|
return block_iter_.status();
|
|
100
|
+
} else if (async_read_in_progress_) {
|
|
101
|
+
return Status::TryAgain();
|
|
99
102
|
} else {
|
|
100
103
|
return Status::OK();
|
|
101
104
|
}
|
|
@@ -236,10 +239,13 @@ class BlockBasedTableIterator : public InternalIteratorBase<Slice> {
|
|
|
236
239
|
// TODO(Zhongyi): pick a better name
|
|
237
240
|
bool need_upper_bound_check_;
|
|
238
241
|
|
|
242
|
+
bool async_read_in_progress_;
|
|
243
|
+
|
|
239
244
|
// If `target` is null, seek to first.
|
|
240
|
-
void SeekImpl(const Slice* target);
|
|
245
|
+
void SeekImpl(const Slice* target, bool async_prefetch);
|
|
241
246
|
|
|
242
247
|
void InitDataBlock();
|
|
248
|
+
void AsyncInitDataBlock(bool is_first_pass);
|
|
243
249
|
bool MaterializeCurrentBlock();
|
|
244
250
|
void FindKeyForward();
|
|
245
251
|
void FindBlockForward();
|