@nxtedition/rocksdb 5.2.21 → 5.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +216 -252
- package/binding.gyp +78 -72
- package/deps/rocksdb/build_version.cc +70 -4
- package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
- package/deps/rocksdb/rocksdb/Makefile +459 -469
- package/deps/rocksdb/rocksdb/README.md +4 -4
- package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
- package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
- package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
- package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
- package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
- package/deps/rocksdb/rocksdb/db/builder.h +16 -37
- package/deps/rocksdb/rocksdb/db/c.cc +413 -208
- package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
- package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
- package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
- package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
- package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
- package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
- package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
- package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
- package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
- package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
- package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
- package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
- package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
- package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
- package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
- package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
- package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
- package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
- package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
- package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
- package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
- package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
- package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
- package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
- package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
- package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
- package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
- package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
- package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
- package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
- package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
- package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
- package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
- package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
- package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
- package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
- package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
- package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
- package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
- package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
- package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
- package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
- package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
- package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
- package/deps/rocksdb/rocksdb/env/env.cc +632 -42
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
- package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
- package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
- package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
- package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
- package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
- package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
- package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
- package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
- package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
- package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
- package/deps/rocksdb/rocksdb/file/filename.h +13 -8
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
- package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
- package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
- package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
- package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
- package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
- package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
- package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
- package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
- package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
- package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
- package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
- package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
- package/deps/rocksdb/rocksdb/options/options.cc +49 -17
- package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
- package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
- package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
- package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
- package/deps/rocksdb/rocksdb/port/lang.h +52 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
- package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
- package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
- package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
- package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
- package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
- package/deps/rocksdb/rocksdb/python.mk +9 -0
- package/deps/rocksdb/rocksdb/src.mk +82 -34
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
- package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
- package/deps/rocksdb/rocksdb/table/format.cc +258 -104
- package/deps/rocksdb/rocksdb/table/format.h +120 -109
- package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
- package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
- package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
- package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
- package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
- package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
- package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
- package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
- package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
- package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/channel.h +2 -0
- package/deps/rocksdb/rocksdb/util/coding.h +1 -33
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
- package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
- package/deps/rocksdb/rocksdb/util/compression.h +212 -7
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
- package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
- package/deps/rocksdb/rocksdb/util/defer.h +30 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
- package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
- package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
- package/deps/rocksdb/rocksdb/util/hash.h +31 -1
- package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
- package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
- package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
- package/deps/rocksdb/rocksdb/util/heap.h +6 -1
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/util/math.h +74 -7
- package/deps/rocksdb/rocksdb/util/math128.h +13 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
- package/deps/rocksdb/rocksdb/util/random.cc +9 -0
- package/deps/rocksdb/rocksdb/util/random.h +6 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
- package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
- package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
- package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
- package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
- package/deps/rocksdb/rocksdb/util/status.cc +32 -29
- package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
- package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
- package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
- package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
- package/deps/rocksdb/rocksdb/util/timer.h +55 -46
- package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
- package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
- package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
- package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
- package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
- package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
- package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
- package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
- package/deps/rocksdb/rocksdb.gyp +425 -446
- package/package.json +8 -8
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x86/node.napi.node +0 -0
- package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
- package/deps/rocksdb/rocksdb/hdfs/README +0 -23
- package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
- package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
- package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
- package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
- package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
- package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
- package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
- package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
- package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
- package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
- package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
- package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
#include <cassert>
|
|
8
8
|
#include <cctype>
|
|
9
9
|
#include <cstdlib>
|
|
10
|
+
#include <set>
|
|
10
11
|
#include <unordered_set>
|
|
11
12
|
#include <vector>
|
|
12
13
|
|
|
@@ -28,6 +29,20 @@
|
|
|
28
29
|
#include "util/string_util.h"
|
|
29
30
|
|
|
30
31
|
namespace ROCKSDB_NAMESPACE {
|
|
32
|
+
ConfigOptions::ConfigOptions()
|
|
33
|
+
#ifndef ROCKSDB_LITE
|
|
34
|
+
: registry(ObjectRegistry::NewInstance())
|
|
35
|
+
#endif
|
|
36
|
+
{
|
|
37
|
+
env = Env::Default();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
ConfigOptions::ConfigOptions(const DBOptions& db_opts) : env(db_opts.env) {
|
|
41
|
+
#ifndef ROCKSDB_LITE
|
|
42
|
+
registry = ObjectRegistry::NewInstance();
|
|
43
|
+
#endif
|
|
44
|
+
}
|
|
45
|
+
|
|
31
46
|
Status ValidateOptions(const DBOptions& db_opts,
|
|
32
47
|
const ColumnFamilyOptions& cf_opts) {
|
|
33
48
|
Status s;
|
|
@@ -51,6 +66,8 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
|
|
|
51
66
|
immutable_db_options.create_missing_column_families;
|
|
52
67
|
options.error_if_exists = immutable_db_options.error_if_exists;
|
|
53
68
|
options.paranoid_checks = immutable_db_options.paranoid_checks;
|
|
69
|
+
options.flush_verify_memtable_count =
|
|
70
|
+
immutable_db_options.flush_verify_memtable_count;
|
|
54
71
|
options.track_and_verify_wals_in_manifest =
|
|
55
72
|
immutable_db_options.track_and_verify_wals_in_manifest;
|
|
56
73
|
options.env = immutable_db_options.env;
|
|
@@ -70,8 +87,6 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
|
|
|
70
87
|
options.delete_obsolete_files_period_micros =
|
|
71
88
|
mutable_db_options.delete_obsolete_files_period_micros;
|
|
72
89
|
options.max_background_jobs = mutable_db_options.max_background_jobs;
|
|
73
|
-
options.base_background_compactions =
|
|
74
|
-
mutable_db_options.base_background_compactions;
|
|
75
90
|
options.max_background_compactions =
|
|
76
91
|
mutable_db_options.max_background_compactions;
|
|
77
92
|
options.bytes_per_sync = mutable_db_options.bytes_per_sync;
|
|
@@ -86,8 +101,8 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
|
|
|
86
101
|
options.max_manifest_file_size = immutable_db_options.max_manifest_file_size;
|
|
87
102
|
options.table_cache_numshardbits =
|
|
88
103
|
immutable_db_options.table_cache_numshardbits;
|
|
89
|
-
options.WAL_ttl_seconds = immutable_db_options.
|
|
90
|
-
options.WAL_size_limit_MB = immutable_db_options.
|
|
104
|
+
options.WAL_ttl_seconds = immutable_db_options.WAL_ttl_seconds;
|
|
105
|
+
options.WAL_size_limit_MB = immutable_db_options.WAL_size_limit_MB;
|
|
91
106
|
options.manifest_preallocation_size =
|
|
92
107
|
immutable_db_options.manifest_preallocation_size;
|
|
93
108
|
options.allow_mmap_reads = immutable_db_options.allow_mmap_reads;
|
|
@@ -108,8 +123,6 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
|
|
|
108
123
|
options.write_buffer_manager = immutable_db_options.write_buffer_manager;
|
|
109
124
|
options.access_hint_on_compaction_start =
|
|
110
125
|
immutable_db_options.access_hint_on_compaction_start;
|
|
111
|
-
options.new_table_reader_for_compaction_inputs =
|
|
112
|
-
immutable_db_options.new_table_reader_for_compaction_inputs;
|
|
113
126
|
options.compaction_readahead_size =
|
|
114
127
|
mutable_db_options.compaction_readahead_size;
|
|
115
128
|
options.random_access_max_buffer_size =
|
|
@@ -149,12 +162,10 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
|
|
|
149
162
|
immutable_db_options.avoid_flush_during_recovery;
|
|
150
163
|
options.avoid_flush_during_shutdown =
|
|
151
164
|
mutable_db_options.avoid_flush_during_shutdown;
|
|
152
|
-
options.allow_ingest_behind =
|
|
153
|
-
immutable_db_options.allow_ingest_behind;
|
|
154
|
-
options.preserve_deletes =
|
|
155
|
-
immutable_db_options.preserve_deletes;
|
|
165
|
+
options.allow_ingest_behind = immutable_db_options.allow_ingest_behind;
|
|
156
166
|
options.two_write_queues = immutable_db_options.two_write_queues;
|
|
157
167
|
options.manual_wal_flush = immutable_db_options.manual_wal_flush;
|
|
168
|
+
options.wal_compression = immutable_db_options.wal_compression;
|
|
158
169
|
options.atomic_flush = immutable_db_options.atomic_flush;
|
|
159
170
|
options.avoid_unnecessary_blocking_io =
|
|
160
171
|
immutable_db_options.avoid_unnecessary_blocking_io;
|
|
@@ -168,6 +179,9 @@ DBOptions BuildDBOptions(const ImmutableDBOptions& immutable_db_options,
|
|
|
168
179
|
immutable_db_options.bgerror_resume_retry_interval;
|
|
169
180
|
options.db_host_id = immutable_db_options.db_host_id;
|
|
170
181
|
options.allow_data_in_errors = immutable_db_options.allow_data_in_errors;
|
|
182
|
+
options.checksum_handoff_file_types =
|
|
183
|
+
immutable_db_options.checksum_handoff_file_types;
|
|
184
|
+
options.lowest_used_cache_tier = immutable_db_options.lowest_used_cache_tier;
|
|
171
185
|
return options;
|
|
172
186
|
}
|
|
173
187
|
|
|
@@ -175,85 +189,118 @@ ColumnFamilyOptions BuildColumnFamilyOptions(
|
|
|
175
189
|
const ColumnFamilyOptions& options,
|
|
176
190
|
const MutableCFOptions& mutable_cf_options) {
|
|
177
191
|
ColumnFamilyOptions cf_opts(options);
|
|
192
|
+
UpdateColumnFamilyOptions(mutable_cf_options, &cf_opts);
|
|
193
|
+
// TODO(yhchiang): find some way to handle the following derived options
|
|
194
|
+
// * max_file_size
|
|
195
|
+
return cf_opts;
|
|
196
|
+
}
|
|
178
197
|
|
|
198
|
+
void UpdateColumnFamilyOptions(const MutableCFOptions& moptions,
|
|
199
|
+
ColumnFamilyOptions* cf_opts) {
|
|
179
200
|
// Memtable related options
|
|
180
|
-
cf_opts
|
|
181
|
-
cf_opts
|
|
182
|
-
cf_opts
|
|
183
|
-
cf_opts
|
|
184
|
-
|
|
185
|
-
cf_opts
|
|
186
|
-
|
|
187
|
-
cf_opts
|
|
188
|
-
cf_opts
|
|
189
|
-
cf_opts
|
|
190
|
-
mutable_cf_options.inplace_update_num_locks;
|
|
191
|
-
cf_opts.prefix_extractor = mutable_cf_options.prefix_extractor;
|
|
201
|
+
cf_opts->write_buffer_size = moptions.write_buffer_size;
|
|
202
|
+
cf_opts->max_write_buffer_number = moptions.max_write_buffer_number;
|
|
203
|
+
cf_opts->arena_block_size = moptions.arena_block_size;
|
|
204
|
+
cf_opts->memtable_prefix_bloom_size_ratio =
|
|
205
|
+
moptions.memtable_prefix_bloom_size_ratio;
|
|
206
|
+
cf_opts->memtable_whole_key_filtering = moptions.memtable_whole_key_filtering;
|
|
207
|
+
cf_opts->memtable_huge_page_size = moptions.memtable_huge_page_size;
|
|
208
|
+
cf_opts->max_successive_merges = moptions.max_successive_merges;
|
|
209
|
+
cf_opts->inplace_update_num_locks = moptions.inplace_update_num_locks;
|
|
210
|
+
cf_opts->prefix_extractor = moptions.prefix_extractor;
|
|
192
211
|
|
|
193
212
|
// Compaction related options
|
|
194
|
-
cf_opts
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
cf_opts
|
|
205
|
-
|
|
206
|
-
cf_opts
|
|
207
|
-
cf_opts
|
|
208
|
-
cf_opts
|
|
209
|
-
|
|
210
|
-
cf_opts
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
mutable_cf_options.periodic_compaction_seconds;
|
|
217
|
-
|
|
218
|
-
cf_opts.max_bytes_for_level_multiplier_additional.clear();
|
|
219
|
-
for (auto value :
|
|
220
|
-
mutable_cf_options.max_bytes_for_level_multiplier_additional) {
|
|
221
|
-
cf_opts.max_bytes_for_level_multiplier_additional.emplace_back(value);
|
|
213
|
+
cf_opts->disable_auto_compactions = moptions.disable_auto_compactions;
|
|
214
|
+
cf_opts->soft_pending_compaction_bytes_limit =
|
|
215
|
+
moptions.soft_pending_compaction_bytes_limit;
|
|
216
|
+
cf_opts->hard_pending_compaction_bytes_limit =
|
|
217
|
+
moptions.hard_pending_compaction_bytes_limit;
|
|
218
|
+
cf_opts->level0_file_num_compaction_trigger =
|
|
219
|
+
moptions.level0_file_num_compaction_trigger;
|
|
220
|
+
cf_opts->level0_slowdown_writes_trigger =
|
|
221
|
+
moptions.level0_slowdown_writes_trigger;
|
|
222
|
+
cf_opts->level0_stop_writes_trigger = moptions.level0_stop_writes_trigger;
|
|
223
|
+
cf_opts->max_compaction_bytes = moptions.max_compaction_bytes;
|
|
224
|
+
cf_opts->target_file_size_base = moptions.target_file_size_base;
|
|
225
|
+
cf_opts->target_file_size_multiplier = moptions.target_file_size_multiplier;
|
|
226
|
+
cf_opts->max_bytes_for_level_base = moptions.max_bytes_for_level_base;
|
|
227
|
+
cf_opts->max_bytes_for_level_multiplier =
|
|
228
|
+
moptions.max_bytes_for_level_multiplier;
|
|
229
|
+
cf_opts->ttl = moptions.ttl;
|
|
230
|
+
cf_opts->periodic_compaction_seconds = moptions.periodic_compaction_seconds;
|
|
231
|
+
|
|
232
|
+
cf_opts->max_bytes_for_level_multiplier_additional.clear();
|
|
233
|
+
for (auto value : moptions.max_bytes_for_level_multiplier_additional) {
|
|
234
|
+
cf_opts->max_bytes_for_level_multiplier_additional.emplace_back(value);
|
|
222
235
|
}
|
|
223
236
|
|
|
224
|
-
cf_opts
|
|
225
|
-
cf_opts
|
|
226
|
-
mutable_cf_options.compaction_options_universal;
|
|
237
|
+
cf_opts->compaction_options_fifo = moptions.compaction_options_fifo;
|
|
238
|
+
cf_opts->compaction_options_universal = moptions.compaction_options_universal;
|
|
227
239
|
|
|
228
240
|
// Blob file related options
|
|
229
|
-
cf_opts
|
|
230
|
-
cf_opts
|
|
231
|
-
cf_opts
|
|
232
|
-
cf_opts
|
|
233
|
-
cf_opts
|
|
234
|
-
|
|
235
|
-
cf_opts
|
|
236
|
-
|
|
241
|
+
cf_opts->enable_blob_files = moptions.enable_blob_files;
|
|
242
|
+
cf_opts->min_blob_size = moptions.min_blob_size;
|
|
243
|
+
cf_opts->blob_file_size = moptions.blob_file_size;
|
|
244
|
+
cf_opts->blob_compression_type = moptions.blob_compression_type;
|
|
245
|
+
cf_opts->enable_blob_garbage_collection =
|
|
246
|
+
moptions.enable_blob_garbage_collection;
|
|
247
|
+
cf_opts->blob_garbage_collection_age_cutoff =
|
|
248
|
+
moptions.blob_garbage_collection_age_cutoff;
|
|
249
|
+
cf_opts->blob_garbage_collection_force_threshold =
|
|
250
|
+
moptions.blob_garbage_collection_force_threshold;
|
|
251
|
+
cf_opts->blob_compaction_readahead_size =
|
|
252
|
+
moptions.blob_compaction_readahead_size;
|
|
237
253
|
|
|
238
254
|
// Misc options
|
|
239
|
-
cf_opts
|
|
240
|
-
|
|
241
|
-
cf_opts
|
|
242
|
-
|
|
243
|
-
cf_opts
|
|
244
|
-
cf_opts
|
|
245
|
-
cf_opts
|
|
246
|
-
cf_opts
|
|
247
|
-
cf_opts
|
|
248
|
-
cf_opts
|
|
249
|
-
|
|
250
|
-
cf_opts
|
|
251
|
-
|
|
252
|
-
|
|
255
|
+
cf_opts->max_sequential_skip_in_iterations =
|
|
256
|
+
moptions.max_sequential_skip_in_iterations;
|
|
257
|
+
cf_opts->check_flush_compaction_key_order =
|
|
258
|
+
moptions.check_flush_compaction_key_order;
|
|
259
|
+
cf_opts->paranoid_file_checks = moptions.paranoid_file_checks;
|
|
260
|
+
cf_opts->report_bg_io_stats = moptions.report_bg_io_stats;
|
|
261
|
+
cf_opts->compression = moptions.compression;
|
|
262
|
+
cf_opts->compression_opts = moptions.compression_opts;
|
|
263
|
+
cf_opts->bottommost_compression = moptions.bottommost_compression;
|
|
264
|
+
cf_opts->bottommost_compression_opts = moptions.bottommost_compression_opts;
|
|
265
|
+
cf_opts->sample_for_compression = moptions.sample_for_compression;
|
|
266
|
+
cf_opts->compression_per_level = moptions.compression_per_level;
|
|
267
|
+
cf_opts->bottommost_temperature = moptions.bottommost_temperature;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
void UpdateColumnFamilyOptions(const ImmutableCFOptions& ioptions,
|
|
271
|
+
ColumnFamilyOptions* cf_opts) {
|
|
272
|
+
cf_opts->compaction_style = ioptions.compaction_style;
|
|
273
|
+
cf_opts->compaction_pri = ioptions.compaction_pri;
|
|
274
|
+
cf_opts->comparator = ioptions.user_comparator;
|
|
275
|
+
cf_opts->merge_operator = ioptions.merge_operator;
|
|
276
|
+
cf_opts->compaction_filter = ioptions.compaction_filter;
|
|
277
|
+
cf_opts->compaction_filter_factory = ioptions.compaction_filter_factory;
|
|
278
|
+
cf_opts->min_write_buffer_number_to_merge =
|
|
279
|
+
ioptions.min_write_buffer_number_to_merge;
|
|
280
|
+
cf_opts->max_write_buffer_number_to_maintain =
|
|
281
|
+
ioptions.max_write_buffer_number_to_maintain;
|
|
282
|
+
cf_opts->max_write_buffer_size_to_maintain =
|
|
283
|
+
ioptions.max_write_buffer_size_to_maintain;
|
|
284
|
+
cf_opts->inplace_update_support = ioptions.inplace_update_support;
|
|
285
|
+
cf_opts->inplace_callback = ioptions.inplace_callback;
|
|
286
|
+
cf_opts->memtable_factory = ioptions.memtable_factory;
|
|
287
|
+
cf_opts->table_factory = ioptions.table_factory;
|
|
288
|
+
cf_opts->table_properties_collector_factories =
|
|
289
|
+
ioptions.table_properties_collector_factories;
|
|
290
|
+
cf_opts->bloom_locality = ioptions.bloom_locality;
|
|
291
|
+
cf_opts->level_compaction_dynamic_level_bytes =
|
|
292
|
+
ioptions.level_compaction_dynamic_level_bytes;
|
|
293
|
+
cf_opts->num_levels = ioptions.num_levels;
|
|
294
|
+
cf_opts->optimize_filters_for_hits = ioptions.optimize_filters_for_hits;
|
|
295
|
+
cf_opts->force_consistency_checks = ioptions.force_consistency_checks;
|
|
296
|
+
cf_opts->memtable_insert_with_hint_prefix_extractor =
|
|
297
|
+
ioptions.memtable_insert_with_hint_prefix_extractor;
|
|
298
|
+
cf_opts->cf_paths = ioptions.cf_paths;
|
|
299
|
+
cf_opts->compaction_thread_limiter = ioptions.compaction_thread_limiter;
|
|
300
|
+
cf_opts->sst_partitioner_factory = ioptions.sst_partitioner_factory;
|
|
301
|
+
|
|
253
302
|
// TODO(yhchiang): find some way to handle the following derived options
|
|
254
303
|
// * max_file_size
|
|
255
|
-
|
|
256
|
-
return cf_opts;
|
|
257
304
|
}
|
|
258
305
|
|
|
259
306
|
std::map<CompactionStyle, std::string>
|
|
@@ -274,11 +321,18 @@ std::map<CompactionStopStyle, std::string>
|
|
|
274
321
|
{kCompactionStopStyleSimilarSize, "kCompactionStopStyleSimilarSize"},
|
|
275
322
|
{kCompactionStopStyleTotalSize, "kCompactionStopStyleTotalSize"}};
|
|
276
323
|
|
|
324
|
+
std::map<Temperature, std::string> OptionsHelper::temperature_to_string = {
|
|
325
|
+
{Temperature::kUnknown, "kUnknown"},
|
|
326
|
+
{Temperature::kHot, "kHot"},
|
|
327
|
+
{Temperature::kWarm, "kWarm"},
|
|
328
|
+
{Temperature::kCold, "kCold"}};
|
|
329
|
+
|
|
277
330
|
std::unordered_map<std::string, ChecksumType>
|
|
278
331
|
OptionsHelper::checksum_type_string_map = {{"kNoChecksum", kNoChecksum},
|
|
279
332
|
{"kCRC32c", kCRC32c},
|
|
280
333
|
{"kxxHash", kxxHash},
|
|
281
|
-
{"kxxHash64", kxxHash64}
|
|
334
|
+
{"kxxHash64", kxxHash64},
|
|
335
|
+
{"kXXH3", kXXH3}};
|
|
282
336
|
|
|
283
337
|
std::unordered_map<std::string, CompressionType>
|
|
284
338
|
OptionsHelper::compression_type_string_map = {
|
|
@@ -294,288 +348,198 @@ std::unordered_map<std::string, CompressionType>
|
|
|
294
348
|
{"kDisableCompressionOption", kDisableCompressionOption}};
|
|
295
349
|
|
|
296
350
|
std::vector<CompressionType> GetSupportedCompressions() {
|
|
297
|
-
std::
|
|
351
|
+
// std::set internally to deduplicate potential name aliases
|
|
352
|
+
std::set<CompressionType> supported_compressions;
|
|
298
353
|
for (const auto& comp_to_name : OptionsHelper::compression_type_string_map) {
|
|
299
354
|
CompressionType t = comp_to_name.second;
|
|
300
355
|
if (t != kDisableCompressionOption && CompressionTypeSupported(t)) {
|
|
301
|
-
supported_compressions.
|
|
356
|
+
supported_compressions.insert(t);
|
|
302
357
|
}
|
|
303
358
|
}
|
|
304
|
-
return supported_compressions
|
|
359
|
+
return std::vector<CompressionType>(supported_compressions.begin(),
|
|
360
|
+
supported_compressions.end());
|
|
305
361
|
}
|
|
306
362
|
|
|
307
363
|
std::vector<CompressionType> GetSupportedDictCompressions() {
|
|
308
|
-
std::
|
|
364
|
+
std::set<CompressionType> dict_compression_types;
|
|
309
365
|
for (const auto& comp_to_name : OptionsHelper::compression_type_string_map) {
|
|
310
366
|
CompressionType t = comp_to_name.second;
|
|
311
367
|
if (t != kDisableCompressionOption && DictCompressionTypeSupported(t)) {
|
|
312
|
-
dict_compression_types.
|
|
368
|
+
dict_compression_types.insert(t);
|
|
313
369
|
}
|
|
314
370
|
}
|
|
315
|
-
return dict_compression_types
|
|
371
|
+
return std::vector<CompressionType>(dict_compression_types.begin(),
|
|
372
|
+
dict_compression_types.end());
|
|
316
373
|
}
|
|
317
374
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
std::shared_ptr<const SliceTransform>* slice_transform) {
|
|
323
|
-
const char* no_op_name = "rocksdb.Noop";
|
|
324
|
-
size_t no_op_length = strlen(no_op_name);
|
|
325
|
-
auto& pe_value = value;
|
|
326
|
-
if (pe_value.size() > kFixedPrefixName.size() &&
|
|
327
|
-
pe_value.compare(0, kFixedPrefixName.size(), kFixedPrefixName) == 0) {
|
|
328
|
-
int prefix_length = ParseInt(trim(value.substr(kFixedPrefixName.size())));
|
|
329
|
-
slice_transform->reset(NewFixedPrefixTransform(prefix_length));
|
|
330
|
-
} else if (pe_value.size() > kCappedPrefixName.size() &&
|
|
331
|
-
pe_value.compare(0, kCappedPrefixName.size(), kCappedPrefixName) ==
|
|
332
|
-
0) {
|
|
333
|
-
int prefix_length =
|
|
334
|
-
ParseInt(trim(pe_value.substr(kCappedPrefixName.size())));
|
|
335
|
-
slice_transform->reset(NewCappedPrefixTransform(prefix_length));
|
|
336
|
-
} else if (pe_value.size() == no_op_length &&
|
|
337
|
-
pe_value.compare(0, no_op_length, no_op_name) == 0) {
|
|
338
|
-
const SliceTransform* no_op_transform = NewNoopTransform();
|
|
339
|
-
slice_transform->reset(no_op_transform);
|
|
340
|
-
} else if (value == kNullptrString) {
|
|
341
|
-
slice_transform->reset();
|
|
342
|
-
} else {
|
|
343
|
-
return false;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
return true;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
bool ParseSliceTransform(
|
|
350
|
-
const std::string& value,
|
|
351
|
-
std::shared_ptr<const SliceTransform>* slice_transform) {
|
|
352
|
-
// While we normally don't convert the string representation of a
|
|
353
|
-
// pointer-typed option into its instance, here we do so for backward
|
|
354
|
-
// compatibility as we allow this action in SetOption().
|
|
355
|
-
|
|
356
|
-
// TODO(yhchiang): A possible better place for these serialization /
|
|
357
|
-
// deserialization is inside the class definition of pointer-typed
|
|
358
|
-
// option itself, but this requires a bigger change of public API.
|
|
359
|
-
bool result =
|
|
360
|
-
ParseSliceTransformHelper("fixed:", "capped:", value, slice_transform);
|
|
361
|
-
if (result) {
|
|
362
|
-
return result;
|
|
363
|
-
}
|
|
364
|
-
result = ParseSliceTransformHelper(
|
|
365
|
-
"rocksdb.FixedPrefix.", "rocksdb.CappedPrefix.", value, slice_transform);
|
|
366
|
-
if (result) {
|
|
367
|
-
return result;
|
|
375
|
+
std::vector<ChecksumType> GetSupportedChecksums() {
|
|
376
|
+
std::set<ChecksumType> checksum_types;
|
|
377
|
+
for (const auto& e : OptionsHelper::checksum_type_string_map) {
|
|
378
|
+
checksum_types.insert(e.second);
|
|
368
379
|
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
return false;
|
|
380
|
+
return std::vector<ChecksumType>(checksum_types.begin(),
|
|
381
|
+
checksum_types.end());
|
|
372
382
|
}
|
|
373
383
|
|
|
374
|
-
|
|
384
|
+
#ifndef ROCKSDB_LITE
|
|
385
|
+
static bool ParseOptionHelper(void* opt_address, const OptionType& opt_type,
|
|
375
386
|
const std::string& value) {
|
|
376
387
|
switch (opt_type) {
|
|
377
388
|
case OptionType::kBoolean:
|
|
378
|
-
*
|
|
389
|
+
*static_cast<bool*>(opt_address) = ParseBoolean("", value);
|
|
379
390
|
break;
|
|
380
391
|
case OptionType::kInt:
|
|
381
|
-
*
|
|
392
|
+
*static_cast<int*>(opt_address) = ParseInt(value);
|
|
382
393
|
break;
|
|
383
394
|
case OptionType::kInt32T:
|
|
384
|
-
*
|
|
395
|
+
*static_cast<int32_t*>(opt_address) = ParseInt32(value);
|
|
385
396
|
break;
|
|
386
397
|
case OptionType::kInt64T:
|
|
387
|
-
PutUnaligned(
|
|
398
|
+
PutUnaligned(static_cast<int64_t*>(opt_address), ParseInt64(value));
|
|
388
399
|
break;
|
|
389
400
|
case OptionType::kUInt:
|
|
390
|
-
*
|
|
401
|
+
*static_cast<unsigned int*>(opt_address) = ParseUint32(value);
|
|
402
|
+
break;
|
|
403
|
+
case OptionType::kUInt8T:
|
|
404
|
+
*static_cast<uint8_t*>(opt_address) = ParseUint8(value);
|
|
391
405
|
break;
|
|
392
406
|
case OptionType::kUInt32T:
|
|
393
|
-
*
|
|
407
|
+
*static_cast<uint32_t*>(opt_address) = ParseUint32(value);
|
|
394
408
|
break;
|
|
395
409
|
case OptionType::kUInt64T:
|
|
396
|
-
PutUnaligned(
|
|
410
|
+
PutUnaligned(static_cast<uint64_t*>(opt_address), ParseUint64(value));
|
|
397
411
|
break;
|
|
398
412
|
case OptionType::kSizeT:
|
|
399
|
-
PutUnaligned(
|
|
413
|
+
PutUnaligned(static_cast<size_t*>(opt_address), ParseSizeT(value));
|
|
400
414
|
break;
|
|
401
415
|
case OptionType::kString:
|
|
402
|
-
*
|
|
416
|
+
*static_cast<std::string*>(opt_address) = value;
|
|
403
417
|
break;
|
|
404
418
|
case OptionType::kDouble:
|
|
405
|
-
*
|
|
419
|
+
*static_cast<double*>(opt_address) = ParseDouble(value);
|
|
406
420
|
break;
|
|
407
421
|
case OptionType::kCompactionStyle:
|
|
408
422
|
return ParseEnum<CompactionStyle>(
|
|
409
423
|
compaction_style_string_map, value,
|
|
410
|
-
|
|
424
|
+
static_cast<CompactionStyle*>(opt_address));
|
|
411
425
|
case OptionType::kCompactionPri:
|
|
412
|
-
return ParseEnum<CompactionPri>(
|
|
413
|
-
|
|
414
|
-
reinterpret_cast<CompactionPri*>(opt_address));
|
|
426
|
+
return ParseEnum<CompactionPri>(compaction_pri_string_map, value,
|
|
427
|
+
static_cast<CompactionPri*>(opt_address));
|
|
415
428
|
case OptionType::kCompressionType:
|
|
416
429
|
return ParseEnum<CompressionType>(
|
|
417
430
|
compression_type_string_map, value,
|
|
418
|
-
|
|
419
|
-
case OptionType::kSliceTransform:
|
|
420
|
-
return ParseSliceTransform(
|
|
421
|
-
value, reinterpret_cast<std::shared_ptr<const SliceTransform>*>(
|
|
422
|
-
opt_address));
|
|
431
|
+
static_cast<CompressionType*>(opt_address));
|
|
423
432
|
case OptionType::kChecksumType:
|
|
424
|
-
return ParseEnum<ChecksumType>(
|
|
425
|
-
|
|
426
|
-
reinterpret_cast<ChecksumType*>(opt_address));
|
|
433
|
+
return ParseEnum<ChecksumType>(checksum_type_string_map, value,
|
|
434
|
+
static_cast<ChecksumType*>(opt_address));
|
|
427
435
|
case OptionType::kEncodingType:
|
|
428
|
-
return ParseEnum<EncodingType>(
|
|
429
|
-
|
|
430
|
-
reinterpret_cast<EncodingType*>(opt_address));
|
|
436
|
+
return ParseEnum<EncodingType>(encoding_type_string_map, value,
|
|
437
|
+
static_cast<EncodingType*>(opt_address));
|
|
431
438
|
case OptionType::kCompactionStopStyle:
|
|
432
439
|
return ParseEnum<CompactionStopStyle>(
|
|
433
440
|
compaction_stop_style_string_map, value,
|
|
434
|
-
|
|
441
|
+
static_cast<CompactionStopStyle*>(opt_address));
|
|
442
|
+
case OptionType::kEncodedString: {
|
|
443
|
+
std::string* output_addr = static_cast<std::string*>(opt_address);
|
|
444
|
+
(Slice(value)).DecodeHex(output_addr);
|
|
445
|
+
break;
|
|
446
|
+
}
|
|
447
|
+
case OptionType::kTemperature: {
|
|
448
|
+
return ParseEnum<Temperature>(temperature_string_map, value,
|
|
449
|
+
static_cast<Temperature*>(opt_address));
|
|
450
|
+
}
|
|
435
451
|
default:
|
|
436
452
|
return false;
|
|
437
453
|
}
|
|
438
454
|
return true;
|
|
439
455
|
}
|
|
440
456
|
|
|
441
|
-
bool SerializeSingleOptionHelper(const
|
|
457
|
+
bool SerializeSingleOptionHelper(const void* opt_address,
|
|
442
458
|
const OptionType opt_type,
|
|
443
459
|
std::string* value) {
|
|
444
|
-
|
|
445
460
|
assert(value);
|
|
446
461
|
switch (opt_type) {
|
|
447
462
|
case OptionType::kBoolean:
|
|
448
|
-
*value = *(
|
|
463
|
+
*value = *(static_cast<const bool*>(opt_address)) ? "true" : "false";
|
|
449
464
|
break;
|
|
450
465
|
case OptionType::kInt:
|
|
451
|
-
*value = ToString(*(
|
|
466
|
+
*value = ToString(*(static_cast<const int*>(opt_address)));
|
|
452
467
|
break;
|
|
453
468
|
case OptionType::kInt32T:
|
|
454
|
-
*value = ToString(*(
|
|
469
|
+
*value = ToString(*(static_cast<const int32_t*>(opt_address)));
|
|
455
470
|
break;
|
|
456
471
|
case OptionType::kInt64T:
|
|
457
472
|
{
|
|
458
473
|
int64_t v;
|
|
459
|
-
GetUnaligned(
|
|
474
|
+
GetUnaligned(static_cast<const int64_t*>(opt_address), &v);
|
|
460
475
|
*value = ToString(v);
|
|
461
476
|
}
|
|
462
477
|
break;
|
|
463
478
|
case OptionType::kUInt:
|
|
464
|
-
*value = ToString(*(
|
|
479
|
+
*value = ToString(*(static_cast<const unsigned int*>(opt_address)));
|
|
480
|
+
break;
|
|
481
|
+
case OptionType::kUInt8T:
|
|
482
|
+
*value = ToString(*(static_cast<const uint8_t*>(opt_address)));
|
|
465
483
|
break;
|
|
466
484
|
case OptionType::kUInt32T:
|
|
467
|
-
*value = ToString(*(
|
|
485
|
+
*value = ToString(*(static_cast<const uint32_t*>(opt_address)));
|
|
468
486
|
break;
|
|
469
487
|
case OptionType::kUInt64T:
|
|
470
488
|
{
|
|
471
489
|
uint64_t v;
|
|
472
|
-
GetUnaligned(
|
|
490
|
+
GetUnaligned(static_cast<const uint64_t*>(opt_address), &v);
|
|
473
491
|
*value = ToString(v);
|
|
474
492
|
}
|
|
475
493
|
break;
|
|
476
494
|
case OptionType::kSizeT:
|
|
477
495
|
{
|
|
478
496
|
size_t v;
|
|
479
|
-
GetUnaligned(
|
|
497
|
+
GetUnaligned(static_cast<const size_t*>(opt_address), &v);
|
|
480
498
|
*value = ToString(v);
|
|
481
499
|
}
|
|
482
500
|
break;
|
|
483
501
|
case OptionType::kDouble:
|
|
484
|
-
*value = ToString(*(
|
|
502
|
+
*value = ToString(*(static_cast<const double*>(opt_address)));
|
|
485
503
|
break;
|
|
486
504
|
case OptionType::kString:
|
|
487
|
-
*value =
|
|
488
|
-
*(
|
|
505
|
+
*value =
|
|
506
|
+
EscapeOptionString(*(static_cast<const std::string*>(opt_address)));
|
|
489
507
|
break;
|
|
490
508
|
case OptionType::kCompactionStyle:
|
|
491
509
|
return SerializeEnum<CompactionStyle>(
|
|
492
510
|
compaction_style_string_map,
|
|
493
|
-
*(
|
|
511
|
+
*(static_cast<const CompactionStyle*>(opt_address)), value);
|
|
494
512
|
case OptionType::kCompactionPri:
|
|
495
513
|
return SerializeEnum<CompactionPri>(
|
|
496
514
|
compaction_pri_string_map,
|
|
497
|
-
*(
|
|
515
|
+
*(static_cast<const CompactionPri*>(opt_address)), value);
|
|
498
516
|
case OptionType::kCompressionType:
|
|
499
517
|
return SerializeEnum<CompressionType>(
|
|
500
518
|
compression_type_string_map,
|
|
501
|
-
*(
|
|
502
|
-
case OptionType::kSliceTransform: {
|
|
503
|
-
const auto* slice_transform_ptr =
|
|
504
|
-
reinterpret_cast<const std::shared_ptr<const SliceTransform>*>(
|
|
505
|
-
opt_address);
|
|
506
|
-
*value = slice_transform_ptr->get() ? slice_transform_ptr->get()->Name()
|
|
507
|
-
: kNullptrString;
|
|
508
|
-
break;
|
|
509
|
-
}
|
|
510
|
-
case OptionType::kComparator: {
|
|
511
|
-
// it's a const pointer of const Comparator*
|
|
512
|
-
const auto* ptr = reinterpret_cast<const Comparator* const*>(opt_address);
|
|
513
|
-
// Since the user-specified comparator will be wrapped by
|
|
514
|
-
// InternalKeyComparator, we should persist the user-specified one
|
|
515
|
-
// instead of InternalKeyComparator.
|
|
516
|
-
if (*ptr == nullptr) {
|
|
517
|
-
*value = kNullptrString;
|
|
518
|
-
} else {
|
|
519
|
-
const Comparator* root_comp = (*ptr)->GetRootComparator();
|
|
520
|
-
if (root_comp == nullptr) {
|
|
521
|
-
root_comp = (*ptr);
|
|
522
|
-
}
|
|
523
|
-
*value = root_comp->Name();
|
|
524
|
-
}
|
|
525
|
-
break;
|
|
526
|
-
}
|
|
527
|
-
case OptionType::kCompactionFilter: {
|
|
528
|
-
// it's a const pointer of const CompactionFilter*
|
|
529
|
-
const auto* ptr =
|
|
530
|
-
reinterpret_cast<const CompactionFilter* const*>(opt_address);
|
|
531
|
-
*value = *ptr ? (*ptr)->Name() : kNullptrString;
|
|
532
|
-
break;
|
|
533
|
-
}
|
|
534
|
-
case OptionType::kCompactionFilterFactory: {
|
|
535
|
-
const auto* ptr =
|
|
536
|
-
reinterpret_cast<const std::shared_ptr<CompactionFilterFactory>*>(
|
|
537
|
-
opt_address);
|
|
538
|
-
*value = ptr->get() ? ptr->get()->Name() : kNullptrString;
|
|
539
|
-
break;
|
|
540
|
-
}
|
|
541
|
-
case OptionType::kMemTableRepFactory: {
|
|
542
|
-
const auto* ptr =
|
|
543
|
-
reinterpret_cast<const std::shared_ptr<MemTableRepFactory>*>(
|
|
544
|
-
opt_address);
|
|
545
|
-
*value = ptr->get() ? ptr->get()->Name() : kNullptrString;
|
|
546
|
-
break;
|
|
547
|
-
}
|
|
548
|
-
case OptionType::kMergeOperator: {
|
|
549
|
-
const auto* ptr =
|
|
550
|
-
reinterpret_cast<const std::shared_ptr<MergeOperator>*>(opt_address);
|
|
551
|
-
*value = ptr->get() ? ptr->get()->Name() : kNullptrString;
|
|
552
|
-
break;
|
|
553
|
-
}
|
|
554
|
-
case OptionType::kFilterPolicy: {
|
|
555
|
-
const auto* ptr =
|
|
556
|
-
reinterpret_cast<const std::shared_ptr<FilterPolicy>*>(opt_address);
|
|
557
|
-
*value = ptr->get() ? ptr->get()->Name() : kNullptrString;
|
|
519
|
+
*(static_cast<const CompressionType*>(opt_address)), value);
|
|
558
520
|
break;
|
|
559
|
-
}
|
|
560
521
|
case OptionType::kChecksumType:
|
|
561
522
|
return SerializeEnum<ChecksumType>(
|
|
562
523
|
checksum_type_string_map,
|
|
563
|
-
*
|
|
564
|
-
case OptionType::kFlushBlockPolicyFactory: {
|
|
565
|
-
const auto* ptr =
|
|
566
|
-
reinterpret_cast<const std::shared_ptr<FlushBlockPolicyFactory>*>(
|
|
567
|
-
opt_address);
|
|
568
|
-
*value = ptr->get() ? ptr->get()->Name() : kNullptrString;
|
|
569
|
-
break;
|
|
570
|
-
}
|
|
524
|
+
*static_cast<const ChecksumType*>(opt_address), value);
|
|
571
525
|
case OptionType::kEncodingType:
|
|
572
526
|
return SerializeEnum<EncodingType>(
|
|
573
527
|
encoding_type_string_map,
|
|
574
|
-
*
|
|
528
|
+
*static_cast<const EncodingType*>(opt_address), value);
|
|
575
529
|
case OptionType::kCompactionStopStyle:
|
|
576
530
|
return SerializeEnum<CompactionStopStyle>(
|
|
577
531
|
compaction_stop_style_string_map,
|
|
578
|
-
*
|
|
532
|
+
*static_cast<const CompactionStopStyle*>(opt_address), value);
|
|
533
|
+
case OptionType::kEncodedString: {
|
|
534
|
+
const auto* ptr = static_cast<const std::string*>(opt_address);
|
|
535
|
+
*value = (Slice(*ptr)).ToString(true);
|
|
536
|
+
break;
|
|
537
|
+
}
|
|
538
|
+
case OptionType::kTemperature: {
|
|
539
|
+
return SerializeEnum<Temperature>(
|
|
540
|
+
temperature_string_map, *static_cast<const Temperature*>(opt_address),
|
|
541
|
+
value);
|
|
542
|
+
}
|
|
579
543
|
default:
|
|
580
544
|
return false;
|
|
581
545
|
}
|
|
@@ -594,32 +558,6 @@ Status ConfigureFromMap(
|
|
|
594
558
|
return s;
|
|
595
559
|
}
|
|
596
560
|
|
|
597
|
-
Status GetMutableOptionsFromStrings(
|
|
598
|
-
const MutableCFOptions& base_options,
|
|
599
|
-
const std::unordered_map<std::string, std::string>& options_map,
|
|
600
|
-
Logger* /*info_log*/, MutableCFOptions* new_options) {
|
|
601
|
-
assert(new_options);
|
|
602
|
-
*new_options = base_options;
|
|
603
|
-
ConfigOptions config_options;
|
|
604
|
-
const auto config = CFOptionsAsConfigurable(base_options);
|
|
605
|
-
return ConfigureFromMap<MutableCFOptions>(config_options, options_map,
|
|
606
|
-
MutableCFOptions::kName(),
|
|
607
|
-
config.get(), new_options);
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
Status GetMutableDBOptionsFromStrings(
|
|
611
|
-
const MutableDBOptions& base_options,
|
|
612
|
-
const std::unordered_map<std::string, std::string>& options_map,
|
|
613
|
-
MutableDBOptions* new_options) {
|
|
614
|
-
assert(new_options);
|
|
615
|
-
*new_options = base_options;
|
|
616
|
-
ConfigOptions config_options;
|
|
617
|
-
|
|
618
|
-
auto config = DBOptionsAsConfigurable(base_options);
|
|
619
|
-
return ConfigureFromMap<MutableDBOptions>(config_options, options_map,
|
|
620
|
-
MutableDBOptions::kName(),
|
|
621
|
-
config.get(), new_options);
|
|
622
|
-
}
|
|
623
561
|
|
|
624
562
|
Status StringToMap(const std::string& opts_str,
|
|
625
563
|
std::unordered_map<std::string, std::string>* opts_map) {
|
|
@@ -635,10 +573,13 @@ Status StringToMap(const std::string& opts_str,
|
|
|
635
573
|
}
|
|
636
574
|
|
|
637
575
|
while (pos < opts.size()) {
|
|
638
|
-
size_t eq_pos = opts.
|
|
576
|
+
size_t eq_pos = opts.find_first_of("={};", pos);
|
|
639
577
|
if (eq_pos == std::string::npos) {
|
|
640
578
|
return Status::InvalidArgument("Mismatched key value pair, '=' expected");
|
|
579
|
+
} else if (opts[eq_pos] != '=') {
|
|
580
|
+
return Status::InvalidArgument("Unexpected char in key");
|
|
641
581
|
}
|
|
582
|
+
|
|
642
583
|
std::string key = trim(opts.substr(pos, eq_pos - pos));
|
|
643
584
|
if (key.empty()) {
|
|
644
585
|
return Status::InvalidArgument("Empty key found");
|
|
@@ -661,17 +602,11 @@ Status StringToMap(const std::string& opts_str,
|
|
|
661
602
|
return Status::OK();
|
|
662
603
|
}
|
|
663
604
|
|
|
664
|
-
Status GetStringFromMutableDBOptions(const ConfigOptions& config_options,
|
|
665
|
-
const MutableDBOptions& mutable_opts,
|
|
666
|
-
std::string* opt_string) {
|
|
667
|
-
auto config = DBOptionsAsConfigurable(mutable_opts);
|
|
668
|
-
return config->GetOptionString(config_options, opt_string);
|
|
669
|
-
}
|
|
670
605
|
|
|
671
606
|
Status GetStringFromDBOptions(std::string* opt_string,
|
|
672
607
|
const DBOptions& db_options,
|
|
673
608
|
const std::string& delimiter) {
|
|
674
|
-
ConfigOptions config_options;
|
|
609
|
+
ConfigOptions config_options(db_options);
|
|
675
610
|
config_options.delimiter = delimiter;
|
|
676
611
|
return GetStringFromDBOptions(config_options, db_options, opt_string);
|
|
677
612
|
}
|
|
@@ -685,14 +620,6 @@ Status GetStringFromDBOptions(const ConfigOptions& config_options,
|
|
|
685
620
|
return config->GetOptionString(config_options, opt_string);
|
|
686
621
|
}
|
|
687
622
|
|
|
688
|
-
Status GetStringFromMutableCFOptions(const ConfigOptions& config_options,
|
|
689
|
-
const MutableCFOptions& mutable_opts,
|
|
690
|
-
std::string* opt_string) {
|
|
691
|
-
assert(opt_string);
|
|
692
|
-
opt_string->clear();
|
|
693
|
-
const auto config = CFOptionsAsConfigurable(mutable_opts);
|
|
694
|
-
return config->GetOptionString(config_options, opt_string);
|
|
695
|
-
}
|
|
696
623
|
|
|
697
624
|
Status GetStringFromColumnFamilyOptions(std::string* opt_string,
|
|
698
625
|
const ColumnFamilyOptions& cf_options,
|
|
@@ -784,7 +711,7 @@ Status GetDBOptionsFromMap(
|
|
|
784
711
|
const std::unordered_map<std::string, std::string>& opts_map,
|
|
785
712
|
DBOptions* new_options, bool input_strings_escaped,
|
|
786
713
|
bool ignore_unknown_options) {
|
|
787
|
-
ConfigOptions config_options;
|
|
714
|
+
ConfigOptions config_options(base_options);
|
|
788
715
|
config_options.input_strings_escaped = input_strings_escaped;
|
|
789
716
|
config_options.ignore_unknown_options = ignore_unknown_options;
|
|
790
717
|
return GetDBOptionsFromMap(config_options, base_options, opts_map,
|
|
@@ -812,7 +739,7 @@ Status GetDBOptionsFromMap(
|
|
|
812
739
|
Status GetDBOptionsFromString(const DBOptions& base_options,
|
|
813
740
|
const std::string& opts_str,
|
|
814
741
|
DBOptions* new_options) {
|
|
815
|
-
ConfigOptions config_options;
|
|
742
|
+
ConfigOptions config_options(base_options);
|
|
816
743
|
config_options.input_strings_escaped = false;
|
|
817
744
|
config_options.ignore_unknown_options = false;
|
|
818
745
|
|
|
@@ -836,7 +763,7 @@ Status GetDBOptionsFromString(const ConfigOptions& config_options,
|
|
|
836
763
|
|
|
837
764
|
Status GetOptionsFromString(const Options& base_options,
|
|
838
765
|
const std::string& opts_str, Options* new_options) {
|
|
839
|
-
ConfigOptions config_options;
|
|
766
|
+
ConfigOptions config_options(base_options);
|
|
840
767
|
config_options.input_strings_escaped = false;
|
|
841
768
|
config_options.ignore_unknown_options = false;
|
|
842
769
|
|
|
@@ -851,6 +778,7 @@ Status GetOptionsFromString(const ConfigOptions& config_options,
|
|
|
851
778
|
std::unordered_map<std::string, std::string> unused_opts;
|
|
852
779
|
std::unordered_map<std::string, std::string> opts_map;
|
|
853
780
|
|
|
781
|
+
assert(new_options);
|
|
854
782
|
*new_options = base_options;
|
|
855
783
|
Status s = StringToMap(opts_str, &opts_map);
|
|
856
784
|
if (!s.ok()) {
|
|
@@ -903,6 +831,13 @@ std::unordered_map<std::string, CompactionStopStyle>
|
|
|
903
831
|
{"kCompactionStopStyleSimilarSize", kCompactionStopStyleSimilarSize},
|
|
904
832
|
{"kCompactionStopStyleTotalSize", kCompactionStopStyleTotalSize}};
|
|
905
833
|
|
|
834
|
+
std::unordered_map<std::string, Temperature>
|
|
835
|
+
OptionsHelper::temperature_string_map = {
|
|
836
|
+
{"kUnknown", Temperature::kUnknown},
|
|
837
|
+
{"kHot", Temperature::kHot},
|
|
838
|
+
{"kWarm", Temperature::kWarm},
|
|
839
|
+
{"kCold", Temperature::kCold}};
|
|
840
|
+
|
|
906
841
|
Status OptionTypeInfo::NextToken(const std::string& opts, char delimiter,
|
|
907
842
|
size_t pos, size_t* end, std::string* token) {
|
|
908
843
|
while (pos < opts.size() && isspace(opts[pos])) {
|
|
@@ -963,7 +898,7 @@ Status OptionTypeInfo::Parse(const ConfigOptions& config_options,
|
|
|
963
898
|
return Status::OK();
|
|
964
899
|
}
|
|
965
900
|
try {
|
|
966
|
-
|
|
901
|
+
void* opt_addr = static_cast<char*>(opt_ptr) + offset_;
|
|
967
902
|
const std::string& opt_value = config_options.input_strings_escaped
|
|
968
903
|
? UnescapeOptionString(value)
|
|
969
904
|
: value;
|
|
@@ -1005,28 +940,56 @@ Status OptionTypeInfo::Parse(const ConfigOptions& config_options,
|
|
|
1005
940
|
}
|
|
1006
941
|
}
|
|
1007
942
|
|
|
943
|
+
Status OptionTypeInfo::ParseType(
|
|
944
|
+
const ConfigOptions& config_options, const std::string& opts_str,
|
|
945
|
+
const std::unordered_map<std::string, OptionTypeInfo>& type_map,
|
|
946
|
+
void* opt_addr, std::unordered_map<std::string, std::string>* unused) {
|
|
947
|
+
std::unordered_map<std::string, std::string> opts_map;
|
|
948
|
+
Status status = StringToMap(opts_str, &opts_map);
|
|
949
|
+
if (!status.ok()) {
|
|
950
|
+
return status;
|
|
951
|
+
} else {
|
|
952
|
+
return ParseType(config_options, opts_map, type_map, opt_addr, unused);
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
Status OptionTypeInfo::ParseType(
|
|
957
|
+
const ConfigOptions& config_options,
|
|
958
|
+
const std::unordered_map<std::string, std::string>& opts_map,
|
|
959
|
+
const std::unordered_map<std::string, OptionTypeInfo>& type_map,
|
|
960
|
+
void* opt_addr, std::unordered_map<std::string, std::string>* unused) {
|
|
961
|
+
for (const auto& opts_iter : opts_map) {
|
|
962
|
+
std::string opt_name;
|
|
963
|
+
const auto* opt_info = Find(opts_iter.first, type_map, &opt_name);
|
|
964
|
+
if (opt_info != nullptr) {
|
|
965
|
+
Status status =
|
|
966
|
+
opt_info->Parse(config_options, opt_name, opts_iter.second, opt_addr);
|
|
967
|
+
if (!status.ok()) {
|
|
968
|
+
return status;
|
|
969
|
+
}
|
|
970
|
+
} else if (unused != nullptr) {
|
|
971
|
+
(*unused)[opts_iter.first] = opts_iter.second;
|
|
972
|
+
} else if (!config_options.ignore_unknown_options) {
|
|
973
|
+
return Status::NotFound("Unrecognized option", opts_iter.first);
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
return Status::OK();
|
|
977
|
+
}
|
|
978
|
+
|
|
1008
979
|
Status OptionTypeInfo::ParseStruct(
|
|
1009
980
|
const ConfigOptions& config_options, const std::string& struct_name,
|
|
1010
981
|
const std::unordered_map<std::string, OptionTypeInfo>* struct_map,
|
|
1011
|
-
const std::string& opt_name, const std::string& opt_value,
|
|
982
|
+
const std::string& opt_name, const std::string& opt_value, void* opt_addr) {
|
|
1012
983
|
assert(struct_map);
|
|
1013
984
|
Status status;
|
|
1014
985
|
if (opt_name == struct_name || EndsWith(opt_name, "." + struct_name)) {
|
|
1015
986
|
// This option represents the entire struct
|
|
1016
|
-
std::unordered_map<std::string, std::string>
|
|
1017
|
-
status =
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
const auto iter = struct_map->find(map_iter.first);
|
|
1023
|
-
if (iter != struct_map->end()) {
|
|
1024
|
-
status = iter->second.Parse(config_options, map_iter.first,
|
|
1025
|
-
map_iter.second, opt_addr);
|
|
1026
|
-
} else {
|
|
1027
|
-
status = Status::InvalidArgument("Unrecognized option",
|
|
1028
|
-
struct_name + "." + map_iter.first);
|
|
1029
|
-
}
|
|
987
|
+
std::unordered_map<std::string, std::string> unused;
|
|
988
|
+
status =
|
|
989
|
+
ParseType(config_options, opt_value, *struct_map, opt_addr, &unused);
|
|
990
|
+
if (status.ok() && !unused.empty()) {
|
|
991
|
+
status = Status::InvalidArgument(
|
|
992
|
+
"Unrecognized option", struct_name + "." + unused.begin()->first);
|
|
1030
993
|
}
|
|
1031
994
|
} else if (StartsWith(opt_name, struct_name + ".")) {
|
|
1032
995
|
// This option represents a nested field in the struct (e.g, struct.field)
|
|
@@ -1058,26 +1021,47 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
|
|
|
1058
1021
|
std::string* opt_value) const {
|
|
1059
1022
|
// If the option is no longer used in rocksdb and marked as deprecated,
|
|
1060
1023
|
// we skip it in the serialization.
|
|
1061
|
-
const
|
|
1024
|
+
const void* opt_addr = static_cast<const char*>(opt_ptr) + offset_;
|
|
1062
1025
|
if (opt_addr == nullptr || IsDeprecated()) {
|
|
1063
1026
|
return Status::OK();
|
|
1064
1027
|
} else if (IsEnabled(OptionTypeFlags::kDontSerialize)) {
|
|
1065
1028
|
return Status::NotSupported("Cannot serialize option: ", opt_name);
|
|
1066
1029
|
} else if (serialize_func_ != nullptr) {
|
|
1067
1030
|
return serialize_func_(config_options, opt_name, opt_addr, opt_value);
|
|
1068
|
-
} else if (SerializeSingleOptionHelper(opt_addr, type_, opt_value)) {
|
|
1069
|
-
return Status::OK();
|
|
1070
1031
|
} else if (IsCustomizable()) {
|
|
1071
1032
|
const Customizable* custom = AsRawPointer<Customizable>(opt_ptr);
|
|
1033
|
+
opt_value->clear();
|
|
1072
1034
|
if (custom == nullptr) {
|
|
1073
|
-
|
|
1035
|
+
// We do not have a custom object to serialize.
|
|
1036
|
+
// If the option is not mutable and we are doing only mutable options,
|
|
1037
|
+
// we return an empty string (which will cause the option not to be
|
|
1038
|
+
// printed). Otherwise, we return the "nullptr" string, which will result
|
|
1039
|
+
// in "option=nullptr" being printed.
|
|
1040
|
+
if (IsMutable() || !config_options.mutable_options_only) {
|
|
1041
|
+
*opt_value = kNullptrString;
|
|
1042
|
+
} else {
|
|
1043
|
+
*opt_value = "";
|
|
1044
|
+
}
|
|
1074
1045
|
} else if (IsEnabled(OptionTypeFlags::kStringNameOnly) &&
|
|
1075
1046
|
!config_options.IsDetailed()) {
|
|
1076
|
-
|
|
1047
|
+
if (!config_options.mutable_options_only || IsMutable()) {
|
|
1048
|
+
*opt_value = custom->GetId();
|
|
1049
|
+
}
|
|
1077
1050
|
} else {
|
|
1078
1051
|
ConfigOptions embedded = config_options;
|
|
1079
1052
|
embedded.delimiter = ";";
|
|
1080
|
-
|
|
1053
|
+
// If this option is mutable, everything inside it should be considered
|
|
1054
|
+
// mutable
|
|
1055
|
+
if (IsMutable()) {
|
|
1056
|
+
embedded.mutable_options_only = false;
|
|
1057
|
+
}
|
|
1058
|
+
std::string value = custom->ToString(embedded);
|
|
1059
|
+
if (!embedded.mutable_options_only ||
|
|
1060
|
+
value.find("=") != std::string::npos) {
|
|
1061
|
+
*opt_value = value;
|
|
1062
|
+
} else {
|
|
1063
|
+
*opt_value = "";
|
|
1064
|
+
}
|
|
1081
1065
|
}
|
|
1082
1066
|
return Status::OK();
|
|
1083
1067
|
} else if (IsConfigurable()) {
|
|
@@ -1088,15 +1072,40 @@ Status OptionTypeInfo::Serialize(const ConfigOptions& config_options,
|
|
|
1088
1072
|
*opt_value = config->ToString(embedded);
|
|
1089
1073
|
}
|
|
1090
1074
|
return Status::OK();
|
|
1075
|
+
} else if (config_options.mutable_options_only && !IsMutable()) {
|
|
1076
|
+
return Status::OK();
|
|
1077
|
+
} else if (SerializeSingleOptionHelper(opt_addr, type_, opt_value)) {
|
|
1078
|
+
return Status::OK();
|
|
1091
1079
|
} else {
|
|
1092
1080
|
return Status::InvalidArgument("Cannot serialize option: ", opt_name);
|
|
1093
1081
|
}
|
|
1094
1082
|
}
|
|
1095
1083
|
|
|
1084
|
+
Status OptionTypeInfo::SerializeType(
|
|
1085
|
+
const ConfigOptions& config_options,
|
|
1086
|
+
const std::unordered_map<std::string, OptionTypeInfo>& type_map,
|
|
1087
|
+
const void* opt_addr, std::string* result) {
|
|
1088
|
+
Status status;
|
|
1089
|
+
for (const auto& iter : type_map) {
|
|
1090
|
+
std::string single;
|
|
1091
|
+
const auto& opt_info = iter.second;
|
|
1092
|
+
if (opt_info.ShouldSerialize()) {
|
|
1093
|
+
status =
|
|
1094
|
+
opt_info.Serialize(config_options, iter.first, opt_addr, &single);
|
|
1095
|
+
if (!status.ok()) {
|
|
1096
|
+
return status;
|
|
1097
|
+
} else {
|
|
1098
|
+
result->append(iter.first + "=" + single + config_options.delimiter);
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
return status;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1096
1105
|
Status OptionTypeInfo::SerializeStruct(
|
|
1097
1106
|
const ConfigOptions& config_options, const std::string& struct_name,
|
|
1098
1107
|
const std::unordered_map<std::string, OptionTypeInfo>* struct_map,
|
|
1099
|
-
const std::string& opt_name, const
|
|
1108
|
+
const std::string& opt_name, const void* opt_addr, std::string* value) {
|
|
1100
1109
|
assert(struct_map);
|
|
1101
1110
|
Status status;
|
|
1102
1111
|
if (EndsWith(opt_name, struct_name)) {
|
|
@@ -1107,19 +1116,12 @@ Status OptionTypeInfo::SerializeStruct(
|
|
|
1107
1116
|
|
|
1108
1117
|
// This option represents the entire struct
|
|
1109
1118
|
std::string result;
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
if (!status.ok()) {
|
|
1116
|
-
return status;
|
|
1117
|
-
} else {
|
|
1118
|
-
result.append(iter.first + "=" + single + embedded.delimiter);
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1119
|
+
status = SerializeType(embedded, *struct_map, opt_addr, &result);
|
|
1120
|
+
if (!status.ok()) {
|
|
1121
|
+
return status;
|
|
1122
|
+
} else {
|
|
1123
|
+
*value = "{" + result + "}";
|
|
1121
1124
|
}
|
|
1122
|
-
*value = "{" + result + "}";
|
|
1123
1125
|
} else if (StartsWith(opt_name, struct_name + ".")) {
|
|
1124
1126
|
// This option represents a nested field in the struct (e.g, struct.field)
|
|
1125
1127
|
std::string elem_name;
|
|
@@ -1145,17 +1147,16 @@ Status OptionTypeInfo::SerializeStruct(
|
|
|
1145
1147
|
}
|
|
1146
1148
|
|
|
1147
1149
|
template <typename T>
|
|
1148
|
-
bool IsOptionEqual(const
|
|
1149
|
-
return (*
|
|
1150
|
-
*reinterpret_cast<const T*>(offset2));
|
|
1150
|
+
bool IsOptionEqual(const void* offset1, const void* offset2) {
|
|
1151
|
+
return (*static_cast<const T*>(offset1) == *static_cast<const T*>(offset2));
|
|
1151
1152
|
}
|
|
1152
1153
|
|
|
1153
1154
|
static bool AreEqualDoubles(const double a, const double b) {
|
|
1154
1155
|
return (fabs(a - b) < 0.00001);
|
|
1155
1156
|
}
|
|
1156
1157
|
|
|
1157
|
-
static bool AreOptionsEqual(OptionType type, const
|
|
1158
|
-
const
|
|
1158
|
+
static bool AreOptionsEqual(OptionType type, const void* this_offset,
|
|
1159
|
+
const void* that_offset) {
|
|
1159
1160
|
switch (type) {
|
|
1160
1161
|
case OptionType::kBoolean:
|
|
1161
1162
|
return IsOptionEqual<bool>(this_offset, that_offset);
|
|
@@ -1167,29 +1168,31 @@ static bool AreOptionsEqual(OptionType type, const char* this_offset,
|
|
|
1167
1168
|
return IsOptionEqual<int32_t>(this_offset, that_offset);
|
|
1168
1169
|
case OptionType::kInt64T: {
|
|
1169
1170
|
int64_t v1, v2;
|
|
1170
|
-
GetUnaligned(
|
|
1171
|
-
GetUnaligned(
|
|
1171
|
+
GetUnaligned(static_cast<const int64_t*>(this_offset), &v1);
|
|
1172
|
+
GetUnaligned(static_cast<const int64_t*>(that_offset), &v2);
|
|
1172
1173
|
return (v1 == v2);
|
|
1173
1174
|
}
|
|
1175
|
+
case OptionType::kUInt8T:
|
|
1176
|
+
return IsOptionEqual<uint8_t>(this_offset, that_offset);
|
|
1174
1177
|
case OptionType::kUInt32T:
|
|
1175
1178
|
return IsOptionEqual<uint32_t>(this_offset, that_offset);
|
|
1176
1179
|
case OptionType::kUInt64T: {
|
|
1177
1180
|
uint64_t v1, v2;
|
|
1178
|
-
GetUnaligned(
|
|
1179
|
-
GetUnaligned(
|
|
1181
|
+
GetUnaligned(static_cast<const uint64_t*>(this_offset), &v1);
|
|
1182
|
+
GetUnaligned(static_cast<const uint64_t*>(that_offset), &v2);
|
|
1180
1183
|
return (v1 == v2);
|
|
1181
1184
|
}
|
|
1182
1185
|
case OptionType::kSizeT: {
|
|
1183
1186
|
size_t v1, v2;
|
|
1184
|
-
GetUnaligned(
|
|
1185
|
-
GetUnaligned(
|
|
1187
|
+
GetUnaligned(static_cast<const size_t*>(this_offset), &v1);
|
|
1188
|
+
GetUnaligned(static_cast<const size_t*>(that_offset), &v2);
|
|
1186
1189
|
return (v1 == v2);
|
|
1187
1190
|
}
|
|
1188
1191
|
case OptionType::kString:
|
|
1189
1192
|
return IsOptionEqual<std::string>(this_offset, that_offset);
|
|
1190
1193
|
case OptionType::kDouble:
|
|
1191
|
-
return AreEqualDoubles(*
|
|
1192
|
-
*
|
|
1194
|
+
return AreEqualDoubles(*static_cast<const double*>(this_offset),
|
|
1195
|
+
*static_cast<const double*>(that_offset));
|
|
1193
1196
|
case OptionType::kCompactionStyle:
|
|
1194
1197
|
return IsOptionEqual<CompactionStyle>(this_offset, that_offset);
|
|
1195
1198
|
case OptionType::kCompactionStopStyle:
|
|
@@ -1202,6 +1205,10 @@ static bool AreOptionsEqual(OptionType type, const char* this_offset,
|
|
|
1202
1205
|
return IsOptionEqual<ChecksumType>(this_offset, that_offset);
|
|
1203
1206
|
case OptionType::kEncodingType:
|
|
1204
1207
|
return IsOptionEqual<EncodingType>(this_offset, that_offset);
|
|
1208
|
+
case OptionType::kEncodedString:
|
|
1209
|
+
return IsOptionEqual<std::string>(this_offset, that_offset);
|
|
1210
|
+
case OptionType::kTemperature:
|
|
1211
|
+
return IsOptionEqual<Temperature>(this_offset, that_offset);
|
|
1205
1212
|
default:
|
|
1206
1213
|
return false;
|
|
1207
1214
|
} // End switch
|
|
@@ -1216,8 +1223,8 @@ bool OptionTypeInfo::AreEqual(const ConfigOptions& config_options,
|
|
|
1216
1223
|
if (!config_options.IsCheckEnabled(level)) {
|
|
1217
1224
|
return true; // If the sanity level is not being checked, skip it
|
|
1218
1225
|
}
|
|
1219
|
-
const
|
|
1220
|
-
const
|
|
1226
|
+
const void* this_addr = static_cast<const char*>(this_ptr) + offset_;
|
|
1227
|
+
const void* that_addr = static_cast<const char*>(that_ptr) + offset_;
|
|
1221
1228
|
if (this_addr == nullptr || that_addr == nullptr) {
|
|
1222
1229
|
if (this_addr == that_addr) {
|
|
1223
1230
|
return true;
|
|
@@ -1257,25 +1264,35 @@ bool OptionTypeInfo::AreEqual(const ConfigOptions& config_options,
|
|
|
1257
1264
|
return false;
|
|
1258
1265
|
}
|
|
1259
1266
|
|
|
1267
|
+
bool OptionTypeInfo::TypesAreEqual(
|
|
1268
|
+
const ConfigOptions& config_options,
|
|
1269
|
+
const std::unordered_map<std::string, OptionTypeInfo>& type_map,
|
|
1270
|
+
const void* this_addr, const void* that_addr, std::string* mismatch) {
|
|
1271
|
+
for (const auto& iter : type_map) {
|
|
1272
|
+
const auto& opt_info = iter.second;
|
|
1273
|
+
if (!opt_info.AreEqual(config_options, iter.first, this_addr, that_addr,
|
|
1274
|
+
mismatch)) {
|
|
1275
|
+
return false;
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
return true;
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1260
1281
|
bool OptionTypeInfo::StructsAreEqual(
|
|
1261
1282
|
const ConfigOptions& config_options, const std::string& struct_name,
|
|
1262
1283
|
const std::unordered_map<std::string, OptionTypeInfo>* struct_map,
|
|
1263
|
-
const std::string& opt_name, const
|
|
1284
|
+
const std::string& opt_name, const void* this_addr, const void* that_addr,
|
|
1264
1285
|
std::string* mismatch) {
|
|
1265
1286
|
assert(struct_map);
|
|
1266
1287
|
bool matches = true;
|
|
1267
1288
|
std::string result;
|
|
1268
1289
|
if (EndsWith(opt_name, struct_name)) {
|
|
1269
1290
|
// This option represents the entire struct
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
if (!matches) {
|
|
1276
|
-
*mismatch = struct_name + "." + result;
|
|
1277
|
-
return false;
|
|
1278
|
-
}
|
|
1291
|
+
matches = TypesAreEqual(config_options, *struct_map, this_addr, that_addr,
|
|
1292
|
+
&result);
|
|
1293
|
+
if (!matches) {
|
|
1294
|
+
*mismatch = struct_name + "." + result;
|
|
1295
|
+
return false;
|
|
1279
1296
|
}
|
|
1280
1297
|
} else if (StartsWith(opt_name, struct_name + ".")) {
|
|
1281
1298
|
// This option represents a nested field in the struct (e.g, struct.field)
|