@nxtedition/rocksdb 8.2.8 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +0 -21
- package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
- package/deps/rocksdb/rocksdb/Makefile +37 -25
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +25 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
- package/deps/rocksdb/rocksdb/db/c.cc +233 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
- package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
- package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
- package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
- package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
- package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
- package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
- package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
- package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
- package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
- package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
- package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
- package/deps/rocksdb/rocksdb/env/env.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
- package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
- package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +10 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
- package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/format.cc +175 -33
- package/deps/rocksdb/rocksdb/table/format.h +63 -10
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
- package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
- package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +119 -35
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
- package/deps/rocksdb/rocksdb/util/hash.h +7 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
- package/deps/rocksdb/rocksdb/util/math.h +58 -6
- package/deps/rocksdb/rocksdb/util/math128.h +29 -7
- package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
- package/deps/rocksdb/rocksdb.gyp +6 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
|
@@ -41,30 +41,94 @@ class MergeHelper {
|
|
|
41
41
|
Statistics* stats = nullptr,
|
|
42
42
|
const std::atomic<bool>* shutting_down = nullptr);
|
|
43
43
|
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
// Set `update_num_ops_stats` to true if it is from a user read, so that
|
|
48
|
-
// the latency is sensitive.
|
|
44
|
+
// Wrappers around MergeOperator::FullMergeV3() that record perf statistics.
|
|
45
|
+
// Set `update_num_ops_stats` to true if it is from a user read so that
|
|
46
|
+
// the corresponding statistics are updated.
|
|
49
47
|
// Returns one of the following statuses:
|
|
50
48
|
// - OK: Entries were successfully merged.
|
|
51
49
|
// - Corruption: Merge operator reported unsuccessful merge. The scope of the
|
|
52
50
|
// damage will be stored in `*op_failure_scope` when `op_failure_scope` is
|
|
53
51
|
// not nullptr
|
|
52
|
+
|
|
53
|
+
// Empty tag types to disambiguate overloads
|
|
54
|
+
struct NoBaseValueTag {};
|
|
55
|
+
static constexpr NoBaseValueTag kNoBaseValue{};
|
|
56
|
+
|
|
57
|
+
struct PlainBaseValueTag {};
|
|
58
|
+
static constexpr PlainBaseValueTag kPlainBaseValue{};
|
|
59
|
+
|
|
60
|
+
struct WideBaseValueTag {};
|
|
61
|
+
static constexpr WideBaseValueTag kWideBaseValue{};
|
|
62
|
+
|
|
63
|
+
// Variants that expose the merge result directly (in serialized form for wide
|
|
64
|
+
// columns) as well as its value type. Used by iterator and compaction.
|
|
65
|
+
static Status TimedFullMerge(const MergeOperator* merge_operator,
|
|
66
|
+
const Slice& key, NoBaseValueTag,
|
|
67
|
+
const std::vector<Slice>& operands,
|
|
68
|
+
Logger* logger, Statistics* statistics,
|
|
69
|
+
SystemClock* clock, bool update_num_ops_stats,
|
|
70
|
+
std::string* result, Slice* result_operand,
|
|
71
|
+
ValueType* result_type,
|
|
72
|
+
MergeOperator::OpFailureScope* op_failure_scope);
|
|
73
|
+
|
|
74
|
+
static Status TimedFullMerge(
|
|
75
|
+
const MergeOperator* merge_operator, const Slice& key, PlainBaseValueTag,
|
|
76
|
+
const Slice& value, const std::vector<Slice>& operands, Logger* logger,
|
|
77
|
+
Statistics* statistics, SystemClock* clock, bool update_num_ops_stats,
|
|
78
|
+
std::string* result, Slice* result_operand, ValueType* result_type,
|
|
79
|
+
MergeOperator::OpFailureScope* op_failure_scope);
|
|
80
|
+
|
|
81
|
+
static Status TimedFullMerge(
|
|
82
|
+
const MergeOperator* merge_operator, const Slice& key, WideBaseValueTag,
|
|
83
|
+
const Slice& entity, const std::vector<Slice>& operands, Logger* logger,
|
|
84
|
+
Statistics* statistics, SystemClock* clock, bool update_num_ops_stats,
|
|
85
|
+
std::string* result, Slice* result_operand, ValueType* result_type,
|
|
86
|
+
MergeOperator::OpFailureScope* op_failure_scope);
|
|
87
|
+
|
|
88
|
+
static Status TimedFullMerge(
|
|
89
|
+
const MergeOperator* merge_operator, const Slice& key, WideBaseValueTag,
|
|
90
|
+
const WideColumns& columns, const std::vector<Slice>& operands,
|
|
91
|
+
Logger* logger, Statistics* statistics, SystemClock* clock,
|
|
92
|
+
bool update_num_ops_stats, std::string* result, Slice* result_operand,
|
|
93
|
+
ValueType* result_type, MergeOperator::OpFailureScope* op_failure_scope);
|
|
94
|
+
|
|
95
|
+
// Variants that expose the merge result translated to the form requested by
|
|
96
|
+
// the client. (For example, if the result is a wide-column structure but the
|
|
97
|
+
// client requested the results in plain-value form, the value of the default
|
|
98
|
+
// column is returned.) Used by point lookups.
|
|
54
99
|
static Status TimedFullMerge(const MergeOperator* merge_operator,
|
|
55
|
-
const Slice& key,
|
|
100
|
+
const Slice& key, NoBaseValueTag,
|
|
56
101
|
const std::vector<Slice>& operands,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
102
|
+
Logger* logger, Statistics* statistics,
|
|
103
|
+
SystemClock* clock, bool update_num_ops_stats,
|
|
104
|
+
std::string* result_value,
|
|
105
|
+
PinnableWideColumns* result_entity,
|
|
60
106
|
MergeOperator::OpFailureScope* op_failure_scope);
|
|
61
107
|
|
|
62
|
-
static Status
|
|
63
|
-
const MergeOperator* merge_operator, const Slice& key,
|
|
64
|
-
const std::vector<Slice>& operands,
|
|
108
|
+
static Status TimedFullMerge(
|
|
109
|
+
const MergeOperator* merge_operator, const Slice& key, PlainBaseValueTag,
|
|
110
|
+
const Slice& value, const std::vector<Slice>& operands, Logger* logger,
|
|
65
111
|
Statistics* statistics, SystemClock* clock, bool update_num_ops_stats,
|
|
112
|
+
std::string* result_value, PinnableWideColumns* result_entity,
|
|
66
113
|
MergeOperator::OpFailureScope* op_failure_scope);
|
|
67
114
|
|
|
115
|
+
static Status TimedFullMerge(
|
|
116
|
+
const MergeOperator* merge_operator, const Slice& key, WideBaseValueTag,
|
|
117
|
+
const Slice& entity, const std::vector<Slice>& operands, Logger* logger,
|
|
118
|
+
Statistics* statistics, SystemClock* clock, bool update_num_ops_stats,
|
|
119
|
+
std::string* result_value, PinnableWideColumns* result_entity,
|
|
120
|
+
MergeOperator::OpFailureScope* op_failure_scope);
|
|
121
|
+
|
|
122
|
+
static Status TimedFullMerge(const MergeOperator* merge_operator,
|
|
123
|
+
const Slice& key, WideBaseValueTag,
|
|
124
|
+
const WideColumns& columns,
|
|
125
|
+
const std::vector<Slice>& operands,
|
|
126
|
+
Logger* logger, Statistics* statistics,
|
|
127
|
+
SystemClock* clock, bool update_num_ops_stats,
|
|
128
|
+
std::string* result_value,
|
|
129
|
+
PinnableWideColumns* result_entity,
|
|
130
|
+
MergeOperator::OpFailureScope* op_failure_scope);
|
|
131
|
+
|
|
68
132
|
// During compaction, merge entries until we hit
|
|
69
133
|
// - a corrupted key
|
|
70
134
|
// - a Put/Delete,
|
|
@@ -198,6 +262,30 @@ class MergeHelper {
|
|
|
198
262
|
// This is a best-effort facility, so memory_order_relaxed is sufficient.
|
|
199
263
|
return shutting_down_ && shutting_down_->load(std::memory_order_relaxed);
|
|
200
264
|
}
|
|
265
|
+
|
|
266
|
+
template <typename Visitor>
|
|
267
|
+
static Status TimedFullMergeCommonImpl(
|
|
268
|
+
const MergeOperator* merge_operator, const Slice& key,
|
|
269
|
+
MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value,
|
|
270
|
+
const std::vector<Slice>& operands, Logger* logger,
|
|
271
|
+
Statistics* statistics, SystemClock* clock, bool update_num_ops_stats,
|
|
272
|
+
MergeOperator::OpFailureScope* op_failure_scope, Visitor&& visitor);
|
|
273
|
+
|
|
274
|
+
static Status TimedFullMergeImpl(
|
|
275
|
+
const MergeOperator* merge_operator, const Slice& key,
|
|
276
|
+
MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value,
|
|
277
|
+
const std::vector<Slice>& operands, Logger* logger,
|
|
278
|
+
Statistics* statistics, SystemClock* clock, bool update_num_ops_stats,
|
|
279
|
+
std::string* result, Slice* result_operand, ValueType* result_type,
|
|
280
|
+
MergeOperator::OpFailureScope* op_failure_scope);
|
|
281
|
+
|
|
282
|
+
static Status TimedFullMergeImpl(
|
|
283
|
+
const MergeOperator* merge_operator, const Slice& key,
|
|
284
|
+
MergeOperator::MergeOperationInputV3::ExistingValue&& existing_value,
|
|
285
|
+
const std::vector<Slice>& operands, Logger* logger,
|
|
286
|
+
Statistics* statistics, SystemClock* clock, bool update_num_ops_stats,
|
|
287
|
+
std::string* result_value, PinnableWideColumns* result_entity,
|
|
288
|
+
MergeOperator::OpFailureScope* op_failure_scope);
|
|
201
289
|
};
|
|
202
290
|
|
|
203
291
|
// MergeOutputIterator can be used to iterate over the result of a merge.
|
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
#include "rocksdb/merge_operator.h"
|
|
11
11
|
|
|
12
|
+
#include <type_traits>
|
|
13
|
+
|
|
14
|
+
#include "db/wide/wide_columns_helper.h"
|
|
15
|
+
#include "util/overload.h"
|
|
16
|
+
|
|
12
17
|
namespace ROCKSDB_NAMESPACE {
|
|
13
18
|
|
|
14
19
|
bool MergeOperator::FullMergeV2(const MergeOperationInput& merge_in,
|
|
@@ -23,6 +28,83 @@ bool MergeOperator::FullMergeV2(const MergeOperationInput& merge_in,
|
|
|
23
28
|
&merge_out->new_value, merge_in.logger);
|
|
24
29
|
}
|
|
25
30
|
|
|
31
|
+
bool MergeOperator::FullMergeV3(const MergeOperationInputV3& merge_in,
|
|
32
|
+
MergeOperationOutputV3* merge_out) const {
|
|
33
|
+
assert(merge_out);
|
|
34
|
+
|
|
35
|
+
MergeOperationInput in_v2(merge_in.key, nullptr, merge_in.operand_list,
|
|
36
|
+
merge_in.logger);
|
|
37
|
+
|
|
38
|
+
std::string new_value;
|
|
39
|
+
Slice existing_operand(nullptr, 0);
|
|
40
|
+
MergeOperationOutput out_v2(new_value, existing_operand);
|
|
41
|
+
|
|
42
|
+
return std::visit(
|
|
43
|
+
overload{
|
|
44
|
+
[&](const auto& existing) -> bool {
|
|
45
|
+
using T = std::decay_t<decltype(existing)>;
|
|
46
|
+
|
|
47
|
+
if constexpr (std::is_same_v<T, Slice>) {
|
|
48
|
+
in_v2.existing_value = &existing;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const bool result = FullMergeV2(in_v2, &out_v2);
|
|
52
|
+
if (!result) {
|
|
53
|
+
merge_out->op_failure_scope = out_v2.op_failure_scope;
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (existing_operand.data()) {
|
|
58
|
+
merge_out->new_value = existing_operand;
|
|
59
|
+
} else {
|
|
60
|
+
merge_out->new_value = std::move(new_value);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return true;
|
|
64
|
+
},
|
|
65
|
+
[&](const WideColumns& existing_columns) -> bool {
|
|
66
|
+
const bool has_default_column =
|
|
67
|
+
WideColumnsHelper::HasDefaultColumn(existing_columns);
|
|
68
|
+
|
|
69
|
+
Slice value_of_default;
|
|
70
|
+
if (has_default_column) {
|
|
71
|
+
value_of_default = existing_columns.front().value();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
in_v2.existing_value = &value_of_default;
|
|
75
|
+
|
|
76
|
+
const bool result = FullMergeV2(in_v2, &out_v2);
|
|
77
|
+
if (!result) {
|
|
78
|
+
merge_out->op_failure_scope = out_v2.op_failure_scope;
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
merge_out->new_value = MergeOperationOutputV3::NewColumns();
|
|
83
|
+
auto& new_columns = std::get<MergeOperationOutputV3::NewColumns>(
|
|
84
|
+
merge_out->new_value);
|
|
85
|
+
new_columns.reserve(has_default_column
|
|
86
|
+
? existing_columns.size()
|
|
87
|
+
: (existing_columns.size() + 1));
|
|
88
|
+
|
|
89
|
+
if (existing_operand.data()) {
|
|
90
|
+
new_columns.emplace_back(kDefaultWideColumnName.ToString(),
|
|
91
|
+
existing_operand.ToString());
|
|
92
|
+
} else {
|
|
93
|
+
new_columns.emplace_back(kDefaultWideColumnName.ToString(),
|
|
94
|
+
std::move(new_value));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
for (size_t i = has_default_column ? 1 : 0;
|
|
98
|
+
i < existing_columns.size(); ++i) {
|
|
99
|
+
new_columns.emplace_back(existing_columns[i].name().ToString(),
|
|
100
|
+
existing_columns[i].value().ToString());
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return true;
|
|
104
|
+
}},
|
|
105
|
+
merge_in.existing_value);
|
|
106
|
+
}
|
|
107
|
+
|
|
26
108
|
// The default implementation of PartialMergeMulti, which invokes
|
|
27
109
|
// PartialMerge multiple times internally and merges two operands at
|
|
28
110
|
// a time.
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include "rocksdb/env.h"
|
|
19
19
|
#include "rocksdb/merge_operator.h"
|
|
20
20
|
#include "rocksdb/utilities/db_ttl.h"
|
|
21
|
+
#include "rocksdb/wide_columns.h"
|
|
21
22
|
#include "test_util/testharness.h"
|
|
22
23
|
#include "util/coding.h"
|
|
23
24
|
#include "utilities/merge_operators.h"
|
|
@@ -607,6 +608,272 @@ TEST_F(MergeTest, MergeWithCompactionAndFlush) {
|
|
|
607
608
|
ASSERT_OK(DestroyDB(dbname, Options()));
|
|
608
609
|
}
|
|
609
610
|
|
|
611
|
+
TEST_F(MergeTest, FullMergeV3FallbackNewValue) {
|
|
612
|
+
// Test that the default FullMergeV3 implementation correctly handles the case
|
|
613
|
+
// when FullMergeV2 results in a new value.
|
|
614
|
+
|
|
615
|
+
const Slice key("foo");
|
|
616
|
+
const MergeOperator::MergeOperationInputV3::OperandList operands{
|
|
617
|
+
"first", "second", "third"};
|
|
618
|
+
constexpr Logger* logger = nullptr;
|
|
619
|
+
|
|
620
|
+
auto append_operator =
|
|
621
|
+
MergeOperators::CreateStringAppendOperator(std::string());
|
|
622
|
+
|
|
623
|
+
// No existing value
|
|
624
|
+
{
|
|
625
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value;
|
|
626
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
627
|
+
key, std::move(existing_value), operands, logger);
|
|
628
|
+
|
|
629
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
630
|
+
|
|
631
|
+
ASSERT_TRUE(append_operator->FullMergeV3(merge_in, &merge_out));
|
|
632
|
+
|
|
633
|
+
const auto& result = std::get<std::string>(merge_out.new_value);
|
|
634
|
+
ASSERT_EQ(result, operands[0].ToString() + operands[1].ToString() +
|
|
635
|
+
operands[2].ToString());
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
// Plain existing value
|
|
639
|
+
{
|
|
640
|
+
const Slice plain("plain");
|
|
641
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(plain);
|
|
642
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
643
|
+
key, std::move(existing_value), operands, logger);
|
|
644
|
+
|
|
645
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
646
|
+
|
|
647
|
+
ASSERT_TRUE(append_operator->FullMergeV3(merge_in, &merge_out));
|
|
648
|
+
|
|
649
|
+
const auto& result = std::get<std::string>(merge_out.new_value);
|
|
650
|
+
ASSERT_EQ(result, plain.ToString() + operands[0].ToString() +
|
|
651
|
+
operands[1].ToString() + operands[2].ToString());
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
// Wide-column existing value with default column
|
|
655
|
+
{
|
|
656
|
+
const WideColumns entity{
|
|
657
|
+
{kDefaultWideColumnName, "default"}, {"one", "1"}, {"two", "2"}};
|
|
658
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(entity);
|
|
659
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
660
|
+
key, std::move(existing_value), operands, logger);
|
|
661
|
+
|
|
662
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
663
|
+
|
|
664
|
+
ASSERT_TRUE(append_operator->FullMergeV3(merge_in, &merge_out));
|
|
665
|
+
|
|
666
|
+
const auto& result =
|
|
667
|
+
std::get<MergeOperator::MergeOperationOutputV3::NewColumns>(
|
|
668
|
+
merge_out.new_value);
|
|
669
|
+
ASSERT_EQ(result.size(), entity.size());
|
|
670
|
+
ASSERT_EQ(result[0].first, entity[0].name());
|
|
671
|
+
ASSERT_EQ(result[0].second,
|
|
672
|
+
entity[0].value().ToString() + operands[0].ToString() +
|
|
673
|
+
operands[1].ToString() + operands[2].ToString());
|
|
674
|
+
ASSERT_EQ(result[1].first, entity[1].name());
|
|
675
|
+
ASSERT_EQ(result[1].second, entity[1].value());
|
|
676
|
+
ASSERT_EQ(result[2].first, entity[2].name());
|
|
677
|
+
ASSERT_EQ(result[2].second, entity[2].value());
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
// Wide-column existing value without default column
|
|
681
|
+
{
|
|
682
|
+
const WideColumns entity{{"one", "1"}, {"two", "2"}};
|
|
683
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(entity);
|
|
684
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
685
|
+
key, std::move(existing_value), operands, logger);
|
|
686
|
+
|
|
687
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
688
|
+
|
|
689
|
+
ASSERT_TRUE(append_operator->FullMergeV3(merge_in, &merge_out));
|
|
690
|
+
|
|
691
|
+
const auto& result =
|
|
692
|
+
std::get<MergeOperator::MergeOperationOutputV3::NewColumns>(
|
|
693
|
+
merge_out.new_value);
|
|
694
|
+
ASSERT_EQ(result.size(), entity.size() + 1);
|
|
695
|
+
ASSERT_EQ(result[0].first, kDefaultWideColumnName);
|
|
696
|
+
ASSERT_EQ(result[0].second, operands[0].ToString() +
|
|
697
|
+
operands[1].ToString() +
|
|
698
|
+
operands[2].ToString());
|
|
699
|
+
ASSERT_EQ(result[1].first, entity[0].name());
|
|
700
|
+
ASSERT_EQ(result[1].second, entity[0].value());
|
|
701
|
+
ASSERT_EQ(result[2].first, entity[1].name());
|
|
702
|
+
ASSERT_EQ(result[2].second, entity[1].value());
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
TEST_F(MergeTest, FullMergeV3FallbackExistingOperand) {
|
|
707
|
+
// Test that the default FullMergeV3 implementation correctly handles the case
|
|
708
|
+
// when FullMergeV2 results in an existing operand.
|
|
709
|
+
|
|
710
|
+
const Slice key("foo");
|
|
711
|
+
const MergeOperator::MergeOperationInputV3::OperandList operands{
|
|
712
|
+
"first", "second", "third"};
|
|
713
|
+
constexpr Logger* logger = nullptr;
|
|
714
|
+
|
|
715
|
+
auto put_operator = MergeOperators::CreatePutOperator();
|
|
716
|
+
|
|
717
|
+
// No existing value
|
|
718
|
+
{
|
|
719
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value;
|
|
720
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
721
|
+
key, std::move(existing_value), operands, logger);
|
|
722
|
+
|
|
723
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
724
|
+
|
|
725
|
+
ASSERT_TRUE(put_operator->FullMergeV3(merge_in, &merge_out));
|
|
726
|
+
|
|
727
|
+
const auto& result = std::get<Slice>(merge_out.new_value);
|
|
728
|
+
ASSERT_EQ(result.data(), operands.back().data());
|
|
729
|
+
ASSERT_EQ(result.size(), operands.back().size());
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
// Plain existing value
|
|
733
|
+
{
|
|
734
|
+
const Slice plain("plain");
|
|
735
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(plain);
|
|
736
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
737
|
+
key, std::move(existing_value), operands, logger);
|
|
738
|
+
|
|
739
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
740
|
+
|
|
741
|
+
ASSERT_TRUE(put_operator->FullMergeV3(merge_in, &merge_out));
|
|
742
|
+
|
|
743
|
+
const auto& result = std::get<Slice>(merge_out.new_value);
|
|
744
|
+
ASSERT_EQ(result.data(), operands.back().data());
|
|
745
|
+
ASSERT_EQ(result.size(), operands.back().size());
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
// Wide-column existing value with default column
|
|
749
|
+
{
|
|
750
|
+
const WideColumns entity{
|
|
751
|
+
{kDefaultWideColumnName, "default"}, {"one", "1"}, {"two", "2"}};
|
|
752
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(entity);
|
|
753
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
754
|
+
key, std::move(existing_value), operands, logger);
|
|
755
|
+
|
|
756
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
757
|
+
|
|
758
|
+
ASSERT_TRUE(put_operator->FullMergeV3(merge_in, &merge_out));
|
|
759
|
+
|
|
760
|
+
const auto& result =
|
|
761
|
+
std::get<MergeOperator::MergeOperationOutputV3::NewColumns>(
|
|
762
|
+
merge_out.new_value);
|
|
763
|
+
ASSERT_EQ(result.size(), entity.size());
|
|
764
|
+
ASSERT_EQ(result[0].first, entity[0].name());
|
|
765
|
+
ASSERT_EQ(result[0].second, operands.back());
|
|
766
|
+
ASSERT_EQ(result[1].first, entity[1].name());
|
|
767
|
+
ASSERT_EQ(result[1].second, entity[1].value());
|
|
768
|
+
ASSERT_EQ(result[2].first, entity[2].name());
|
|
769
|
+
ASSERT_EQ(result[2].second, entity[2].value());
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
// Wide-column existing value without default column
|
|
773
|
+
{
|
|
774
|
+
const WideColumns entity{{"one", "1"}, {"two", "2"}};
|
|
775
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(entity);
|
|
776
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
777
|
+
key, std::move(existing_value), operands, logger);
|
|
778
|
+
|
|
779
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
780
|
+
|
|
781
|
+
ASSERT_TRUE(put_operator->FullMergeV3(merge_in, &merge_out));
|
|
782
|
+
|
|
783
|
+
const auto& result =
|
|
784
|
+
std::get<MergeOperator::MergeOperationOutputV3::NewColumns>(
|
|
785
|
+
merge_out.new_value);
|
|
786
|
+
ASSERT_EQ(result.size(), entity.size() + 1);
|
|
787
|
+
ASSERT_EQ(result[0].first, kDefaultWideColumnName);
|
|
788
|
+
ASSERT_EQ(result[0].second, operands.back());
|
|
789
|
+
ASSERT_EQ(result[1].first, entity[0].name());
|
|
790
|
+
ASSERT_EQ(result[1].second, entity[0].value());
|
|
791
|
+
ASSERT_EQ(result[2].first, entity[1].name());
|
|
792
|
+
ASSERT_EQ(result[2].second, entity[1].value());
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
TEST_F(MergeTest, FullMergeV3FallbackFailure) {
|
|
797
|
+
// Test that the default FullMergeV3 implementation correctly handles the case
|
|
798
|
+
// when FullMergeV2 fails.
|
|
799
|
+
|
|
800
|
+
const Slice key("foo");
|
|
801
|
+
const MergeOperator::MergeOperationInputV3::OperandList operands{
|
|
802
|
+
"first", "second", "third"};
|
|
803
|
+
constexpr Logger* logger = nullptr;
|
|
804
|
+
|
|
805
|
+
class FailMergeOperator : public MergeOperator {
|
|
806
|
+
public:
|
|
807
|
+
bool FullMergeV2(const MergeOperationInput& /* merge_in */,
|
|
808
|
+
MergeOperationOutput* merge_out) const override {
|
|
809
|
+
assert(merge_out);
|
|
810
|
+
merge_out->op_failure_scope = OpFailureScope::kMustMerge;
|
|
811
|
+
|
|
812
|
+
return false;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
const char* Name() const override { return "FailMergeOperator"; }
|
|
816
|
+
};
|
|
817
|
+
|
|
818
|
+
FailMergeOperator fail_operator;
|
|
819
|
+
|
|
820
|
+
// No existing value
|
|
821
|
+
{
|
|
822
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value;
|
|
823
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
824
|
+
key, std::move(existing_value), operands, logger);
|
|
825
|
+
|
|
826
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
827
|
+
|
|
828
|
+
ASSERT_FALSE(fail_operator.FullMergeV3(merge_in, &merge_out));
|
|
829
|
+
ASSERT_EQ(merge_out.op_failure_scope,
|
|
830
|
+
MergeOperator::OpFailureScope::kMustMerge);
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
// Plain existing value
|
|
834
|
+
{
|
|
835
|
+
const Slice plain("plain");
|
|
836
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(plain);
|
|
837
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
838
|
+
key, std::move(existing_value), operands, logger);
|
|
839
|
+
|
|
840
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
841
|
+
|
|
842
|
+
ASSERT_FALSE(fail_operator.FullMergeV3(merge_in, &merge_out));
|
|
843
|
+
ASSERT_EQ(merge_out.op_failure_scope,
|
|
844
|
+
MergeOperator::OpFailureScope::kMustMerge);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
// Wide-column existing value with default column
|
|
848
|
+
{
|
|
849
|
+
const WideColumns entity{
|
|
850
|
+
{kDefaultWideColumnName, "default"}, {"one", "1"}, {"two", "2"}};
|
|
851
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(entity);
|
|
852
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
853
|
+
key, std::move(existing_value), operands, logger);
|
|
854
|
+
|
|
855
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
856
|
+
|
|
857
|
+
ASSERT_FALSE(fail_operator.FullMergeV3(merge_in, &merge_out));
|
|
858
|
+
ASSERT_EQ(merge_out.op_failure_scope,
|
|
859
|
+
MergeOperator::OpFailureScope::kMustMerge);
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
// Wide-column existing value without default column
|
|
863
|
+
{
|
|
864
|
+
const WideColumns entity{{"one", "1"}, {"two", "2"}};
|
|
865
|
+
MergeOperator::MergeOperationInputV3::ExistingValue existing_value(entity);
|
|
866
|
+
const MergeOperator::MergeOperationInputV3 merge_in(
|
|
867
|
+
key, std::move(existing_value), operands, logger);
|
|
868
|
+
|
|
869
|
+
MergeOperator::MergeOperationOutputV3 merge_out;
|
|
870
|
+
|
|
871
|
+
ASSERT_FALSE(fail_operator.FullMergeV3(merge_in, &merge_out));
|
|
872
|
+
ASSERT_EQ(merge_out.op_failure_scope,
|
|
873
|
+
MergeOperator::OpFailureScope::kMustMerge);
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
|
|
610
877
|
} // namespace ROCKSDB_NAMESPACE
|
|
611
878
|
|
|
612
879
|
int main(int argc, char** argv) {
|
|
@@ -149,6 +149,7 @@ TEST_F(PerfContextTest, SeekIntoDeletion) {
|
|
|
149
149
|
ASSERT_TRUE(iter->Valid());
|
|
150
150
|
StopWatchNano timer2(SystemClock::Default().get(), true);
|
|
151
151
|
iter->Next();
|
|
152
|
+
ASSERT_OK(iter->status());
|
|
152
153
|
auto elapsed_nanos2 = timer2.ElapsedNanos();
|
|
153
154
|
if (FLAGS_verbose) {
|
|
154
155
|
std::cout << "next cmp: " << get_perf_context()->user_key_comparison_count
|
|
@@ -262,7 +263,7 @@ void ProfileQueries(bool enabled_time = false) {
|
|
|
262
263
|
for (const int i : keys) {
|
|
263
264
|
if (i == kFlushFlag) {
|
|
264
265
|
FlushOptions fo;
|
|
265
|
-
db->Flush(fo);
|
|
266
|
+
ASSERT_OK(db->Flush(fo));
|
|
266
267
|
continue;
|
|
267
268
|
}
|
|
268
269
|
|
|
@@ -1092,6 +1093,7 @@ TEST_F(PerfContextTest, MergeOperandCount) {
|
|
|
1092
1093
|
|
|
1093
1094
|
get_perf_context()->Reset();
|
|
1094
1095
|
}
|
|
1096
|
+
ASSERT_OK(it->status());
|
|
1095
1097
|
}
|
|
1096
1098
|
|
|
1097
1099
|
// Backward iteration
|
|
@@ -1104,6 +1106,7 @@ TEST_F(PerfContextTest, MergeOperandCount) {
|
|
|
1104
1106
|
|
|
1105
1107
|
get_perf_context()->Reset();
|
|
1106
1108
|
}
|
|
1109
|
+
ASSERT_OK(it->status());
|
|
1107
1110
|
}
|
|
1108
1111
|
};
|
|
1109
1112
|
|
|
@@ -1111,7 +1114,7 @@ TEST_F(PerfContextTest, MergeOperandCount) {
|
|
|
1111
1114
|
verify();
|
|
1112
1115
|
|
|
1113
1116
|
// Verify counters when reading from table files
|
|
1114
|
-
db->Flush(FlushOptions());
|
|
1117
|
+
ASSERT_OK(db->Flush(FlushOptions()));
|
|
1115
1118
|
|
|
1116
1119
|
verify();
|
|
1117
1120
|
}
|
|
@@ -42,15 +42,16 @@ class PeriodicTaskScheduler {
|
|
|
42
42
|
PeriodicTaskScheduler& operator=(const PeriodicTaskScheduler&) = delete;
|
|
43
43
|
PeriodicTaskScheduler& operator=(PeriodicTaskScheduler&&) = delete;
|
|
44
44
|
|
|
45
|
-
// Register a task with its default repeat period
|
|
45
|
+
// Register a task with its default repeat period. Thread safe call.
|
|
46
46
|
Status Register(PeriodicTaskType task_type, const PeriodicTaskFunc& fn);
|
|
47
47
|
|
|
48
48
|
// Register a task with specified repeat period. 0 is an invalid argument
|
|
49
|
-
// (kInvalidPeriodSec). To stop the task, please use Unregister()
|
|
49
|
+
// (kInvalidPeriodSec). To stop the task, please use Unregister().
|
|
50
|
+
// Thread safe call.
|
|
50
51
|
Status Register(PeriodicTaskType task_type, const PeriodicTaskFunc& fn,
|
|
51
52
|
uint64_t repeat_period_seconds);
|
|
52
53
|
|
|
53
|
-
// Unregister the task
|
|
54
|
+
// Unregister the task. Thread safe call.
|
|
54
55
|
Status Unregister(PeriodicTaskType task_type);
|
|
55
56
|
|
|
56
57
|
#ifndef NDEBUG
|
|
@@ -105,4 +106,3 @@ class PeriodicTaskScheduler {
|
|
|
105
106
|
};
|
|
106
107
|
|
|
107
108
|
} // namespace ROCKSDB_NAMESPACE
|
|
108
|
-
|
|
@@ -123,6 +123,7 @@ class PlainTableDBTest : public testing::Test,
|
|
|
123
123
|
// Return the current option configuration.
|
|
124
124
|
Options CurrentOptions() {
|
|
125
125
|
Options options;
|
|
126
|
+
options.level_compaction_dynamic_level_bytes = false;
|
|
126
127
|
|
|
127
128
|
PlainTableOptions plain_table_options;
|
|
128
129
|
plain_table_options.user_key_len = 0;
|
|
@@ -896,6 +897,7 @@ TEST_P(PlainTableDBTest, IteratorLargeKeys) {
|
|
|
896
897
|
}
|
|
897
898
|
|
|
898
899
|
ASSERT_TRUE(!iter->Valid());
|
|
900
|
+
ASSERT_OK(iter->status());
|
|
899
901
|
|
|
900
902
|
delete iter;
|
|
901
903
|
}
|
|
@@ -944,6 +946,7 @@ TEST_P(PlainTableDBTest, IteratorLargeKeysWithPrefix) {
|
|
|
944
946
|
}
|
|
945
947
|
|
|
946
948
|
ASSERT_TRUE(!iter->Valid());
|
|
949
|
+
ASSERT_OK(iter->status());
|
|
947
950
|
|
|
948
951
|
delete iter;
|
|
949
952
|
}
|
|
@@ -36,6 +36,10 @@ class TruncatedRangeDelIterator {
|
|
|
36
36
|
const InternalKeyComparator* icmp, const InternalKey* smallest,
|
|
37
37
|
const InternalKey* largest);
|
|
38
38
|
|
|
39
|
+
void SetRangeDelReadSeqno(SequenceNumber read_seqno) {
|
|
40
|
+
iter_->SetRangeDelReadSeqno(read_seqno);
|
|
41
|
+
}
|
|
42
|
+
|
|
39
43
|
bool Valid() const;
|
|
40
44
|
|
|
41
45
|
void Next() { iter_->TopNext(); }
|
|
@@ -148,6 +148,10 @@ class FragmentedRangeTombstoneIterator : public InternalIterator {
|
|
|
148
148
|
const InternalKeyComparator& icmp, SequenceNumber upper_bound,
|
|
149
149
|
const Slice* ts_upper_bound = nullptr, SequenceNumber lower_bound = 0);
|
|
150
150
|
|
|
151
|
+
void SetRangeDelReadSeqno(SequenceNumber read_seqno) override {
|
|
152
|
+
upper_bound_ = read_seqno;
|
|
153
|
+
}
|
|
154
|
+
|
|
151
155
|
void SeekToFirst() override;
|
|
152
156
|
void SeekToLast() override;
|
|
153
157
|
|