@nxtedition/rocksdb 7.1.30 → 7.1.32
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/deps/rocksdb/rocksdb/CMakeLists.txt +2 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +15 -23
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +4 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -1
- package/deps/rocksdb/rocksdb/crash_test.mk +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +15 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +78 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +32 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +8 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +47 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +105 -166
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +46 -15
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +47 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +17 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +11 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +12 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +337 -103
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +43 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -2
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +524 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +164 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -23
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +30 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.h +9 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +29 -9
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +10 -7
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_set.cc +11 -6
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +142 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +59 -53
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +1 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +0 -2
- package/deps/rocksdb/rocksdb/env/env.cc +16 -19
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +20 -20
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +62 -60
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_test.cc +179 -176
- package/deps/rocksdb/rocksdb/env/file_system.cc +3 -4
- package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -2
- package/deps/rocksdb/rocksdb/env/io_posix.h +1 -2
- package/deps/rocksdb/rocksdb/env/mock_env.h +1 -0
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +4 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +6 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +2 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +6 -7
- package/deps/rocksdb/rocksdb/file/file_util.cc +1 -1
- package/deps/rocksdb/rocksdb/file/filename.cc +16 -17
- package/deps/rocksdb/rocksdb/file/filename.h +4 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +492 -496
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +1 -3
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +1 -0
- package/deps/rocksdb/rocksdb/file/read_write_util.h +1 -0
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +6 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/block_cache_trace_writer.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +166 -167
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +12 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +0 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +3 -7
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +20 -23
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
- package/deps/rocksdb/rocksdb/logging/event_logger.cc +1 -3
- package/deps/rocksdb/rocksdb/logging/event_logger.h +4 -5
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +2 -1
- package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -3
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -2
- package/deps/rocksdb/rocksdb/logging/logging.h +3 -3
- package/deps/rocksdb/rocksdb/memory/allocator.h +1 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +2 -0
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -0
- package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -0
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +17 -20
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +13 -15
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +11 -10
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +3 -3
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +30 -28
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +4 -6
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +73 -70
- package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +1 -1
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +21 -23
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +24 -38
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +10 -17
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +19 -19
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +22 -30
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +4 -6
- package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +4 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +12 -14
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +2 -3
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -3
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +7 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +12 -22
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +7 -10
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/port/lang.h +3 -1
- package/deps/rocksdb/rocksdb/port/likely.h +2 -2
- package/deps/rocksdb/rocksdb/port/mmap.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_dirent.h +2 -2
- package/deps/rocksdb/rocksdb/port/port_posix.cc +32 -27
- package/deps/rocksdb/rocksdb/port/port_posix.h +31 -30
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +1 -1
- package/deps/rocksdb/rocksdb/port/sys_time.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/io_win.h +6 -7
- package/deps/rocksdb/rocksdb/port/win/port_win.h +12 -20
- package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -4
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +30 -49
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +5 -5
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -62
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +2 -2
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +4 -3
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +1 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -6
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +90 -80
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +5 -4
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +63 -69
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +58 -57
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +3 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +35 -30
- package/deps/rocksdb/rocksdb/table/get_context.cc +16 -10
- package/deps/rocksdb/rocksdb/table/iter_heap.h +2 -0
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -3
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +31 -16
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +6 -6
- package/deps/rocksdb/rocksdb/table/multiget_context.h +5 -6
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +7 -10
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +4 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +2 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +10 -21
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +14 -12
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +2 -5
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -3
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +0 -6
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +0 -33
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -6
- package/deps/rocksdb/rocksdb/table/table_properties.cc +24 -37
- package/deps/rocksdb/rocksdb/table/table_reader.h +3 -2
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +9 -8
- package/deps/rocksdb/rocksdb/table/table_test.cc +77 -82
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +8 -18
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +2 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +13 -18
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -7
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +1 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -7
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +3 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +296 -314
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +6 -6
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +57 -64
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +6 -5
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +10 -10
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +6 -3
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +12 -31
- package/deps/rocksdb/rocksdb/util/autovector.h +3 -6
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +12 -12
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +8 -12
- package/deps/rocksdb/rocksdb/util/coding.cc +1 -0
- package/deps/rocksdb/rocksdb/util/coding.h +17 -15
- package/deps/rocksdb/rocksdb/util/coding_test.cc +14 -15
- package/deps/rocksdb/rocksdb/util/comparator.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +6 -3
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +5 -8
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +202 -297
- package/deps/rocksdb/rocksdb/util/crc32c.h +2 -3
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +2 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +39 -54
- package/deps/rocksdb/rocksdb/util/defer.h +2 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +2 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +24 -29
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +4 -4
- package/deps/rocksdb/rocksdb/util/hash_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/heap.h +5 -4
- package/deps/rocksdb/rocksdb/util/heap_test.cc +15 -25
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.cc +7 -2
- package/deps/rocksdb/rocksdb/util/murmurhash.h +4 -3
- package/deps/rocksdb/rocksdb/util/mutexlock.h +5 -11
- package/deps/rocksdb/rocksdb/util/random.cc +1 -0
- package/deps/rocksdb/rocksdb/util/random.h +2 -4
- package/deps/rocksdb/rocksdb/util/random_test.cc +2 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +4 -3
- package/deps/rocksdb/rocksdb/util/slice.cc +1 -1
- package/deps/rocksdb/rocksdb/util/slice_test.cc +1 -2
- package/deps/rocksdb/rocksdb/util/status.cc +2 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +64 -76
- package/deps/rocksdb/rocksdb/util/thread_local.cc +18 -32
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -3
- package/deps/rocksdb/rocksdb/util/thread_operation.h +34 -43
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +54 -73
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +18 -18
- package/deps/rocksdb/rocksdb/util/timer.h +4 -9
- package/deps/rocksdb/rocksdb/util/timer_queue.h +1 -0
- package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +1 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +1 -2
- package/deps/rocksdb/rocksdb/util/xxhash.h +7 -4
- package/deps/rocksdb/rocksdb/util/xxph3.h +3 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +16 -24
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +106 -104
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +11 -15
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +12 -12
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +56 -55
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +91 -74
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +17 -34
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +21 -45
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +74 -97
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +17 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +19 -19
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +19 -18
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +7 -10
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +10 -15
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -13
- package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +7 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +2 -4
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +39 -50
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +5 -7
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +5 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +3 -6
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +18 -13
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +1 -3
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +15 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +14 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +5 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +2 -6
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +80 -79
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +9 -17
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -33,11 +33,12 @@ int main() {
|
|
|
33
33
|
|
|
34
34
|
using GFLAGS_NAMESPACE::ParseCommandLineFlags;
|
|
35
35
|
|
|
36
|
-
DEFINE_string(file_dir, "",
|
|
37
|
-
|
|
36
|
+
DEFINE_string(file_dir, "",
|
|
37
|
+
"Directory where the files will be created"
|
|
38
|
+
" for benchmark. Added for using tmpfs.");
|
|
38
39
|
DEFINE_bool(enable_perf, false, "Run Benchmark Tests too.");
|
|
39
40
|
DEFINE_bool(write, false,
|
|
40
|
-
|
|
41
|
+
"Should write new values to file in performance tests?");
|
|
41
42
|
DEFINE_bool(identity_as_first_hash, true, "use identity as first hash");
|
|
42
43
|
|
|
43
44
|
namespace ROCKSDB_NAMESPACE {
|
|
@@ -45,10 +46,10 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
45
46
|
namespace {
|
|
46
47
|
const uint32_t kNumHashFunc = 10;
|
|
47
48
|
// Methods, variables related to Hash functions.
|
|
48
|
-
std::unordered_map<std::string, std::vector<uint64_t
|
|
49
|
+
std::unordered_map<std::string, std::vector<uint64_t> > hash_map;
|
|
49
50
|
|
|
50
51
|
void AddHashLookups(const std::string& s, uint64_t bucket_id,
|
|
51
|
-
|
|
52
|
+
uint32_t num_hash_fun) {
|
|
52
53
|
std::vector<uint64_t> v;
|
|
53
54
|
for (uint32_t i = 0; i < num_hash_fun; i++) {
|
|
54
55
|
v.push_back(bucket_id + i);
|
|
@@ -128,8 +129,8 @@ class CuckooReaderTest : public testing::Test {
|
|
|
128
129
|
}
|
|
129
130
|
void UpdateKeys(bool with_zero_seqno) {
|
|
130
131
|
for (uint32_t i = 0; i < num_items; i++) {
|
|
131
|
-
ParsedInternalKey ikey(user_keys[i],
|
|
132
|
-
|
|
132
|
+
ParsedInternalKey ikey(user_keys[i], with_zero_seqno ? 0 : i + 1000,
|
|
133
|
+
kTypeValue);
|
|
133
134
|
keys[i].clear();
|
|
134
135
|
AppendInternalKey(&keys[i], ikey);
|
|
135
136
|
}
|
|
@@ -189,11 +190,11 @@ class CuckooReaderTest : public testing::Test {
|
|
|
189
190
|
TableReaderCaller::kUncategorized);
|
|
190
191
|
ASSERT_OK(it->status());
|
|
191
192
|
ASSERT_TRUE(!it->Valid());
|
|
192
|
-
it->Seek(keys[num_items/2]);
|
|
193
|
+
it->Seek(keys[num_items / 2]);
|
|
193
194
|
ASSERT_TRUE(it->Valid());
|
|
194
195
|
ASSERT_OK(it->status());
|
|
195
|
-
ASSERT_TRUE(keys[num_items/2] == it->key());
|
|
196
|
-
ASSERT_TRUE(values[num_items/2] == it->value());
|
|
196
|
+
ASSERT_TRUE(keys[num_items / 2] == it->key());
|
|
197
|
+
ASSERT_TRUE(values[num_items / 2] == it->value());
|
|
197
198
|
ASSERT_OK(it->status());
|
|
198
199
|
it->~InternalIterator();
|
|
199
200
|
}
|
|
@@ -273,7 +274,7 @@ TEST_F(CuckooReaderTest, WhenKeyExistsWithUint64Comparator) {
|
|
|
273
274
|
}
|
|
274
275
|
|
|
275
276
|
TEST_F(CuckooReaderTest, CheckIterator) {
|
|
276
|
-
SetUp(2*kNumHashFunc);
|
|
277
|
+
SetUp(2 * kNumHashFunc);
|
|
277
278
|
fname = test::PerThreadDBPath("CuckooReader_CheckIterator");
|
|
278
279
|
for (uint64_t i = 0; i < num_items; i++) {
|
|
279
280
|
user_keys[i] = "key" + NumToStr(i);
|
|
@@ -281,7 +282,7 @@ TEST_F(CuckooReaderTest, CheckIterator) {
|
|
|
281
282
|
AppendInternalKey(&keys[i], ikey);
|
|
282
283
|
values[i] = "value" + NumToStr(i);
|
|
283
284
|
// Give disjoint hash values, in reverse order.
|
|
284
|
-
AddHashLookups(user_keys[i], num_items-i-1, kNumHashFunc);
|
|
285
|
+
AddHashLookups(user_keys[i], num_items - i - 1, kNumHashFunc);
|
|
285
286
|
}
|
|
286
287
|
CreateCuckooFileAndCheckReader();
|
|
287
288
|
CheckIterator();
|
|
@@ -292,7 +293,7 @@ TEST_F(CuckooReaderTest, CheckIterator) {
|
|
|
292
293
|
}
|
|
293
294
|
|
|
294
295
|
TEST_F(CuckooReaderTest, CheckIteratorUint64) {
|
|
295
|
-
SetUp(2*kNumHashFunc);
|
|
296
|
+
SetUp(2 * kNumHashFunc);
|
|
296
297
|
fname = test::PerThreadDBPath("CuckooReader_CheckIterator");
|
|
297
298
|
for (uint64_t i = 0; i < num_items; i++) {
|
|
298
299
|
user_keys[i].resize(8);
|
|
@@ -301,7 +302,7 @@ TEST_F(CuckooReaderTest, CheckIteratorUint64) {
|
|
|
301
302
|
AppendInternalKey(&keys[i], ikey);
|
|
302
303
|
values[i] = "value" + NumToStr(i);
|
|
303
304
|
// Give disjoint hash values, in reverse order.
|
|
304
|
-
AddHashLookups(user_keys[i], num_items-i-1, kNumHashFunc);
|
|
305
|
+
AddHashLookups(user_keys[i], num_items - i - 1, kNumHashFunc);
|
|
305
306
|
}
|
|
306
307
|
CreateCuckooFileAndCheckReader(test::Uint64Comparator());
|
|
307
308
|
CheckIterator(test::Uint64Comparator());
|
|
@@ -366,11 +367,11 @@ TEST_F(CuckooReaderTest, WhenKeyNotFound) {
|
|
|
366
367
|
|
|
367
368
|
// Test read when key is unused key.
|
|
368
369
|
std::string unused_key =
|
|
369
|
-
|
|
370
|
-
|
|
370
|
+
reader.GetTableProperties()->user_collected_properties.at(
|
|
371
|
+
CuckooTablePropertyNames::kEmptyKey);
|
|
371
372
|
// Add hash values that map to empty buckets.
|
|
372
|
-
AddHashLookups(ExtractUserKey(unused_key).ToString(),
|
|
373
|
-
|
|
373
|
+
AddHashLookups(ExtractUserKey(unused_key).ToString(), kNumHashFunc,
|
|
374
|
+
kNumHashFunc);
|
|
374
375
|
value.Reset();
|
|
375
376
|
GetContext get_context3(
|
|
376
377
|
ucmp, nullptr, nullptr, nullptr, GetContext::kNotFound, Slice(unused_key),
|
|
@@ -407,8 +408,8 @@ std::string GetFileName(uint64_t num) {
|
|
|
407
408
|
|
|
408
409
|
// Create last level file as we are interested in measuring performance of
|
|
409
410
|
// last level file only.
|
|
410
|
-
void WriteFile(const std::vector<std::string>& keys,
|
|
411
|
-
|
|
411
|
+
void WriteFile(const std::vector<std::string>& keys, const uint64_t num,
|
|
412
|
+
double hash_ratio) {
|
|
412
413
|
Options options;
|
|
413
414
|
options.allow_mmap_reads = true;
|
|
414
415
|
const auto& fs = options.env->GetFileSystem();
|
|
@@ -478,13 +479,16 @@ void ReadKeys(uint64_t num, uint32_t batch_size) {
|
|
|
478
479
|
test::Uint64Comparator(), nullptr);
|
|
479
480
|
ASSERT_OK(reader.status());
|
|
480
481
|
const UserCollectedProperties user_props =
|
|
481
|
-
|
|
482
|
+
reader.GetTableProperties()->user_collected_properties;
|
|
482
483
|
const uint32_t num_hash_fun = *reinterpret_cast<const uint32_t*>(
|
|
483
484
|
user_props.at(CuckooTablePropertyNames::kNumHashFunc).data());
|
|
484
485
|
const uint64_t table_size = *reinterpret_cast<const uint64_t*>(
|
|
485
486
|
user_props.at(CuckooTablePropertyNames::kHashTableSize).data());
|
|
486
|
-
fprintf(stderr,
|
|
487
|
-
|
|
487
|
+
fprintf(stderr,
|
|
488
|
+
"With %" PRIu64
|
|
489
|
+
" items, utilization is %.2f%%, number of"
|
|
490
|
+
" hash functions: %u.\n",
|
|
491
|
+
num, num * 100.0 / (table_size), num_hash_fun);
|
|
488
492
|
ReadOptions r_options;
|
|
489
493
|
|
|
490
494
|
std::vector<uint64_t> keys;
|
|
@@ -502,10 +506,10 @@ void ReadKeys(uint64_t num, uint32_t batch_size) {
|
|
|
502
506
|
uint64_t start_time = env->NowMicros();
|
|
503
507
|
if (batch_size > 0) {
|
|
504
508
|
for (uint64_t i = 0; i < num; i += batch_size) {
|
|
505
|
-
for (uint64_t j = i; j < i+batch_size && j < num; ++j) {
|
|
509
|
+
for (uint64_t j = i; j < i + batch_size && j < num; ++j) {
|
|
506
510
|
reader.Prepare(Slice(reinterpret_cast<char*>(&keys[j]), 16));
|
|
507
511
|
}
|
|
508
|
-
for (uint64_t j = i; j < i+batch_size && j < num; ++j) {
|
|
512
|
+
for (uint64_t j = i; j < i + batch_size && j < num; ++j) {
|
|
509
513
|
reader.Get(r_options, Slice(reinterpret_cast<char*>(&keys[j]), 16),
|
|
510
514
|
&get_context, nullptr);
|
|
511
515
|
}
|
|
@@ -518,8 +522,8 @@ void ReadKeys(uint64_t num, uint32_t batch_size) {
|
|
|
518
522
|
}
|
|
519
523
|
float time_per_op = (env->NowMicros() - start_time) * 1.0f / num;
|
|
520
524
|
fprintf(stderr,
|
|
521
|
-
|
|
522
|
-
|
|
525
|
+
"Time taken per op is %.3fus (%.1f Mqps) with batch size of %u\n",
|
|
526
|
+
time_per_op, 1.0 / time_per_op, batch_size);
|
|
523
527
|
}
|
|
524
528
|
} // namespace.
|
|
525
529
|
|
|
@@ -531,10 +535,11 @@ TEST_F(CuckooReaderTest, TestReadPerformance) {
|
|
|
531
535
|
// These numbers are chosen to have a hash utilization % close to
|
|
532
536
|
// 0.9, 0.75, 0.6 and 0.5 respectively.
|
|
533
537
|
// They all create 128 M buckets.
|
|
534
|
-
std::vector<uint64_t> nums = {120*1024*1024, 100*1024*
|
|
535
|
-
|
|
538
|
+
std::vector<uint64_t> nums = {120 * 1024 * 1024, 100 * 1024 * 1024,
|
|
539
|
+
80 * 1024 * 1024, 70 * 1024 * 1024};
|
|
536
540
|
#ifndef NDEBUG
|
|
537
|
-
fprintf(
|
|
541
|
+
fprintf(
|
|
542
|
+
stdout,
|
|
538
543
|
"WARNING: Not compiled with DNDEBUG. Performance tests may be slow.\n");
|
|
539
544
|
#endif
|
|
540
545
|
for (uint64_t num : nums) {
|
|
@@ -407,7 +407,9 @@ bool GetContext::SaveValue(const ParsedInternalKey& parsed_key,
|
|
|
407
407
|
state_ = kDeleted;
|
|
408
408
|
} else if (kMerge == state_) {
|
|
409
409
|
state_ = kFound;
|
|
410
|
-
|
|
410
|
+
if (do_merge_) {
|
|
411
|
+
Merge(nullptr);
|
|
412
|
+
}
|
|
411
413
|
// If do_merge_ = false then the current value shouldn't be part of
|
|
412
414
|
// merge_context_->operand_list
|
|
413
415
|
}
|
|
@@ -438,16 +440,20 @@ bool GetContext::SaveValue(const ParsedInternalKey& parsed_key,
|
|
|
438
440
|
}
|
|
439
441
|
|
|
440
442
|
void GetContext::Merge(const Slice* value) {
|
|
443
|
+
assert(do_merge_);
|
|
444
|
+
assert(!pinnable_val_ || !columns_);
|
|
445
|
+
|
|
446
|
+
const Status s = MergeHelper::TimedFullMerge(
|
|
447
|
+
merge_operator_, user_key_, value, merge_context_->GetOperands(),
|
|
448
|
+
pinnable_val_ ? pinnable_val_->GetSelf() : nullptr, columns_, logger_,
|
|
449
|
+
statistics_, clock_);
|
|
450
|
+
if (!s.ok()) {
|
|
451
|
+
state_ = kCorrupt;
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
|
|
441
455
|
if (LIKELY(pinnable_val_ != nullptr)) {
|
|
442
|
-
|
|
443
|
-
Status merge_status = MergeHelper::TimedFullMerge(
|
|
444
|
-
merge_operator_, user_key_, value, merge_context_->GetOperands(),
|
|
445
|
-
pinnable_val_->GetSelf(), logger_, statistics_, clock_);
|
|
446
|
-
pinnable_val_->PinSelf();
|
|
447
|
-
if (!merge_status.ok()) {
|
|
448
|
-
state_ = kCorrupt;
|
|
449
|
-
}
|
|
450
|
-
}
|
|
456
|
+
pinnable_val_->PinSelf();
|
|
451
457
|
}
|
|
452
458
|
}
|
|
453
459
|
|
|
@@ -21,6 +21,7 @@ class MaxIteratorComparator {
|
|
|
21
21
|
bool operator()(IteratorWrapper* a, IteratorWrapper* b) const {
|
|
22
22
|
return comparator_->Compare(a->key(), b->key()) < 0;
|
|
23
23
|
}
|
|
24
|
+
|
|
24
25
|
private:
|
|
25
26
|
const InternalKeyComparator* comparator_;
|
|
26
27
|
};
|
|
@@ -35,6 +36,7 @@ class MinIteratorComparator {
|
|
|
35
36
|
bool operator()(IteratorWrapper* a, IteratorWrapper* b) const {
|
|
36
37
|
return comparator_->Compare(a->key(), b->key()) > 0;
|
|
37
38
|
}
|
|
39
|
+
|
|
38
40
|
private:
|
|
39
41
|
const InternalKeyComparator* comparator_;
|
|
40
42
|
};
|
|
@@ -29,7 +29,7 @@ Status Iterator::GetProperty(std::string prop_name, std::string* prop) {
|
|
|
29
29
|
namespace {
|
|
30
30
|
class EmptyIterator : public Iterator {
|
|
31
31
|
public:
|
|
32
|
-
explicit EmptyIterator(const Status& s) : status_(s) {
|
|
32
|
+
explicit EmptyIterator(const Status& s) : status_(s) {}
|
|
33
33
|
bool Valid() const override { return false; }
|
|
34
34
|
void Seek(const Slice& /*target*/) override {}
|
|
35
35
|
void SeekForPrev(const Slice& /*target*/) override {}
|
|
@@ -145,9 +145,7 @@ class IteratorWrapperBase {
|
|
|
145
145
|
return iter_->IsValuePinned();
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
bool IsValuePrepared() const {
|
|
149
|
-
return result_.value_prepared;
|
|
150
|
-
}
|
|
148
|
+
bool IsValuePrepared() const { return result_.value_prepared; }
|
|
151
149
|
|
|
152
150
|
Slice user_key() const {
|
|
153
151
|
assert(Valid());
|
|
@@ -197,7 +197,8 @@ class MergingIterator : public InternalIterator {
|
|
|
197
197
|
// Add range_tombstone_iters_[level] into min heap.
|
|
198
198
|
// Updates active_ if the end key of a range tombstone is inserted.
|
|
199
199
|
// @param start_key specifies which end point of the range tombstone to add.
|
|
200
|
-
void InsertRangeTombstoneToMinHeap(size_t level, bool start_key = true
|
|
200
|
+
void InsertRangeTombstoneToMinHeap(size_t level, bool start_key = true,
|
|
201
|
+
bool replace_top = false) {
|
|
201
202
|
assert(!range_tombstone_iters_.empty() &&
|
|
202
203
|
range_tombstone_iters_[level]->Valid());
|
|
203
204
|
if (start_key) {
|
|
@@ -211,13 +212,18 @@ class MergingIterator : public InternalIterator {
|
|
|
211
212
|
pinned_heap_item_[level].type = HeapItem::DELETE_RANGE_END;
|
|
212
213
|
active_.insert(level);
|
|
213
214
|
}
|
|
214
|
-
|
|
215
|
+
if (replace_top) {
|
|
216
|
+
minHeap_.replace_top(&pinned_heap_item_[level]);
|
|
217
|
+
} else {
|
|
218
|
+
minHeap_.push(&pinned_heap_item_[level]);
|
|
219
|
+
}
|
|
215
220
|
}
|
|
216
221
|
|
|
217
222
|
// Add range_tombstone_iters_[level] into max heap.
|
|
218
223
|
// Updates active_ if the start key of a range tombstone is inserted.
|
|
219
224
|
// @param end_key specifies which end point of the range tombstone to add.
|
|
220
|
-
void InsertRangeTombstoneToMaxHeap(size_t level, bool end_key = true
|
|
225
|
+
void InsertRangeTombstoneToMaxHeap(size_t level, bool end_key = true,
|
|
226
|
+
bool replace_top = false) {
|
|
221
227
|
assert(!range_tombstone_iters_.empty() &&
|
|
222
228
|
range_tombstone_iters_[level]->Valid());
|
|
223
229
|
if (end_key) {
|
|
@@ -231,7 +237,11 @@ class MergingIterator : public InternalIterator {
|
|
|
231
237
|
pinned_heap_item_[level].type = HeapItem::DELETE_RANGE_START;
|
|
232
238
|
active_.insert(level);
|
|
233
239
|
}
|
|
234
|
-
|
|
240
|
+
if (replace_top) {
|
|
241
|
+
maxHeap_->replace_top(&pinned_heap_item_[level]);
|
|
242
|
+
} else {
|
|
243
|
+
maxHeap_->push(&pinned_heap_item_[level]);
|
|
244
|
+
}
|
|
235
245
|
}
|
|
236
246
|
|
|
237
247
|
// Remove HeapItems from top of minHeap_ that are of type DELETE_RANGE_START
|
|
@@ -241,10 +251,9 @@ class MergingIterator : public InternalIterator {
|
|
|
241
251
|
void PopDeleteRangeStart() {
|
|
242
252
|
while (!minHeap_.empty() &&
|
|
243
253
|
minHeap_.top()->type == HeapItem::DELETE_RANGE_START) {
|
|
244
|
-
auto level = minHeap_.top()->level;
|
|
245
|
-
minHeap_.pop();
|
|
246
254
|
// insert end key of this range tombstone and updates active_
|
|
247
|
-
InsertRangeTombstoneToMinHeap(
|
|
255
|
+
InsertRangeTombstoneToMinHeap(
|
|
256
|
+
minHeap_.top()->level, false /* start_key */, true /* replace_top */);
|
|
248
257
|
}
|
|
249
258
|
}
|
|
250
259
|
|
|
@@ -255,10 +264,9 @@ class MergingIterator : public InternalIterator {
|
|
|
255
264
|
void PopDeleteRangeEnd() {
|
|
256
265
|
while (!maxHeap_->empty() &&
|
|
257
266
|
maxHeap_->top()->type == HeapItem::DELETE_RANGE_END) {
|
|
258
|
-
auto level = maxHeap_->top()->level;
|
|
259
|
-
maxHeap_->pop();
|
|
260
267
|
// insert start key of this range tombstone and updates active_
|
|
261
|
-
InsertRangeTombstoneToMaxHeap(level, false /* end_key
|
|
268
|
+
InsertRangeTombstoneToMaxHeap(maxHeap_->top()->level, false /* end_key */,
|
|
269
|
+
true /* replace_top */);
|
|
262
270
|
}
|
|
263
271
|
}
|
|
264
272
|
|
|
@@ -766,13 +774,15 @@ bool MergingIterator::SkipNextDeleted() {
|
|
|
766
774
|
// - range deletion end key
|
|
767
775
|
auto current = minHeap_.top();
|
|
768
776
|
if (current->type == HeapItem::DELETE_RANGE_END) {
|
|
769
|
-
minHeap_.pop();
|
|
770
777
|
active_.erase(current->level);
|
|
771
778
|
assert(range_tombstone_iters_[current->level] &&
|
|
772
779
|
range_tombstone_iters_[current->level]->Valid());
|
|
773
780
|
range_tombstone_iters_[current->level]->Next();
|
|
774
781
|
if (range_tombstone_iters_[current->level]->Valid()) {
|
|
775
|
-
InsertRangeTombstoneToMinHeap(current->level
|
|
782
|
+
InsertRangeTombstoneToMinHeap(current->level, true /* start_key */,
|
|
783
|
+
true /* replace_top */);
|
|
784
|
+
} else {
|
|
785
|
+
minHeap_.pop();
|
|
776
786
|
}
|
|
777
787
|
return true /* current key deleted */;
|
|
778
788
|
}
|
|
@@ -810,7 +820,8 @@ bool MergingIterator::SkipNextDeleted() {
|
|
|
810
820
|
// Point key case: check active_ for range tombstone coverage.
|
|
811
821
|
ParsedInternalKey pik;
|
|
812
822
|
ParseInternalKey(current->iter.key(), &pik, false).PermitUncheckedError();
|
|
813
|
-
|
|
823
|
+
if (!active_.empty()) {
|
|
824
|
+
auto i = *active_.begin();
|
|
814
825
|
if (i < current->level) {
|
|
815
826
|
// range tombstone is from a newer level, definitely covers
|
|
816
827
|
assert(comparator_->Compare(range_tombstone_iters_[i]->start_key(),
|
|
@@ -981,13 +992,15 @@ bool MergingIterator::SkipPrevDeleted() {
|
|
|
981
992
|
// - range deletion start key
|
|
982
993
|
auto current = maxHeap_->top();
|
|
983
994
|
if (current->type == HeapItem::DELETE_RANGE_START) {
|
|
984
|
-
maxHeap_->pop();
|
|
985
995
|
active_.erase(current->level);
|
|
986
996
|
assert(range_tombstone_iters_[current->level] &&
|
|
987
997
|
range_tombstone_iters_[current->level]->Valid());
|
|
988
998
|
range_tombstone_iters_[current->level]->Prev();
|
|
989
999
|
if (range_tombstone_iters_[current->level]->Valid()) {
|
|
990
|
-
InsertRangeTombstoneToMaxHeap(current->level
|
|
1000
|
+
InsertRangeTombstoneToMaxHeap(current->level, true /* end_key */,
|
|
1001
|
+
true /* replace_top */);
|
|
1002
|
+
} else {
|
|
1003
|
+
maxHeap_->pop();
|
|
991
1004
|
}
|
|
992
1005
|
return true /* current key deleted */;
|
|
993
1006
|
}
|
|
@@ -1015,7 +1028,8 @@ bool MergingIterator::SkipPrevDeleted() {
|
|
|
1015
1028
|
// Point key case: check active_ for range tombstone coverage.
|
|
1016
1029
|
ParsedInternalKey pik;
|
|
1017
1030
|
ParseInternalKey(current->iter.key(), &pik, false).PermitUncheckedError();
|
|
1018
|
-
|
|
1031
|
+
if (!active_.empty()) {
|
|
1032
|
+
auto i = *active_.begin();
|
|
1019
1033
|
if (i < current->level) {
|
|
1020
1034
|
// range tombstone is from a newer level, definitely covers
|
|
1021
1035
|
assert(comparator_->Compare(range_tombstone_iters_[i]->start_key(),
|
|
@@ -1054,6 +1068,7 @@ bool MergingIterator::SkipPrevDeleted() {
|
|
|
1054
1068
|
return false /* current key not deleted */;
|
|
1055
1069
|
}
|
|
1056
1070
|
}
|
|
1071
|
+
|
|
1057
1072
|
assert(active_.empty());
|
|
1058
1073
|
assert(maxHeap_->top()->type == HeapItem::ITERATOR);
|
|
1059
1074
|
return false /* current key not deleted */;
|
|
@@ -35,8 +35,7 @@ const std::string kRangeDelBlockName = "rocksdb.range_del";
|
|
|
35
35
|
MetaIndexBuilder::MetaIndexBuilder()
|
|
36
36
|
: meta_index_block_(new BlockBuilder(1 /* restart interval */)) {}
|
|
37
37
|
|
|
38
|
-
void MetaIndexBuilder::Add(const std::string& key,
|
|
39
|
-
const BlockHandle& handle) {
|
|
38
|
+
void MetaIndexBuilder::Add(const std::string& key, const BlockHandle& handle) {
|
|
40
39
|
std::string handle_encoding;
|
|
41
40
|
handle.EncodeTo(&handle_encoding);
|
|
42
41
|
meta_block_handles_.insert({key, handle_encoding});
|
|
@@ -173,8 +172,8 @@ void LogPropertiesCollectionError(Logger* info_log, const std::string& method,
|
|
|
173
172
|
assert(method == "Add" || method == "Finish");
|
|
174
173
|
|
|
175
174
|
std::string msg =
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
"Encountered error when calling TablePropertiesCollector::" + method +
|
|
176
|
+
"() with collector name: " + name;
|
|
178
177
|
ROCKS_LOG_ERROR(info_log, "%s", msg.c_str());
|
|
179
178
|
}
|
|
180
179
|
|
|
@@ -346,8 +345,9 @@ Status ReadTablePropertiesHelper(
|
|
|
346
345
|
if (!GetVarint64(&raw_val, &val)) {
|
|
347
346
|
// skip malformed value
|
|
348
347
|
auto error_msg =
|
|
349
|
-
|
|
350
|
-
|
|
348
|
+
"Detect malformed value in properties meta-block:"
|
|
349
|
+
"\tkey: " +
|
|
350
|
+
key + "\tval: " + raw_val.ToString();
|
|
351
351
|
ROCKS_LOG_ERROR(ioptions.logger, "%s", error_msg.c_str());
|
|
352
352
|
continue;
|
|
353
353
|
}
|
|
@@ -123,8 +123,7 @@ class MultiGetContext {
|
|
|
123
123
|
assert(num_keys <= MAX_BATCH_SIZE);
|
|
124
124
|
if (num_keys > MAX_LOOKUP_KEYS_ON_STACK) {
|
|
125
125
|
lookup_key_heap_buf.reset(new char[sizeof(LookupKey) * num_keys]);
|
|
126
|
-
lookup_key_ptr_ = reinterpret_cast<LookupKey*>(
|
|
127
|
-
lookup_key_heap_buf.get());
|
|
126
|
+
lookup_key_ptr_ = reinterpret_cast<LookupKey*>(lookup_key_heap_buf.get());
|
|
128
127
|
}
|
|
129
128
|
|
|
130
129
|
for (size_t iter = 0; iter != num_keys_; ++iter) {
|
|
@@ -157,8 +156,9 @@ class MultiGetContext {
|
|
|
157
156
|
|
|
158
157
|
private:
|
|
159
158
|
static const int MAX_LOOKUP_KEYS_ON_STACK = 16;
|
|
160
|
-
alignas(
|
|
161
|
-
|
|
159
|
+
alignas(
|
|
160
|
+
alignof(LookupKey)) char lookup_key_stack_buf[sizeof(LookupKey) *
|
|
161
|
+
MAX_LOOKUP_KEYS_ON_STACK];
|
|
162
162
|
std::array<KeyContext*, MAX_BATCH_SIZE> sorted_keys_;
|
|
163
163
|
size_t num_keys_;
|
|
164
164
|
Mask value_mask_;
|
|
@@ -250,8 +250,7 @@ class MultiGetContext {
|
|
|
250
250
|
size_t index_;
|
|
251
251
|
};
|
|
252
252
|
|
|
253
|
-
Range(const Range& mget_range,
|
|
254
|
-
const Iterator& first,
|
|
253
|
+
Range(const Range& mget_range, const Iterator& first,
|
|
255
254
|
const Iterator& last) {
|
|
256
255
|
ctx_ = mget_range.ctx_;
|
|
257
256
|
if (first == last) {
|
|
@@ -82,8 +82,9 @@ PlainTableBuilder::PlainTableBuilder(
|
|
|
82
82
|
index_builder_.reset(new PlainTableIndexBuilder(
|
|
83
83
|
&arena_, ioptions, moptions.prefix_extractor.get(), index_sparseness,
|
|
84
84
|
hash_table_ratio, huge_page_tlb_size_));
|
|
85
|
-
properties_
|
|
86
|
-
[PlainTablePropertyNames::kBloomVersion] =
|
|
85
|
+
properties_
|
|
86
|
+
.user_collected_properties[PlainTablePropertyNames::kBloomVersion] =
|
|
87
|
+
"1"; // For future use
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
properties_.fixed_key_len = user_key_len;
|
|
@@ -112,8 +113,8 @@ PlainTableBuilder::PlainTableBuilder(
|
|
|
112
113
|
|
|
113
114
|
std::string val;
|
|
114
115
|
PutFixed32(&val, static_cast<uint32_t>(encoder_.GetEncodingType()));
|
|
115
|
-
properties_
|
|
116
|
-
[PlainTablePropertyNames::kEncodingType] = val;
|
|
116
|
+
properties_
|
|
117
|
+
.user_collected_properties[PlainTablePropertyNames::kEncodingType] = val;
|
|
117
118
|
|
|
118
119
|
assert(int_tbl_prop_collector_factories);
|
|
119
120
|
for (auto& factory : *int_tbl_prop_collector_factories) {
|
|
@@ -303,17 +304,13 @@ Status PlainTableBuilder::Finish() {
|
|
|
303
304
|
return status_;
|
|
304
305
|
}
|
|
305
306
|
|
|
306
|
-
void PlainTableBuilder::Abandon() {
|
|
307
|
-
closed_ = true;
|
|
308
|
-
}
|
|
307
|
+
void PlainTableBuilder::Abandon() { closed_ = true; }
|
|
309
308
|
|
|
310
309
|
uint64_t PlainTableBuilder::NumEntries() const {
|
|
311
310
|
return properties_.num_entries;
|
|
312
311
|
}
|
|
313
312
|
|
|
314
|
-
uint64_t PlainTableBuilder::FileSize() const {
|
|
315
|
-
return offset_;
|
|
316
|
-
}
|
|
313
|
+
uint64_t PlainTableBuilder::FileSize() const { return offset_; }
|
|
317
314
|
|
|
318
315
|
std::string PlainTableBuilder::GetFileChecksum() const {
|
|
319
316
|
if (file_ != nullptr) {
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
#ifndef ROCKSDB_LITE
|
|
9
9
|
#include <stdint.h>
|
|
10
|
+
|
|
10
11
|
#include <string>
|
|
11
12
|
#include <vector>
|
|
13
|
+
|
|
12
14
|
#include "db/version_edit.h"
|
|
13
15
|
#include "rocksdb/options.h"
|
|
14
16
|
#include "rocksdb/status.h"
|
|
@@ -29,7 +31,7 @@ class TableBuilder;
|
|
|
29
31
|
// The builder class of PlainTable. For description of PlainTable format
|
|
30
32
|
// See comments of class PlainTableFactory, where instances of
|
|
31
33
|
// PlainTableReader are created.
|
|
32
|
-
class PlainTableBuilder: public TableBuilder {
|
|
34
|
+
class PlainTableBuilder : public TableBuilder {
|
|
33
35
|
public:
|
|
34
36
|
// Create a builder that will store the contents of the table it is
|
|
35
37
|
// building in *file. Does not close the file. It is up to the
|
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
#pragma once
|
|
7
7
|
|
|
8
8
|
#ifndef ROCKSDB_LITE
|
|
9
|
+
#include <stdint.h>
|
|
10
|
+
|
|
9
11
|
#include <memory>
|
|
10
12
|
#include <string>
|
|
11
|
-
#include <stdint.h>
|
|
12
13
|
|
|
13
14
|
#include "rocksdb/table.h"
|
|
14
15
|
|
|
@@ -177,6 +178,5 @@ class PlainTableFactory : public TableFactory {
|
|
|
177
178
|
PlainTableOptions table_options_;
|
|
178
179
|
};
|
|
179
180
|
|
|
180
|
-
|
|
181
181
|
} // namespace ROCKSDB_NAMESPACE
|
|
182
182
|
#endif // ROCKSDB_LITE
|
|
@@ -19,7 +19,7 @@ inline uint32_t GetBucketIdFromHash(uint32_t hash, uint32_t num_buckets) {
|
|
|
19
19
|
assert(num_buckets > 0);
|
|
20
20
|
return hash % num_buckets;
|
|
21
21
|
}
|
|
22
|
-
}
|
|
22
|
+
} // namespace
|
|
23
23
|
|
|
24
24
|
Status PlainTableIndex::InitFromRawData(Slice data) {
|
|
25
25
|
if (!GetVarint32(&data, &index_size_)) {
|
|
@@ -114,7 +114,7 @@ void PlainTableIndexBuilder::AllocateIndex() {
|
|
|
114
114
|
} else {
|
|
115
115
|
double hash_table_size_multipier = 1.0 / hash_table_ratio_;
|
|
116
116
|
index_size_ =
|
|
117
|
-
|
|
117
|
+
static_cast<uint32_t>(num_prefixes_ * hash_table_size_multipier) + 1;
|
|
118
118
|
assert(index_size_ > 0);
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -180,7 +180,8 @@ Slice PlainTableIndexBuilder::FillIndexes(
|
|
|
180
180
|
break;
|
|
181
181
|
default:
|
|
182
182
|
// point to second level indexes.
|
|
183
|
-
PutUnaligned(index + i,
|
|
183
|
+
PutUnaligned(index + i,
|
|
184
|
+
sub_index_offset | PlainTableIndex::kSubIndexMask);
|
|
184
185
|
char* prev_ptr = &sub_index[sub_index_offset];
|
|
185
186
|
char* cur_ptr = EncodeVarint32(prev_ptr, num_keys_for_bucket);
|
|
186
187
|
sub_index_offset += static_cast<uint32_t>(cur_ptr - prev_ptr);
|
|
@@ -188,8 +188,8 @@ class PlainTableIndexBuilder {
|
|
|
188
188
|
num_records_in_current_group_;
|
|
189
189
|
}
|
|
190
190
|
IndexRecord* At(size_t index) {
|
|
191
|
-
return &(
|
|
192
|
-
|
|
191
|
+
return &(
|
|
192
|
+
groups_[index / kNumRecordsPerGroup][index % kNumRecordsPerGroup]);
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
private:
|