@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
|
@@ -86,7 +86,8 @@ class PartitionedFilterBlockTest
|
|
|
86
86
|
int num_keys = sizeof(keys) / sizeof(*keys);
|
|
87
87
|
uint64_t max_key_size = 0;
|
|
88
88
|
for (int i = 1; i < num_keys; i++) {
|
|
89
|
-
max_key_size =
|
|
89
|
+
max_key_size =
|
|
90
|
+
std::max(max_key_size, static_cast<uint64_t>(keys[i].size()));
|
|
90
91
|
}
|
|
91
92
|
uint64_t max_index_size = num_keys * (max_key_size + 8 /*handle*/);
|
|
92
93
|
return max_index_size;
|
|
@@ -116,11 +117,11 @@ class PartitionedFilterBlockTest
|
|
|
116
117
|
PartitionedIndexBuilder* const p_index_builder,
|
|
117
118
|
const SliceTransform* prefix_extractor = nullptr) {
|
|
118
119
|
assert(table_options_.block_size_deviation <= 100);
|
|
119
|
-
auto partition_size =
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
auto partition_size =
|
|
121
|
+
static_cast<uint32_t>(((table_options_.metadata_block_size *
|
|
122
|
+
(100 - table_options_.block_size_deviation)) +
|
|
123
|
+
99) /
|
|
124
|
+
100);
|
|
124
125
|
partition_size = std::max(partition_size, static_cast<uint32_t>(1));
|
|
125
126
|
const bool kValueDeltaEncoded = true;
|
|
126
127
|
return new PartitionedFilterBlockBuilder(
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
#pragma once
|
|
10
10
|
#include "table/block_based/block_based_table_reader.h"
|
|
11
|
-
|
|
12
11
|
#include "table/block_based/block_based_table_reader_impl.h"
|
|
13
12
|
#include "table/block_based/block_prefetcher.h"
|
|
14
13
|
#include "table/block_based/reader_common.h"
|
|
@@ -147,12 +147,11 @@ inline void BlockFetcher::PrepareBufferForBlockFromFile() {
|
|
|
147
147
|
// file reader that does not implement mmap reads properly.
|
|
148
148
|
used_buf_ = &stack_buf_[0];
|
|
149
149
|
} else if (maybe_compressed_ && !do_uncompress_) {
|
|
150
|
-
compressed_buf_ =
|
|
151
|
-
|
|
150
|
+
compressed_buf_ =
|
|
151
|
+
AllocateBlock(block_size_with_trailer_, memory_allocator_compressed_);
|
|
152
152
|
used_buf_ = compressed_buf_.get();
|
|
153
153
|
} else {
|
|
154
|
-
heap_buf_ =
|
|
155
|
-
AllocateBlock(block_size_with_trailer_, memory_allocator_);
|
|
154
|
+
heap_buf_ = AllocateBlock(block_size_with_trailer_, memory_allocator_);
|
|
156
155
|
used_buf_ = heap_buf_.get();
|
|
157
156
|
}
|
|
158
157
|
}
|
|
@@ -187,8 +186,8 @@ inline void BlockFetcher::CopyBufferToHeapBuf() {
|
|
|
187
186
|
|
|
188
187
|
inline void BlockFetcher::CopyBufferToCompressedBuf() {
|
|
189
188
|
assert(used_buf_ != compressed_buf_.get());
|
|
190
|
-
compressed_buf_ =
|
|
191
|
-
|
|
189
|
+
compressed_buf_ =
|
|
190
|
+
AllocateBlock(block_size_with_trailer_, memory_allocator_compressed_);
|
|
192
191
|
memcpy(compressed_buf_.get(), used_buf_, block_size_with_trailer_);
|
|
193
192
|
#ifndef NDEBUG
|
|
194
193
|
num_compressed_buf_memcpy_++;
|
|
@@ -19,8 +19,8 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
19
19
|
// Retrieves a single block of a given file. Utilizes the prefetch buffer and/or
|
|
20
20
|
// persistent cache provided (if any) to try to avoid reading from the file
|
|
21
21
|
// directly. Note that both the prefetch buffer and the persistent cache are
|
|
22
|
-
// optional; also, note that the persistent cache may be configured to store
|
|
23
|
-
// compressed or uncompressed blocks.
|
|
22
|
+
// optional; also, note that the persistent cache may be configured to store
|
|
23
|
+
// either compressed or uncompressed blocks.
|
|
24
24
|
//
|
|
25
25
|
// If the retrieved block is compressed and the do_uncompress flag is set,
|
|
26
26
|
// BlockFetcher uncompresses the block (using the uncompression dictionary,
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#include "table/cuckoo/cuckoo_table_builder.h"
|
|
8
8
|
|
|
9
9
|
#include <assert.h>
|
|
10
|
+
|
|
10
11
|
#include <algorithm>
|
|
11
12
|
#include <limits>
|
|
12
13
|
#include <string>
|
|
@@ -26,23 +27,23 @@
|
|
|
26
27
|
|
|
27
28
|
namespace ROCKSDB_NAMESPACE {
|
|
28
29
|
const std::string CuckooTablePropertyNames::kEmptyKey =
|
|
29
|
-
|
|
30
|
+
"rocksdb.cuckoo.bucket.empty.key";
|
|
30
31
|
const std::string CuckooTablePropertyNames::kNumHashFunc =
|
|
31
|
-
|
|
32
|
+
"rocksdb.cuckoo.hash.num";
|
|
32
33
|
const std::string CuckooTablePropertyNames::kHashTableSize =
|
|
33
|
-
|
|
34
|
+
"rocksdb.cuckoo.hash.size";
|
|
34
35
|
const std::string CuckooTablePropertyNames::kValueLength =
|
|
35
|
-
|
|
36
|
+
"rocksdb.cuckoo.value.length";
|
|
36
37
|
const std::string CuckooTablePropertyNames::kIsLastLevel =
|
|
37
|
-
|
|
38
|
+
"rocksdb.cuckoo.file.islastlevel";
|
|
38
39
|
const std::string CuckooTablePropertyNames::kCuckooBlockSize =
|
|
39
|
-
|
|
40
|
+
"rocksdb.cuckoo.hash.cuckooblocksize";
|
|
40
41
|
const std::string CuckooTablePropertyNames::kIdentityAsFirstHash =
|
|
41
|
-
|
|
42
|
+
"rocksdb.cuckoo.hash.identityfirst";
|
|
42
43
|
const std::string CuckooTablePropertyNames::kUseModuleHash =
|
|
43
|
-
|
|
44
|
+
"rocksdb.cuckoo.hash.usemodule";
|
|
44
45
|
const std::string CuckooTablePropertyNames::kUserKeyLength =
|
|
45
|
-
|
|
46
|
+
"rocksdb.cuckoo.hash.userkeylength";
|
|
46
47
|
|
|
47
48
|
// Obtained by running echo rocksdb.table.cuckoo | sha1sum
|
|
48
49
|
extern const uint64_t kCuckooTableMagicNumber = 0x926789d0c5f17873ull;
|
|
@@ -174,9 +175,12 @@ bool CuckooTableBuilder::IsDeletedKey(uint64_t idx) const {
|
|
|
174
175
|
Slice CuckooTableBuilder::GetKey(uint64_t idx) const {
|
|
175
176
|
assert(closed_);
|
|
176
177
|
if (IsDeletedKey(idx)) {
|
|
177
|
-
return Slice(
|
|
178
|
+
return Slice(
|
|
179
|
+
&deleted_keys_[static_cast<size_t>((idx - num_values_) * key_size_)],
|
|
180
|
+
static_cast<size_t>(key_size_));
|
|
178
181
|
}
|
|
179
|
-
return Slice(&kvs_[static_cast<size_t>(idx * (key_size_ + value_size_))],
|
|
182
|
+
return Slice(&kvs_[static_cast<size_t>(idx * (key_size_ + value_size_))],
|
|
183
|
+
static_cast<size_t>(key_size_));
|
|
180
184
|
}
|
|
181
185
|
|
|
182
186
|
Slice CuckooTableBuilder::GetUserKey(uint64_t idx) const {
|
|
@@ -190,11 +194,14 @@ Slice CuckooTableBuilder::GetValue(uint64_t idx) const {
|
|
|
190
194
|
static std::string empty_value(static_cast<unsigned int>(value_size_), 'a');
|
|
191
195
|
return Slice(empty_value);
|
|
192
196
|
}
|
|
193
|
-
return Slice(
|
|
197
|
+
return Slice(
|
|
198
|
+
&kvs_[static_cast<size_t>(idx * (key_size_ + value_size_) + key_size_)],
|
|
199
|
+
static_cast<size_t>(value_size_));
|
|
194
200
|
}
|
|
195
201
|
|
|
196
202
|
Status CuckooTableBuilder::MakeHashTable(std::vector<CuckooBucket>* buckets) {
|
|
197
|
-
buckets->resize(
|
|
203
|
+
buckets->resize(
|
|
204
|
+
static_cast<size_t>(hash_table_size_ + cuckoo_block_size_ - 1));
|
|
198
205
|
uint32_t make_space_for_key_call_id = 0;
|
|
199
206
|
for (uint32_t vector_idx = 0; vector_idx < num_entries_; vector_idx++) {
|
|
200
207
|
uint64_t bucket_id = 0;
|
|
@@ -202,29 +209,33 @@ Status CuckooTableBuilder::MakeHashTable(std::vector<CuckooBucket>* buckets) {
|
|
|
202
209
|
autovector<uint64_t> hash_vals;
|
|
203
210
|
Slice user_key = GetUserKey(vector_idx);
|
|
204
211
|
for (uint32_t hash_cnt = 0; hash_cnt < num_hash_func_ && !bucket_found;
|
|
205
|
-
|
|
206
|
-
uint64_t hash_val =
|
|
207
|
-
|
|
212
|
+
++hash_cnt) {
|
|
213
|
+
uint64_t hash_val =
|
|
214
|
+
CuckooHash(user_key, hash_cnt, use_module_hash_, hash_table_size_,
|
|
215
|
+
identity_as_first_hash_, get_slice_hash_);
|
|
208
216
|
// If there is a collision, check next cuckoo_block_size_ locations for
|
|
209
217
|
// empty locations. While checking, if we reach end of the hash table,
|
|
210
218
|
// stop searching and proceed for next hash function.
|
|
211
219
|
for (uint32_t block_idx = 0; block_idx < cuckoo_block_size_;
|
|
212
|
-
|
|
213
|
-
if ((*buckets)[static_cast<size_t>(hash_val)].vector_idx ==
|
|
220
|
+
++block_idx, ++hash_val) {
|
|
221
|
+
if ((*buckets)[static_cast<size_t>(hash_val)].vector_idx ==
|
|
222
|
+
kMaxVectorIdx) {
|
|
214
223
|
bucket_id = hash_val;
|
|
215
224
|
bucket_found = true;
|
|
216
225
|
break;
|
|
217
226
|
} else {
|
|
218
|
-
if (ucomp_->Compare(
|
|
219
|
-
|
|
227
|
+
if (ucomp_->Compare(
|
|
228
|
+
user_key, GetUserKey((*buckets)[static_cast<size_t>(hash_val)]
|
|
229
|
+
.vector_idx)) == 0) {
|
|
220
230
|
return Status::NotSupported("Same key is being inserted again.");
|
|
221
231
|
}
|
|
222
232
|
hash_vals.push_back(hash_val);
|
|
223
233
|
}
|
|
224
234
|
}
|
|
225
235
|
}
|
|
226
|
-
while (!bucket_found &&
|
|
227
|
-
|
|
236
|
+
while (!bucket_found &&
|
|
237
|
+
!MakeSpaceForKey(hash_vals, ++make_space_for_key_call_id, buckets,
|
|
238
|
+
&bucket_id)) {
|
|
228
239
|
// Rehash by increashing number of hash tables.
|
|
229
240
|
if (num_hash_func_ >= max_num_hash_func_) {
|
|
230
241
|
return Status::NotSupported("Too many collisions. Unable to hash.");
|
|
@@ -232,11 +243,13 @@ Status CuckooTableBuilder::MakeHashTable(std::vector<CuckooBucket>* buckets) {
|
|
|
232
243
|
// We don't really need to rehash the entire table because old hashes are
|
|
233
244
|
// still valid and we only increased the number of hash functions.
|
|
234
245
|
uint64_t hash_val = CuckooHash(user_key, num_hash_func_, use_module_hash_,
|
|
235
|
-
|
|
246
|
+
hash_table_size_, identity_as_first_hash_,
|
|
247
|
+
get_slice_hash_);
|
|
236
248
|
++num_hash_func_;
|
|
237
249
|
for (uint32_t block_idx = 0; block_idx < cuckoo_block_size_;
|
|
238
|
-
|
|
239
|
-
if ((*buckets)[static_cast<size_t>(hash_val)].vector_idx ==
|
|
250
|
+
++block_idx, ++hash_val) {
|
|
251
|
+
if ((*buckets)[static_cast<size_t>(hash_val)].vector_idx ==
|
|
252
|
+
kMaxVectorIdx) {
|
|
240
253
|
bucket_found = true;
|
|
241
254
|
bucket_id = hash_val;
|
|
242
255
|
break;
|
|
@@ -259,7 +272,7 @@ Status CuckooTableBuilder::Finish() {
|
|
|
259
272
|
// Calculate the real hash size if module hash is enabled.
|
|
260
273
|
if (use_module_hash_) {
|
|
261
274
|
hash_table_size_ =
|
|
262
|
-
|
|
275
|
+
static_cast<uint64_t>(num_entries_ / max_hash_table_ratio_);
|
|
263
276
|
}
|
|
264
277
|
status_ = MakeHashTable(&buckets);
|
|
265
278
|
if (!status_.ok()) {
|
|
@@ -300,9 +313,8 @@ Status CuckooTableBuilder::Finish() {
|
|
|
300
313
|
properties_.num_entries = num_entries_;
|
|
301
314
|
properties_.num_deletions = num_entries_ - num_values_;
|
|
302
315
|
properties_.fixed_key_len = key_size_;
|
|
303
|
-
properties_.user_collected_properties[
|
|
304
|
-
|
|
305
|
-
reinterpret_cast<const char*>(&value_size_), sizeof(value_size_));
|
|
316
|
+
properties_.user_collected_properties[CuckooTablePropertyNames::kValueLength]
|
|
317
|
+
.assign(reinterpret_cast<const char*>(&value_size_), sizeof(value_size_));
|
|
306
318
|
|
|
307
319
|
uint64_t bucket_size = key_size_ + value_size_;
|
|
308
320
|
unused_bucket.resize(static_cast<size_t>(bucket_size), 'a');
|
|
@@ -332,37 +344,35 @@ Status CuckooTableBuilder::Finish() {
|
|
|
332
344
|
uint64_t offset = buckets.size() * bucket_size;
|
|
333
345
|
properties_.data_size = offset;
|
|
334
346
|
unused_bucket.resize(static_cast<size_t>(properties_.fixed_key_len));
|
|
335
|
-
properties_.user_collected_properties[
|
|
336
|
-
|
|
337
|
-
properties_.user_collected_properties[
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
reinterpret_cast<const char*>(&use_module_hash_),
|
|
360
|
-
sizeof(use_module_hash_));
|
|
347
|
+
properties_.user_collected_properties[CuckooTablePropertyNames::kEmptyKey] =
|
|
348
|
+
unused_bucket;
|
|
349
|
+
properties_.user_collected_properties[CuckooTablePropertyNames::kNumHashFunc]
|
|
350
|
+
.assign(reinterpret_cast<char*>(&num_hash_func_), sizeof(num_hash_func_));
|
|
351
|
+
|
|
352
|
+
properties_
|
|
353
|
+
.user_collected_properties[CuckooTablePropertyNames::kHashTableSize]
|
|
354
|
+
.assign(reinterpret_cast<const char*>(&hash_table_size_),
|
|
355
|
+
sizeof(hash_table_size_));
|
|
356
|
+
properties_.user_collected_properties[CuckooTablePropertyNames::kIsLastLevel]
|
|
357
|
+
.assign(reinterpret_cast<const char*>(&is_last_level_file_),
|
|
358
|
+
sizeof(is_last_level_file_));
|
|
359
|
+
properties_
|
|
360
|
+
.user_collected_properties[CuckooTablePropertyNames::kCuckooBlockSize]
|
|
361
|
+
.assign(reinterpret_cast<const char*>(&cuckoo_block_size_),
|
|
362
|
+
sizeof(cuckoo_block_size_));
|
|
363
|
+
properties_
|
|
364
|
+
.user_collected_properties[CuckooTablePropertyNames::kIdentityAsFirstHash]
|
|
365
|
+
.assign(reinterpret_cast<const char*>(&identity_as_first_hash_),
|
|
366
|
+
sizeof(identity_as_first_hash_));
|
|
367
|
+
properties_
|
|
368
|
+
.user_collected_properties[CuckooTablePropertyNames::kUseModuleHash]
|
|
369
|
+
.assign(reinterpret_cast<const char*>(&use_module_hash_),
|
|
370
|
+
sizeof(use_module_hash_));
|
|
361
371
|
uint32_t user_key_len = static_cast<uint32_t>(smallest_user_key_.size());
|
|
362
|
-
properties_
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
372
|
+
properties_
|
|
373
|
+
.user_collected_properties[CuckooTablePropertyNames::kUserKeyLength]
|
|
374
|
+
.assign(reinterpret_cast<const char*>(&user_key_len),
|
|
375
|
+
sizeof(user_key_len));
|
|
366
376
|
|
|
367
377
|
// Write meta blocks.
|
|
368
378
|
MetaIndexBuilder meta_index_builder;
|
|
@@ -406,9 +416,7 @@ void CuckooTableBuilder::Abandon() {
|
|
|
406
416
|
closed_ = true;
|
|
407
417
|
}
|
|
408
418
|
|
|
409
|
-
uint64_t CuckooTableBuilder::NumEntries() const {
|
|
410
|
-
return num_entries_;
|
|
411
|
-
}
|
|
419
|
+
uint64_t CuckooTableBuilder::NumEntries() const { return num_entries_; }
|
|
412
420
|
|
|
413
421
|
uint64_t CuckooTableBuilder::FileSize() const {
|
|
414
422
|
if (closed_) {
|
|
@@ -418,8 +426,8 @@ uint64_t CuckooTableBuilder::FileSize() const {
|
|
|
418
426
|
}
|
|
419
427
|
|
|
420
428
|
if (use_module_hash_) {
|
|
421
|
-
return static_cast<uint64_t>((key_size_ + value_size_) *
|
|
422
|
-
|
|
429
|
+
return static_cast<uint64_t>((key_size_ + value_size_) * num_entries_ /
|
|
430
|
+
max_hash_table_ratio_);
|
|
423
431
|
} else {
|
|
424
432
|
// Account for buckets being a power of two.
|
|
425
433
|
// As elements are added, file size remains constant for a while and
|
|
@@ -468,7 +476,8 @@ bool CuckooTableBuilder::MakeSpaceForKey(
|
|
|
468
476
|
// no. of times this will be called is <= max_num_hash_func_ + num_entries_.
|
|
469
477
|
for (uint32_t hash_cnt = 0; hash_cnt < num_hash_func_; ++hash_cnt) {
|
|
470
478
|
uint64_t bid = hash_vals[hash_cnt];
|
|
471
|
-
(*buckets)[static_cast<size_t>(bid)].make_space_for_key_call_id =
|
|
479
|
+
(*buckets)[static_cast<size_t>(bid)].make_space_for_key_call_id =
|
|
480
|
+
make_space_for_key_call_id;
|
|
472
481
|
tree.push_back(CuckooNode(bid, 0, 0));
|
|
473
482
|
}
|
|
474
483
|
bool null_found = false;
|
|
@@ -479,24 +488,25 @@ bool CuckooTableBuilder::MakeSpaceForKey(
|
|
|
479
488
|
if (curr_depth >= max_search_depth_) {
|
|
480
489
|
break;
|
|
481
490
|
}
|
|
482
|
-
CuckooBucket& curr_bucket =
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
491
|
+
CuckooBucket& curr_bucket =
|
|
492
|
+
(*buckets)[static_cast<size_t>(curr_node.bucket_id)];
|
|
493
|
+
for (uint32_t hash_cnt = 0; hash_cnt < num_hash_func_ && !null_found;
|
|
494
|
+
++hash_cnt) {
|
|
495
|
+
uint64_t child_bucket_id = CuckooHash(
|
|
496
|
+
GetUserKey(curr_bucket.vector_idx), hash_cnt, use_module_hash_,
|
|
497
|
+
hash_table_size_, identity_as_first_hash_, get_slice_hash_);
|
|
488
498
|
// Iterate inside Cuckoo Block.
|
|
489
499
|
for (uint32_t block_idx = 0; block_idx < cuckoo_block_size_;
|
|
490
|
-
|
|
491
|
-
if ((*buckets)[static_cast<size_t>(child_bucket_id)]
|
|
492
|
-
|
|
500
|
+
++block_idx, ++child_bucket_id) {
|
|
501
|
+
if ((*buckets)[static_cast<size_t>(child_bucket_id)]
|
|
502
|
+
.make_space_for_key_call_id == make_space_for_key_call_id) {
|
|
493
503
|
continue;
|
|
494
504
|
}
|
|
495
|
-
(*buckets)[static_cast<size_t>(child_bucket_id)]
|
|
496
|
-
|
|
497
|
-
tree.push_back(CuckooNode(child_bucket_id, curr_depth + 1,
|
|
498
|
-
|
|
499
|
-
|
|
505
|
+
(*buckets)[static_cast<size_t>(child_bucket_id)]
|
|
506
|
+
.make_space_for_key_call_id = make_space_for_key_call_id;
|
|
507
|
+
tree.push_back(CuckooNode(child_bucket_id, curr_depth + 1, curr_pos));
|
|
508
|
+
if ((*buckets)[static_cast<size_t>(child_bucket_id)].vector_idx ==
|
|
509
|
+
kMaxVectorIdx) {
|
|
500
510
|
null_found = true;
|
|
501
511
|
break;
|
|
502
512
|
}
|
|
@@ -515,7 +525,7 @@ bool CuckooTableBuilder::MakeSpaceForKey(
|
|
|
515
525
|
while (bucket_to_replace_pos >= num_hash_func_) {
|
|
516
526
|
CuckooNode& curr_node = tree[bucket_to_replace_pos];
|
|
517
527
|
(*buckets)[static_cast<size_t>(curr_node.bucket_id)] =
|
|
518
|
-
|
|
528
|
+
(*buckets)[static_cast<size_t>(tree[curr_node.parent_pos].bucket_id)];
|
|
519
529
|
bucket_to_replace_pos = curr_node.parent_pos;
|
|
520
530
|
}
|
|
521
531
|
*bucket_id = tree[bucket_to_replace_pos].bucket_id;
|
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
#pragma once
|
|
7
7
|
#ifndef ROCKSDB_LITE
|
|
8
8
|
#include <stdint.h>
|
|
9
|
+
|
|
9
10
|
#include <limits>
|
|
10
11
|
#include <string>
|
|
11
12
|
#include <utility>
|
|
12
13
|
#include <vector>
|
|
14
|
+
|
|
13
15
|
#include "db/version_edit.h"
|
|
14
16
|
#include "port/port.h"
|
|
15
17
|
#include "rocksdb/status.h"
|
|
@@ -20,7 +22,7 @@
|
|
|
20
22
|
|
|
21
23
|
namespace ROCKSDB_NAMESPACE {
|
|
22
24
|
|
|
23
|
-
class CuckooTableBuilder: public TableBuilder {
|
|
25
|
+
class CuckooTableBuilder : public TableBuilder {
|
|
24
26
|
public:
|
|
25
27
|
CuckooTableBuilder(
|
|
26
28
|
WritableFileWriter* file, double max_hash_table_ratio,
|
|
@@ -78,8 +80,7 @@ class CuckooTableBuilder: public TableBuilder {
|
|
|
78
80
|
|
|
79
81
|
private:
|
|
80
82
|
struct CuckooBucket {
|
|
81
|
-
CuckooBucket()
|
|
82
|
-
: vector_idx(kMaxVectorIdx), make_space_for_key_call_id(0) {}
|
|
83
|
+
CuckooBucket() : vector_idx(kMaxVectorIdx), make_space_for_key_call_id(0) {}
|
|
83
84
|
uint32_t vector_idx;
|
|
84
85
|
// This number will not exceed kvs_.size() + max_num_hash_func_.
|
|
85
86
|
// We assume number of items is <= 2^32.
|
|
@@ -125,7 +126,7 @@ class CuckooTableBuilder: public TableBuilder {
|
|
|
125
126
|
bool use_module_hash_;
|
|
126
127
|
bool identity_as_first_hash_;
|
|
127
128
|
uint64_t (*get_slice_hash_)(const Slice& s, uint32_t index,
|
|
128
|
-
|
|
129
|
+
uint64_t max_num_buckets);
|
|
129
130
|
std::string largest_user_key_ = "";
|
|
130
131
|
std::string smallest_user_key_ = "";
|
|
131
132
|
|