@nxtedition/rocksdb 6.0.0-alpha.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUILDING.md +10 -0
- package/binding.cc +14 -17
- package/binding.gyp +2 -2
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +17 -3
- package/deps/rocksdb/rocksdb/Makefile +57 -86
- package/deps/rocksdb/rocksdb/TARGETS +4 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +11 -4
- package/deps/rocksdb/rocksdb/db/c.cc +45 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +25 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +4 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +25 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +6 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +69 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +21 -21
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +135 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +9 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +9 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +12 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +15 -14
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +44 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +23 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +95 -17
- package/deps/rocksdb/rocksdb/db/db_test_util.h +48 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +34 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +3 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +18 -4
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +3 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -4
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/version_edit.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_set.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_set.h +3 -3
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +31 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +359 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +69 -45
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +28 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +189 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +2 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +34 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +38 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +82 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +115 -59
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +14 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +85 -41
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +42 -72
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +7 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +6 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +5 -5
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +14 -11
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +57 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +34 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +254 -98
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +17 -3
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +7 -7
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +40 -31
- package/package.json +2 -2
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
|
@@ -439,22 +439,36 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
439
439
|
static_cast<int64_t>(ParseUint64(value))));
|
|
440
440
|
return Status::OK();
|
|
441
441
|
}}},
|
|
442
|
-
{"env",
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
442
|
+
{"env", //**TODO: Should this be kCustomizable?
|
|
443
|
+
OptionTypeInfo(
|
|
444
|
+
offsetof(struct ImmutableDBOptions, env), OptionType::kUnknown,
|
|
445
|
+
OptionVerificationType::kNormal,
|
|
446
|
+
(OptionTypeFlags::kDontSerialize | OptionTypeFlags::kCompareNever))
|
|
447
|
+
.SetParseFunc([](const ConfigOptions& opts,
|
|
448
|
+
const std::string& /*name*/,
|
|
449
|
+
const std::string& value, void* addr) {
|
|
450
|
+
// Parse the input value as an Env
|
|
451
|
+
auto old_env = static_cast<Env**>(addr); // Get the old value
|
|
452
|
+
Env* new_env = *old_env; // Set new to old
|
|
453
|
+
Status s = Env::CreateFromString(opts, value,
|
|
454
|
+
&new_env); // Update new value
|
|
455
|
+
if (s.ok()) { // It worked
|
|
456
|
+
*old_env = new_env; // Update the old one
|
|
457
|
+
}
|
|
458
|
+
return s;
|
|
459
|
+
})
|
|
460
|
+
.SetPrepareFunc([](const ConfigOptions& opts,
|
|
461
|
+
const std::string& /*name*/, void* addr) {
|
|
462
|
+
auto env = static_cast<Env**>(addr);
|
|
463
|
+
return (*env)->PrepareOptions(opts);
|
|
464
|
+
})
|
|
465
|
+
.SetValidateFunc([](const DBOptions& db_opts,
|
|
466
|
+
const ColumnFamilyOptions& cf_opts,
|
|
467
|
+
const std::string& /*name*/,
|
|
468
|
+
const void* addr) {
|
|
469
|
+
const auto env = static_cast<const Env* const*>(addr);
|
|
470
|
+
return (*env)->ValidateOptions(db_opts, cf_opts);
|
|
471
|
+
})},
|
|
458
472
|
{"allow_data_in_errors",
|
|
459
473
|
{offsetof(struct ImmutableDBOptions, allow_data_in_errors),
|
|
460
474
|
OptionType::kBoolean, OptionVerificationType::kNormal,
|
|
@@ -538,6 +552,10 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
538
552
|
OptionTypeInfo::Enum<CacheTier>(
|
|
539
553
|
offsetof(struct ImmutableDBOptions, lowest_used_cache_tier),
|
|
540
554
|
&cache_tier_string_map, OptionTypeFlags::kNone)},
|
|
555
|
+
{"enforce_single_del_contracts",
|
|
556
|
+
{offsetof(struct ImmutableDBOptions, enforce_single_del_contracts),
|
|
557
|
+
OptionType::kBoolean, OptionVerificationType::kNormal,
|
|
558
|
+
OptionTypeFlags::kNone}},
|
|
541
559
|
};
|
|
542
560
|
|
|
543
561
|
const std::string OptionsHelper::kDBOptionsName = "DBOptions";
|
|
@@ -736,7 +754,8 @@ ImmutableDBOptions::ImmutableDBOptions(const DBOptions& options)
|
|
|
736
754
|
db_host_id(options.db_host_id),
|
|
737
755
|
checksum_handoff_file_types(options.checksum_handoff_file_types),
|
|
738
756
|
lowest_used_cache_tier(options.lowest_used_cache_tier),
|
|
739
|
-
compaction_service(options.compaction_service)
|
|
757
|
+
compaction_service(options.compaction_service),
|
|
758
|
+
enforce_single_del_contracts(options.enforce_single_del_contracts) {
|
|
740
759
|
fs = env->GetFileSystem();
|
|
741
760
|
clock = env->GetSystemClock().get();
|
|
742
761
|
logger = info_log.get();
|
|
@@ -907,6 +926,8 @@ void ImmutableDBOptions::Dump(Logger* log) const {
|
|
|
907
926
|
allow_data_in_errors);
|
|
908
927
|
ROCKS_LOG_HEADER(log, " Options.db_host_id: %s",
|
|
909
928
|
db_host_id.c_str());
|
|
929
|
+
ROCKS_LOG_HEADER(log, " Options.enforce_single_del_contracts: %s",
|
|
930
|
+
enforce_single_del_contracts ? "true" : "false");
|
|
910
931
|
}
|
|
911
932
|
|
|
912
933
|
bool ImmutableDBOptions::IsWalDirSameAsDBPath() const {
|
|
@@ -105,6 +105,7 @@ struct ImmutableDBOptions {
|
|
|
105
105
|
Statistics* stats;
|
|
106
106
|
Logger* logger;
|
|
107
107
|
std::shared_ptr<CompactionService> compaction_service;
|
|
108
|
+
bool enforce_single_del_contracts;
|
|
108
109
|
|
|
109
110
|
bool IsWalDirSameAsDBPath() const;
|
|
110
111
|
bool IsWalDirSameAsDBPath(const std::string& path) const;
|
|
@@ -463,43 +463,43 @@ bool SerializeSingleOptionHelper(const void* opt_address,
|
|
|
463
463
|
*value = *(static_cast<const bool*>(opt_address)) ? "true" : "false";
|
|
464
464
|
break;
|
|
465
465
|
case OptionType::kInt:
|
|
466
|
-
*value =
|
|
466
|
+
*value = std::to_string(*(static_cast<const int*>(opt_address)));
|
|
467
467
|
break;
|
|
468
468
|
case OptionType::kInt32T:
|
|
469
|
-
*value =
|
|
469
|
+
*value = std::to_string(*(static_cast<const int32_t*>(opt_address)));
|
|
470
470
|
break;
|
|
471
471
|
case OptionType::kInt64T:
|
|
472
472
|
{
|
|
473
473
|
int64_t v;
|
|
474
474
|
GetUnaligned(static_cast<const int64_t*>(opt_address), &v);
|
|
475
|
-
*value =
|
|
475
|
+
*value = std::to_string(v);
|
|
476
476
|
}
|
|
477
477
|
break;
|
|
478
478
|
case OptionType::kUInt:
|
|
479
|
-
*value =
|
|
479
|
+
*value = std::to_string(*(static_cast<const unsigned int*>(opt_address)));
|
|
480
480
|
break;
|
|
481
481
|
case OptionType::kUInt8T:
|
|
482
|
-
*value =
|
|
482
|
+
*value = std::to_string(*(static_cast<const uint8_t*>(opt_address)));
|
|
483
483
|
break;
|
|
484
484
|
case OptionType::kUInt32T:
|
|
485
|
-
*value =
|
|
485
|
+
*value = std::to_string(*(static_cast<const uint32_t*>(opt_address)));
|
|
486
486
|
break;
|
|
487
487
|
case OptionType::kUInt64T:
|
|
488
488
|
{
|
|
489
489
|
uint64_t v;
|
|
490
490
|
GetUnaligned(static_cast<const uint64_t*>(opt_address), &v);
|
|
491
|
-
*value =
|
|
491
|
+
*value = std::to_string(v);
|
|
492
492
|
}
|
|
493
493
|
break;
|
|
494
494
|
case OptionType::kSizeT:
|
|
495
495
|
{
|
|
496
496
|
size_t v;
|
|
497
497
|
GetUnaligned(static_cast<const size_t*>(opt_address), &v);
|
|
498
|
-
*value =
|
|
498
|
+
*value = std::to_string(v);
|
|
499
499
|
}
|
|
500
500
|
break;
|
|
501
501
|
case OptionType::kDouble:
|
|
502
|
-
*value =
|
|
502
|
+
*value = std::to_string(*(static_cast<const double*>(opt_address)));
|
|
503
503
|
break;
|
|
504
504
|
case OptionType::kString:
|
|
505
505
|
*value =
|
|
@@ -898,18 +898,18 @@ Status OptionTypeInfo::Parse(const ConfigOptions& config_options,
|
|
|
898
898
|
return Status::OK();
|
|
899
899
|
}
|
|
900
900
|
try {
|
|
901
|
-
void* opt_addr = static_cast<char*>(opt_ptr) + offset_;
|
|
902
901
|
const std::string& opt_value = config_options.input_strings_escaped
|
|
903
902
|
? UnescapeOptionString(value)
|
|
904
903
|
: value;
|
|
905
904
|
|
|
906
|
-
if (
|
|
905
|
+
if (opt_ptr == nullptr) {
|
|
907
906
|
return Status::NotFound("Could not find option", opt_name);
|
|
908
907
|
} else if (parse_func_ != nullptr) {
|
|
909
908
|
ConfigOptions copy = config_options;
|
|
910
909
|
copy.invoke_prepare_options = false;
|
|
910
|
+
void* opt_addr = GetOffset(opt_ptr);
|
|
911
911
|
return parse_func_(copy, opt_name, opt_value, opt_addr);
|
|
912
|
-
} else if (ParseOptionHelper(
|
|
912
|
+
} else if (ParseOptionHelper(GetOffset(opt_ptr), type_, opt_value)) {
|
|
913
913
|
return Status::OK();
|
|
914
914
|
} else if (IsConfigurable()) {
|
|
915
915
|
// The option is <config>.<name>
|
|
@@ -1021,12 +1021,12 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
|
|
|
1021
1021
|
std::string* opt_value) const {
|
|
1022
1022
|
// If the option is no longer used in rocksdb and marked as deprecated,
|
|
1023
1023
|
// we skip it in the serialization.
|
|
1024
|
-
|
|
1025
|
-
if (opt_addr == nullptr || IsDeprecated()) {
|
|
1024
|
+
if (opt_ptr == nullptr || IsDeprecated()) {
|
|
1026
1025
|
return Status::OK();
|
|
1027
1026
|
} else if (IsEnabled(OptionTypeFlags::kDontSerialize)) {
|
|
1028
1027
|
return Status::NotSupported("Cannot serialize option: ", opt_name);
|
|
1029
1028
|
} else if (serialize_func_ != nullptr) {
|
|
1029
|
+
const void* opt_addr = GetOffset(opt_ptr);
|
|
1030
1030
|
return serialize_func_(config_options, opt_name, opt_addr, opt_value);
|
|
1031
1031
|
} else if (IsCustomizable()) {
|
|
1032
1032
|
const Customizable* custom = AsRawPointer<Customizable>(opt_ptr);
|
|
@@ -1074,7 +1074,8 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
|
|
|
1074
1074
|
return Status::OK();
|
|
1075
1075
|
} else if (config_options.mutable_options_only && !IsMutable()) {
|
|
1076
1076
|
return Status::OK();
|
|
1077
|
-
} else if (SerializeSingleOptionHelper(
|
|
1077
|
+
} else if (SerializeSingleOptionHelper(GetOffset(opt_ptr), type_,
|
|
1078
|
+
opt_value)) {
|
|
1078
1079
|
return Status::OK();
|
|
1079
1080
|
} else {
|
|
1080
1081
|
return Status::InvalidArgument("Cannot serialize option: ", opt_name);
|
|
@@ -1223,39 +1224,43 @@ bool OptionTypeInfo::AreEqual(const ConfigOptions& config_options,
|
|
|
1223
1224
|
if (!config_options.IsCheckEnabled(level)) {
|
|
1224
1225
|
return true; // If the sanity level is not being checked, skip it
|
|
1225
1226
|
}
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
if (this_addr == nullptr || that_addr == nullptr) {
|
|
1229
|
-
if (this_addr == that_addr) {
|
|
1227
|
+
if (this_ptr == nullptr || that_ptr == nullptr) {
|
|
1228
|
+
if (this_ptr == that_ptr) {
|
|
1230
1229
|
return true;
|
|
1231
1230
|
}
|
|
1232
1231
|
} else if (equals_func_ != nullptr) {
|
|
1232
|
+
const void* this_addr = GetOffset(this_ptr);
|
|
1233
|
+
const void* that_addr = GetOffset(that_ptr);
|
|
1233
1234
|
if (equals_func_(config_options, opt_name, this_addr, that_addr,
|
|
1234
1235
|
mismatch)) {
|
|
1235
1236
|
return true;
|
|
1236
1237
|
}
|
|
1237
|
-
} else
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
const auto* that_config = AsRawPointer<Configurable>(that_ptr);
|
|
1242
|
-
if (this_config == that_config) {
|
|
1238
|
+
} else {
|
|
1239
|
+
const void* this_addr = GetOffset(this_ptr);
|
|
1240
|
+
const void* that_addr = GetOffset(that_ptr);
|
|
1241
|
+
if (AreOptionsEqual(type_, this_addr, that_addr)) {
|
|
1243
1242
|
return true;
|
|
1244
|
-
} else if (
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
if (
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1243
|
+
} else if (IsConfigurable()) {
|
|
1244
|
+
const auto* this_config = AsRawPointer<Configurable>(this_ptr);
|
|
1245
|
+
const auto* that_config = AsRawPointer<Configurable>(that_ptr);
|
|
1246
|
+
if (this_config == that_config) {
|
|
1247
|
+
return true;
|
|
1248
|
+
} else if (this_config != nullptr && that_config != nullptr) {
|
|
1249
|
+
std::string bad_name;
|
|
1250
|
+
bool matches;
|
|
1251
|
+
if (level < config_options.sanity_level) {
|
|
1252
|
+
ConfigOptions copy = config_options;
|
|
1253
|
+
copy.sanity_level = level;
|
|
1254
|
+
matches = this_config->AreEquivalent(copy, that_config, &bad_name);
|
|
1255
|
+
} else {
|
|
1256
|
+
matches = this_config->AreEquivalent(config_options, that_config,
|
|
1257
|
+
&bad_name);
|
|
1258
|
+
}
|
|
1259
|
+
if (!matches) {
|
|
1260
|
+
*mismatch = opt_name + "." + bad_name;
|
|
1261
|
+
}
|
|
1262
|
+
return matches;
|
|
1257
1263
|
}
|
|
1258
|
-
return matches;
|
|
1259
1264
|
}
|
|
1260
1265
|
}
|
|
1261
1266
|
if (mismatch->empty()) {
|
|
@@ -1379,6 +1384,44 @@ bool OptionTypeInfo::AreEqualByName(const ConfigOptions& config_options,
|
|
|
1379
1384
|
return (this_value == that_value);
|
|
1380
1385
|
}
|
|
1381
1386
|
|
|
1387
|
+
Status OptionTypeInfo::Prepare(const ConfigOptions& config_options,
|
|
1388
|
+
const std::string& name, void* opt_ptr) const {
|
|
1389
|
+
if (ShouldPrepare()) {
|
|
1390
|
+
if (prepare_func_ != nullptr) {
|
|
1391
|
+
void* opt_addr = GetOffset(opt_ptr);
|
|
1392
|
+
return prepare_func_(config_options, name, opt_addr);
|
|
1393
|
+
} else if (IsConfigurable()) {
|
|
1394
|
+
Configurable* config = AsRawPointer<Configurable>(opt_ptr);
|
|
1395
|
+
if (config != nullptr) {
|
|
1396
|
+
return config->PrepareOptions(config_options);
|
|
1397
|
+
} else if (!CanBeNull()) {
|
|
1398
|
+
return Status::NotFound("Missing configurable object", name);
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
return Status::OK();
|
|
1403
|
+
}
|
|
1404
|
+
|
|
1405
|
+
Status OptionTypeInfo::Validate(const DBOptions& db_opts,
|
|
1406
|
+
const ColumnFamilyOptions& cf_opts,
|
|
1407
|
+
const std::string& name,
|
|
1408
|
+
const void* opt_ptr) const {
|
|
1409
|
+
if (ShouldValidate()) {
|
|
1410
|
+
if (validate_func_ != nullptr) {
|
|
1411
|
+
const void* opt_addr = GetOffset(opt_ptr);
|
|
1412
|
+
return validate_func_(db_opts, cf_opts, name, opt_addr);
|
|
1413
|
+
} else if (IsConfigurable()) {
|
|
1414
|
+
const Configurable* config = AsRawPointer<Configurable>(opt_ptr);
|
|
1415
|
+
if (config != nullptr) {
|
|
1416
|
+
return config->ValidateOptions(db_opts, cf_opts);
|
|
1417
|
+
} else if (!CanBeNull()) {
|
|
1418
|
+
return Status::NotFound("Missing configurable object", name);
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
return Status::OK();
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1382
1425
|
const OptionTypeInfo* OptionTypeInfo::Find(
|
|
1383
1426
|
const std::string& opt_name,
|
|
1384
1427
|
const std::unordered_map<std::string, OptionTypeInfo>& opt_map,
|
|
@@ -79,16 +79,16 @@ Status PersistRocksDBOptions(const ConfigOptions& config_options_in,
|
|
|
79
79
|
|
|
80
80
|
std::string options_file_content;
|
|
81
81
|
|
|
82
|
-
s = writable->Append(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
s = writable->Append(
|
|
83
|
+
option_file_header + "[" + opt_section_titles[kOptionSectionVersion] +
|
|
84
|
+
"]\n"
|
|
85
|
+
" rocksdb_version=" +
|
|
86
|
+
std::to_string(ROCKSDB_MAJOR) + "." + std::to_string(ROCKSDB_MINOR) +
|
|
87
|
+
"." + std::to_string(ROCKSDB_PATCH) + "\n");
|
|
88
88
|
if (s.ok()) {
|
|
89
89
|
s = writable->Append(
|
|
90
|
-
" options_file_version=" +
|
|
91
|
-
|
|
90
|
+
" options_file_version=" + std::to_string(ROCKSDB_OPTION_FILE_MAJOR) +
|
|
91
|
+
"." + std::to_string(ROCKSDB_OPTION_FILE_MINOR) + "\n");
|
|
92
92
|
}
|
|
93
93
|
if (s.ok()) {
|
|
94
94
|
s = writable->Append("\n[" + opt_section_titles[kOptionSectionDBOptions] +
|
|
@@ -216,7 +216,7 @@ Status RocksDBOptionsParser::InvalidArgument(const int line_num,
|
|
|
216
216
|
const std::string& message) {
|
|
217
217
|
return Status::InvalidArgument(
|
|
218
218
|
"[RocksDBOptionsParser Error] ",
|
|
219
|
-
message + " (at line " +
|
|
219
|
+
message + " (at line " + std::to_string(line_num) + ")");
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
Status RocksDBOptionsParser::ParseStatement(std::string* name,
|
|
@@ -590,7 +590,7 @@ Status RocksDBOptionsParser::VerifyRocksDBOptionsFromFile(
|
|
|
590
590
|
return Status::InvalidArgument(
|
|
591
591
|
"[RocksDBOptionParser Error] The persisted options and the db"
|
|
592
592
|
"instance does not have the same name for column family ",
|
|
593
|
-
|
|
593
|
+
std::to_string(i));
|
|
594
594
|
}
|
|
595
595
|
}
|
|
596
596
|
|
|
@@ -34,6 +34,7 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
34
34
|
#ifndef ROCKSDB_LITE
|
|
35
35
|
#if defined OS_LINUX || defined OS_WIN
|
|
36
36
|
#ifndef __clang__
|
|
37
|
+
#ifndef ROCKSDB_UBSAN_RUN
|
|
37
38
|
|
|
38
39
|
class OptionsSettableTest : public testing::Test {
|
|
39
40
|
public:
|
|
@@ -116,7 +117,8 @@ bool CompareBytes(char* start_ptr1, char* start_ptr2, size_t total_size,
|
|
|
116
117
|
// kBbtoExcluded, and maybe add customized verification for it.
|
|
117
118
|
TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
|
|
118
119
|
// Items in the form of <offset, size>. Need to be in ascending order
|
|
119
|
-
// and not overlapping. Need to
|
|
120
|
+
// and not overlapping. Need to update if new option to be excluded is added
|
|
121
|
+
// (e.g, pointer-type)
|
|
120
122
|
const OffsetGap kBbtoExcluded = {
|
|
121
123
|
{offsetof(struct BlockBasedTableOptions, flush_block_policy_factory),
|
|
122
124
|
sizeof(std::shared_ptr<FlushBlockPolicyFactory>)},
|
|
@@ -126,6 +128,8 @@ TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
|
|
|
126
128
|
sizeof(std::shared_ptr<PersistentCache>)},
|
|
127
129
|
{offsetof(struct BlockBasedTableOptions, block_cache_compressed),
|
|
128
130
|
sizeof(std::shared_ptr<Cache>)},
|
|
131
|
+
{offsetof(struct BlockBasedTableOptions, cache_usage_options),
|
|
132
|
+
sizeof(CacheUsageOptions)},
|
|
129
133
|
{offsetof(struct BlockBasedTableOptions, filter_policy),
|
|
130
134
|
sizeof(std::shared_ptr<const FilterPolicy>)},
|
|
131
135
|
};
|
|
@@ -188,8 +192,6 @@ TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
|
|
|
188
192
|
"index_block_restart_interval=4;"
|
|
189
193
|
"filter_policy=bloomfilter:4:true;whole_key_filtering=1;detect_filter_"
|
|
190
194
|
"construct_corruption=false;"
|
|
191
|
-
"reserve_table_builder_memory=false;"
|
|
192
|
-
"reserve_table_reader_memory=false;"
|
|
193
195
|
"format_version=1;"
|
|
194
196
|
"verify_compression=true;read_amp_bytes_per_bit=0;"
|
|
195
197
|
"enable_index_compression=false;"
|
|
@@ -581,6 +583,7 @@ TEST_F(OptionsSettableTest, ColumnFamilyOptionsAllFieldsSettable) {
|
|
|
581
583
|
delete[] mcfo2_ptr;
|
|
582
584
|
delete[] cfo_clean_ptr;
|
|
583
585
|
}
|
|
586
|
+
#endif // !ROCKSDB_UBSAN_RUN
|
|
584
587
|
#endif // !__clang__
|
|
585
588
|
#endif // OS_LINUX || OS_WIN
|
|
586
589
|
#endif // !ROCKSDB_LITE
|
|
@@ -854,8 +854,6 @@ TEST_F(OptionsTest, GetBlockBasedTableOptionsFromString) {
|
|
|
854
854
|
"block_cache=1M;block_cache_compressed=1k;block_size=1024;"
|
|
855
855
|
"block_size_deviation=8;block_restart_interval=4;"
|
|
856
856
|
"format_version=5;whole_key_filtering=1;"
|
|
857
|
-
"reserve_table_builder_memory=true;"
|
|
858
|
-
"reserve_table_reader_memory=true;"
|
|
859
857
|
"filter_policy=bloomfilter:4.567:false;detect_filter_construct_"
|
|
860
858
|
"corruption=true;"
|
|
861
859
|
// A bug caused read_amp_bytes_per_bit to be a large integer in OPTIONS
|
|
@@ -877,8 +875,6 @@ TEST_F(OptionsTest, GetBlockBasedTableOptionsFromString) {
|
|
|
877
875
|
ASSERT_EQ(new_opt.format_version, 5U);
|
|
878
876
|
ASSERT_EQ(new_opt.whole_key_filtering, true);
|
|
879
877
|
ASSERT_EQ(new_opt.detect_filter_construct_corruption, true);
|
|
880
|
-
ASSERT_EQ(new_opt.reserve_table_builder_memory, true);
|
|
881
|
-
ASSERT_EQ(new_opt.reserve_table_reader_memory, true);
|
|
882
878
|
ASSERT_TRUE(new_opt.filter_policy != nullptr);
|
|
883
879
|
auto bfp = new_opt.filter_policy->CheckedCast<BloomFilterPolicy>();
|
|
884
880
|
ASSERT_NE(bfp, nullptr);
|
|
@@ -3346,31 +3342,31 @@ TEST_F(OptionsParserTest, IgnoreUnknownOptions) {
|
|
|
3346
3342
|
if (case_id == 0) {
|
|
3347
3343
|
// same version
|
|
3348
3344
|
should_ignore = false;
|
|
3349
|
-
version_string =
|
|
3350
|
-
|
|
3345
|
+
version_string = std::to_string(ROCKSDB_MAJOR) + "." +
|
|
3346
|
+
std::to_string(ROCKSDB_MINOR) + ".0";
|
|
3351
3347
|
} else if (case_id == 1) {
|
|
3352
3348
|
// higher minor version
|
|
3353
3349
|
should_ignore = true;
|
|
3354
|
-
version_string =
|
|
3355
|
-
|
|
3350
|
+
version_string = std::to_string(ROCKSDB_MAJOR) + "." +
|
|
3351
|
+
std::to_string(ROCKSDB_MINOR + 1) + ".0";
|
|
3356
3352
|
} else if (case_id == 2) {
|
|
3357
3353
|
// higher major version.
|
|
3358
3354
|
should_ignore = true;
|
|
3359
|
-
version_string =
|
|
3355
|
+
version_string = std::to_string(ROCKSDB_MAJOR + 1) + ".0.0";
|
|
3360
3356
|
} else if (case_id == 3) {
|
|
3361
3357
|
// lower minor version
|
|
3362
3358
|
#if ROCKSDB_MINOR == 0
|
|
3363
3359
|
continue;
|
|
3364
3360
|
#else
|
|
3365
|
-
version_string =
|
|
3366
|
-
|
|
3361
|
+
version_string = std::to_string(ROCKSDB_MAJOR) + "." +
|
|
3362
|
+
std::to_string(ROCKSDB_MINOR - 1) + ".0";
|
|
3367
3363
|
should_ignore = false;
|
|
3368
3364
|
#endif
|
|
3369
3365
|
} else {
|
|
3370
3366
|
// lower major version
|
|
3371
3367
|
should_ignore = false;
|
|
3372
|
-
version_string =
|
|
3373
|
-
|
|
3368
|
+
version_string = std::to_string(ROCKSDB_MAJOR - 1) + "." +
|
|
3369
|
+
std::to_string(ROCKSDB_MINOR) + ".0";
|
|
3374
3370
|
}
|
|
3375
3371
|
|
|
3376
3372
|
std::string options_file_content =
|
|
@@ -4082,9 +4078,10 @@ TEST_F(OptionsParserTest, IntegerParsing) {
|
|
|
4082
4078
|
ASSERT_EQ(ParseUint32("4294967295"), 4294967295U);
|
|
4083
4079
|
ASSERT_EQ(ParseSizeT("18446744073709551615"), 18446744073709551615U);
|
|
4084
4080
|
ASSERT_EQ(ParseInt64("9223372036854775807"), 9223372036854775807);
|
|
4085
|
-
ASSERT_EQ(ParseInt64("-9223372036854775808"),
|
|
4081
|
+
ASSERT_EQ(ParseInt64("-9223372036854775808"),
|
|
4082
|
+
std::numeric_limits<int64_t>::min());
|
|
4086
4083
|
ASSERT_EQ(ParseInt32("2147483647"), 2147483647);
|
|
4087
|
-
ASSERT_EQ(ParseInt32("-2147483648"),
|
|
4084
|
+
ASSERT_EQ(ParseInt32("-2147483648"), std::numeric_limits<int32_t>::min());
|
|
4088
4085
|
ASSERT_EQ(ParseInt("-32767"), -32767);
|
|
4089
4086
|
ASSERT_EQ(ParseDouble("-1.234567"), -1.234567);
|
|
4090
4087
|
}
|
|
@@ -4265,19 +4262,20 @@ TEST_F(OptionTypeInfoTest, TestInvalidArgs) {
|
|
|
4265
4262
|
}
|
|
4266
4263
|
|
|
4267
4264
|
TEST_F(OptionTypeInfoTest, TestParseFunc) {
|
|
4268
|
-
OptionTypeInfo opt_info(
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4265
|
+
OptionTypeInfo opt_info(0, OptionType::kUnknown,
|
|
4266
|
+
OptionVerificationType::kNormal,
|
|
4267
|
+
OptionTypeFlags::kNone);
|
|
4268
|
+
opt_info.SetParseFunc([](const ConfigOptions& /*opts*/,
|
|
4269
|
+
const std::string& name, const std::string& value,
|
|
4270
|
+
void* addr) {
|
|
4271
|
+
auto ptr = static_cast<std::string*>(addr);
|
|
4272
|
+
if (name == "Oops") {
|
|
4273
|
+
return Status::InvalidArgument(value);
|
|
4274
|
+
} else {
|
|
4275
|
+
*ptr = value + " " + name;
|
|
4276
|
+
return Status::OK();
|
|
4277
|
+
}
|
|
4278
|
+
});
|
|
4281
4279
|
ConfigOptions config_options;
|
|
4282
4280
|
std::string base;
|
|
4283
4281
|
ASSERT_OK(opt_info.Parse(config_options, "World", "Hello", &base));
|
|
@@ -4286,19 +4284,19 @@ TEST_F(OptionTypeInfoTest, TestParseFunc) {
|
|
|
4286
4284
|
}
|
|
4287
4285
|
|
|
4288
4286
|
TEST_F(OptionTypeInfoTest, TestSerializeFunc) {
|
|
4289
|
-
OptionTypeInfo opt_info(
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4287
|
+
OptionTypeInfo opt_info(0, OptionType::kString,
|
|
4288
|
+
OptionVerificationType::kNormal,
|
|
4289
|
+
OptionTypeFlags::kNone);
|
|
4290
|
+
opt_info.SetSerializeFunc([](const ConfigOptions& /*opts*/,
|
|
4291
|
+
const std::string& name, const void* /*addr*/,
|
|
4292
|
+
std::string* value) {
|
|
4293
|
+
if (name == "Oops") {
|
|
4294
|
+
return Status::InvalidArgument(name);
|
|
4295
|
+
} else {
|
|
4296
|
+
*value = name;
|
|
4297
|
+
return Status::OK();
|
|
4298
|
+
}
|
|
4299
|
+
});
|
|
4302
4300
|
ConfigOptions config_options;
|
|
4303
4301
|
std::string base;
|
|
4304
4302
|
std::string value;
|
|
@@ -4308,24 +4306,24 @@ TEST_F(OptionTypeInfoTest, TestSerializeFunc) {
|
|
|
4308
4306
|
}
|
|
4309
4307
|
|
|
4310
4308
|
TEST_F(OptionTypeInfoTest, TestEqualsFunc) {
|
|
4311
|
-
OptionTypeInfo opt_info(
|
|
4312
|
-
|
|
4313
|
-
|
|
4314
|
-
|
|
4315
|
-
|
|
4316
|
-
|
|
4317
|
-
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4309
|
+
OptionTypeInfo opt_info(0, OptionType::kInt, OptionVerificationType::kNormal,
|
|
4310
|
+
OptionTypeFlags::kNone);
|
|
4311
|
+
opt_info.SetEqualsFunc([](const ConfigOptions& /*opts*/,
|
|
4312
|
+
const std::string& name, const void* addr1,
|
|
4313
|
+
const void* addr2, std::string* mismatch) {
|
|
4314
|
+
auto i1 = *(static_cast<const int*>(addr1));
|
|
4315
|
+
auto i2 = *(static_cast<const int*>(addr2));
|
|
4316
|
+
if (name == "LT") {
|
|
4317
|
+
return i1 < i2;
|
|
4318
|
+
} else if (name == "GT") {
|
|
4319
|
+
return i1 > i2;
|
|
4320
|
+
} else if (name == "EQ") {
|
|
4321
|
+
return i1 == i2;
|
|
4322
|
+
} else {
|
|
4323
|
+
*mismatch = name + "???";
|
|
4324
|
+
return false;
|
|
4325
|
+
}
|
|
4326
|
+
});
|
|
4329
4327
|
|
|
4330
4328
|
ConfigOptions config_options;
|
|
4331
4329
|
int int1 = 100;
|
|
@@ -4341,6 +4339,64 @@ TEST_F(OptionTypeInfoTest, TestEqualsFunc) {
|
|
|
4341
4339
|
ASSERT_EQ(mismatch, "NO???");
|
|
4342
4340
|
}
|
|
4343
4341
|
|
|
4342
|
+
TEST_F(OptionTypeInfoTest, TestPrepareFunc) {
|
|
4343
|
+
OptionTypeInfo opt_info(0, OptionType::kInt, OptionVerificationType::kNormal,
|
|
4344
|
+
OptionTypeFlags::kNone);
|
|
4345
|
+
opt_info.SetPrepareFunc(
|
|
4346
|
+
[](const ConfigOptions& /*opts*/, const std::string& name, void* addr) {
|
|
4347
|
+
auto i1 = static_cast<int*>(addr);
|
|
4348
|
+
if (name == "x2") {
|
|
4349
|
+
*i1 *= 2;
|
|
4350
|
+
} else if (name == "/2") {
|
|
4351
|
+
*i1 /= 2;
|
|
4352
|
+
} else {
|
|
4353
|
+
return Status::InvalidArgument("Bad Argument", name);
|
|
4354
|
+
}
|
|
4355
|
+
return Status::OK();
|
|
4356
|
+
});
|
|
4357
|
+
ConfigOptions config_options;
|
|
4358
|
+
int int1 = 100;
|
|
4359
|
+
ASSERT_OK(opt_info.Prepare(config_options, "x2", &int1));
|
|
4360
|
+
ASSERT_EQ(int1, 200);
|
|
4361
|
+
ASSERT_OK(opt_info.Prepare(config_options, "/2", &int1));
|
|
4362
|
+
ASSERT_EQ(int1, 100);
|
|
4363
|
+
ASSERT_NOK(opt_info.Prepare(config_options, "??", &int1));
|
|
4364
|
+
ASSERT_EQ(int1, 100);
|
|
4365
|
+
}
|
|
4366
|
+
TEST_F(OptionTypeInfoTest, TestValidateFunc) {
|
|
4367
|
+
OptionTypeInfo opt_info(0, OptionType::kSizeT,
|
|
4368
|
+
OptionVerificationType::kNormal,
|
|
4369
|
+
OptionTypeFlags::kNone);
|
|
4370
|
+
opt_info.SetValidateFunc([](const DBOptions& db_opts,
|
|
4371
|
+
const ColumnFamilyOptions& cf_opts,
|
|
4372
|
+
const std::string& name, const void* addr) {
|
|
4373
|
+
const auto sz = static_cast<const size_t*>(addr);
|
|
4374
|
+
bool is_valid = false;
|
|
4375
|
+
if (name == "keep_log_file_num") {
|
|
4376
|
+
is_valid = (*sz == db_opts.keep_log_file_num);
|
|
4377
|
+
} else if (name == "write_buffer_size") {
|
|
4378
|
+
is_valid = (*sz == cf_opts.write_buffer_size);
|
|
4379
|
+
}
|
|
4380
|
+
if (is_valid) {
|
|
4381
|
+
return Status::OK();
|
|
4382
|
+
} else {
|
|
4383
|
+
return Status::InvalidArgument("Mismatched value", name);
|
|
4384
|
+
}
|
|
4385
|
+
});
|
|
4386
|
+
ConfigOptions config_options;
|
|
4387
|
+
DBOptions db_options;
|
|
4388
|
+
ColumnFamilyOptions cf_options;
|
|
4389
|
+
|
|
4390
|
+
ASSERT_OK(opt_info.Validate(db_options, cf_options, "keep_log_file_num",
|
|
4391
|
+
&db_options.keep_log_file_num));
|
|
4392
|
+
ASSERT_OK(opt_info.Validate(db_options, cf_options, "write_buffer_size",
|
|
4393
|
+
&cf_options.write_buffer_size));
|
|
4394
|
+
ASSERT_NOK(opt_info.Validate(db_options, cf_options, "keep_log_file_num",
|
|
4395
|
+
&cf_options.write_buffer_size));
|
|
4396
|
+
ASSERT_NOK(opt_info.Validate(db_options, cf_options, "write_buffer_size",
|
|
4397
|
+
&db_options.keep_log_file_num));
|
|
4398
|
+
}
|
|
4399
|
+
|
|
4344
4400
|
TEST_F(OptionTypeInfoTest, TestOptionFlags) {
|
|
4345
4401
|
OptionTypeInfo opt_none(0, OptionType::kString,
|
|
4346
4402
|
OptionVerificationType::kNormal,
|