@nxtedition/rocksdb 10.0.13 → 10.0.15
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/.tap/coverage/213879bb-47ae-470e-bb54-f4157d9f60e2.json +162898 -0
- package/.tap/processinfo/{4c642b53-6895-4ef0-9391-7c6b8d484262.json → 213879bb-47ae-470e-bb54-f4157d9f60e2.json} +117 -121
- package/.tap/test-results/node_modules/abstract-level/test/get-test.js.tap +0 -0
- package/.tap/test-results/test/abstract-level-test.js.tap +1705 -0
- package/.tap/test-results/test/batch-test.js.tap +12 -0
- package/.tap/test-results/test/chained-batch-gc-test.js.tap +11 -0
- package/.tap/test-results/test/cleanup-hanging-iterators-test.js.tap +58 -0
- package/.tap/test-results/test/clear-gc-test.js.tap +13 -0
- package/.tap/test-results/test/column-test.js.tap +55 -0
- package/.tap/test-results/test/common.js.tap +0 -0
- package/.tap/test-results/test/compression-test.js.tap +30 -0
- package/.tap/test-results/test/db-identity.js.tap +12 -0
- package/.tap/test-results/test/electron.js.tap +0 -0
- package/.tap/test-results/test/env-cleanup-hook-test.js.tap +2 -0
- package/.tap/test-results/test/env-cleanup-hook.js.tap +0 -0
- package/.tap/test-results/test/gc.js.tap +0 -0
- package/.tap/test-results/test/getproperty-test.js.tap +29 -0
- package/.tap/test-results/test/iterator-gc-test.js.tap +4 -0
- package/.tap/test-results/test/iterator-hwm-test.js.tap +24 -0
- package/.tap/test-results/test/iterator-recursion-test.js.tap +12 -0
- package/.tap/test-results/test/iterator-starvation-test.js.tap +2 -0
- package/.tap/test-results/test/iterator-test.js.tap +0 -0
- package/.tap/test-results/test/leak-tester-batch.js.tap +0 -0
- package/.tap/test-results/test/leak-tester-iterator.js.tap +0 -0
- package/.tap/test-results/test/leak-tester.js.tap +0 -0
- package/.tap/test-results/test/lock-test.js.tap +0 -0
- package/.tap/test-results/test/lock.js.tap +0 -0
- package/.tap/test-results/test/make.js.tap +0 -0
- package/.tap/test-results/test/max-rev-merge.js.tap +0 -12
- package/.tap/test-results/test/merge-operator-test.js.tap +0 -0
- package/.tap/test-results/test/mkdir-test.js.tap +0 -0
- package/.tap/test-results/test/segfault-test.js.tap +0 -0
- package/.tap/test-results/test/stack-blower.js.tap +0 -0
- package/binding.cc +42 -34
- package/deps/rocksdb/rocksdb/CMakeLists.txt +44 -14
- package/deps/rocksdb/rocksdb/Makefile +34 -17
- package/deps/rocksdb/rocksdb/TARGETS +27 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +95 -42
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +381 -393
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +88 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +14 -7
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +1 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +21 -19
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +8 -7
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +1 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +89 -13
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +16 -8
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +6 -6
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +15 -9
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +16 -13
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +306 -23
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +3 -4
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +30 -27
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +8 -10
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.cc +20 -0
- package/deps/rocksdb/rocksdb/db/attribute_group_iterator_impl.h +83 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +19 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +18 -21
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +56 -27
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +11 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +20 -19
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +106 -31
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +5 -8
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +4 -2
- package/deps/rocksdb/rocksdb/db/builder.cc +89 -44
- package/deps/rocksdb/rocksdb/db/builder.h +4 -6
- package/deps/rocksdb/rocksdb/db/c.cc +205 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +141 -20
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.cc +47 -0
- package/deps/rocksdb/rocksdb/db/coalescing_iterator.h +79 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +100 -36
- package/deps/rocksdb/rocksdb/db/column_family.h +46 -28
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +168 -46
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +51 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +72 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +87 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +310 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +78 -62
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +33 -96
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +18 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +42 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +20 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +18 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +95 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +6 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +213 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +7 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +16 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +75 -142
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +577 -34
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience.cc +1 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +7 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +366 -136
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +9 -10
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +282 -6
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +551 -150
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +41 -13
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +54 -17
- package/deps/rocksdb/rocksdb/db/db_follower_test.cc +527 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -58
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +34 -45
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +699 -580
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +308 -230
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +180 -107
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +10 -6
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +36 -61
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +347 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.h +54 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +206 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +5 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +41 -39
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +26 -22
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +14 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +126 -46
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +21 -9
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +294 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +116 -78
- package/deps/rocksdb/rocksdb/db/db_iter.h +31 -7
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +34 -14
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +69 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +153 -18
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +9 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +6 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +105 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +97 -111
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -3
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +82 -30
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -22
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +74 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +175 -47
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/db_test.cc +133 -109
- package/deps/rocksdb/rocksdb/db/db_test2.cc +227 -139
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +67 -24
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +140 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +17 -19
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +332 -87
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +250 -30
- package/deps/rocksdb/rocksdb/db/dbformat.cc +41 -8
- package/deps/rocksdb/rocksdb/db/dbformat.h +100 -17
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +48 -8
- package/deps/rocksdb/rocksdb/db/error_handler.cc +102 -116
- package/deps/rocksdb/rocksdb/db/error_handler.h +28 -6
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +263 -99
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +3 -1
- package/deps/rocksdb/rocksdb/db/experimental.cc +1073 -7
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +261 -111
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +263 -183
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +31 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +698 -7
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +5 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +41 -41
- package/deps/rocksdb/rocksdb/db/flush_job.h +11 -8
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -13
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +19 -6
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +12 -12
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +83 -52
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +169 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -6
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
- package/deps/rocksdb/rocksdb/db/job_context.h +17 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +44 -20
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -0
- package/deps/rocksdb/rocksdb/db/log_test.cc +81 -17
- package/deps/rocksdb/rocksdb/db/log_writer.cc +135 -92
- package/deps/rocksdb/rocksdb/db/log_writer.h +11 -10
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -3
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +82 -62
- package/deps/rocksdb/rocksdb/db/memtable.h +17 -9
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +19 -13
- package/deps/rocksdb/rocksdb/db/memtable_list.h +3 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +38 -5
- package/deps/rocksdb/rocksdb/db/merge_context.h +3 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +34 -156
- package/deps/rocksdb/rocksdb/db/merge_helper.h +52 -46
- package/deps/rocksdb/rocksdb/db/merge_test.cc +16 -11
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_impl.h +289 -0
- package/deps/rocksdb/rocksdb/db/multi_cf_iterator_test.cc +918 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/output_validator.cc +8 -12
- package/deps/rocksdb/rocksdb/db/output_validator.h +1 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +23 -4
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +2 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +2 -2
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +0 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +0 -1
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +17 -4
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +6 -3
- package/deps/rocksdb/rocksdb/db/repair.cc +35 -29
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +428 -156
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +393 -227
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +154 -82
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +2 -2
- package/deps/rocksdb/rocksdb/db/table_cache.cc +9 -11
- package/deps/rocksdb/rocksdb/db/table_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +8 -3
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +27 -26
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +23 -23
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +5 -5
- package/deps/rocksdb/rocksdb/db/version_builder.cc +6 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +62 -29
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +30 -11
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +291 -116
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +54 -11
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/version_set.cc +301 -141
- package/deps/rocksdb/rocksdb/db/version_set.h +90 -33
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +817 -193
- package/deps/rocksdb/rocksdb/db/version_util.h +10 -5
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +15 -11
- package/deps/rocksdb/rocksdb/db/wal_manager.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +403 -28
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +2 -2
- package/deps/rocksdb/rocksdb/db/write_batch.cc +204 -18
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +4 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +149 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/write_stall_stats.h +7 -7
- package/deps/rocksdb/rocksdb/db/write_thread.cc +86 -47
- package/deps/rocksdb/rocksdb/db/write_thread.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +176 -68
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +337 -125
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +38 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +126 -34
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +2 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +161 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +267 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +13 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +9 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +535 -86
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +27 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +8 -15
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +46 -21
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +74 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +28 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +426 -151
- package/deps/rocksdb/rocksdb/env/composite_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +6 -6
- package/deps/rocksdb/rocksdb/env/env.cc +21 -11
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +9 -9
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +3 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +3 -3
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -2
- package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -10
- package/deps/rocksdb/rocksdb/env/env_test.cc +24 -18
- package/deps/rocksdb/rocksdb/env/file_system.cc +7 -6
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +3 -3
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +3 -3
- package/deps/rocksdb/rocksdb/env/fs_on_demand.cc +331 -0
- package/deps/rocksdb/rocksdb/env/fs_on_demand.h +139 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -15
- package/deps/rocksdb/rocksdb/env/io_posix.cc +15 -10
- package/deps/rocksdb/rocksdb/env/io_posix.h +86 -92
- package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +6 -6
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +8 -6
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +599 -592
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +312 -200
- package/deps/rocksdb/rocksdb/file/file_util.cc +19 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +34 -24
- package/deps/rocksdb/rocksdb/file/filename.cc +32 -17
- package/deps/rocksdb/rocksdb/file/filename.h +51 -53
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +82 -441
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +7 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -5
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +9 -3
- package/deps/rocksdb/rocksdb/file/read_write_util.h +3 -3
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +6 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +9 -4
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +8 -4
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +110 -89
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +34 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +39 -189
- package/deps/rocksdb/rocksdb/include/rocksdb/attribute_groups.h +114 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +91 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +52 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +146 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +254 -151
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +39 -36
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +431 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +57 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +27 -57
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator_base.h +74 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +146 -71
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +7 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +17 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +10 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +18 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +12 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +118 -116
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +26 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +18 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +8 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +5 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +159 -167
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +52 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +3 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/types_util.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +118 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +87 -45
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +26 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +22 -1
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +7 -9
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +5 -6
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +2 -2
- package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -1
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +3 -3
- package/deps/rocksdb/rocksdb/memory/arena.h +11 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +17 -2
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +1 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +11 -10
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +8 -7
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +3 -3
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +2 -2
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +20 -10
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +15 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +7 -3
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +14 -14
- package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +4 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +8 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +5 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +64 -58
- package/deps/rocksdb/rocksdb/monitoring/statistics_impl.h +11 -12
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +7 -1
- package/deps/rocksdb/rocksdb/options/cf_options.cc +20 -28
- package/deps/rocksdb/rocksdb/options/cf_options.h +7 -14
- package/deps/rocksdb/rocksdb/options/configurable.cc +20 -12
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +4 -6
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +3 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +22 -48
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -3
- package/deps/rocksdb/rocksdb/options/offpeak_time_info.cc +59 -0
- package/deps/rocksdb/rocksdb/options/offpeak_time_info.h +37 -0
- package/deps/rocksdb/rocksdb/options/options.cc +14 -6
- package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -13
- package/deps/rocksdb/rocksdb/options/options_helper.h +2 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +35 -26
- package/deps/rocksdb/rocksdb/options/options_parser.h +4 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +3 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +30 -23
- package/deps/rocksdb/rocksdb/port/lang.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_example.h +7 -7
- package/deps/rocksdb/rocksdb/port/port_posix.cc +7 -7
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -7
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +85 -24
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -2
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +4 -4
- package/deps/rocksdb/rocksdb/port/win/io_win.h +13 -17
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +4 -4
- package/deps/rocksdb/rocksdb/src.mk +16 -1
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +39 -15
- package/deps/rocksdb/rocksdb/table/block_based/block.h +7 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +80 -40
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +20 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +228 -122
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +50 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +82 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +17 -20
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +47 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +163 -50
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +23 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +32 -27
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +7 -10
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +25 -7
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -5
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +4 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -5
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -5
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +138 -86
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +22 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +26 -13
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +11 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +11 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +10 -5
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +6 -7
- package/deps/rocksdb/rocksdb/table/format.cc +15 -21
- package/deps/rocksdb/rocksdb/table/format.h +8 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +121 -78
- package/deps/rocksdb/rocksdb/table/get_context.h +11 -6
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +12 -5
- package/deps/rocksdb/rocksdb/table/iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -1
- package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +5 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +4 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +15 -11
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +8 -4
- package/deps/rocksdb/rocksdb/table/mock_table.cc +12 -8
- package/deps/rocksdb/rocksdb/table/mock_table.h +1 -3
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -21
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +4 -14
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +7 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +7 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +15 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +75 -30
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +7 -2
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +76 -11
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +358 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +93 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +12 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +12 -6
- package/deps/rocksdb/rocksdb/table/table_iterator.h +69 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/table/table_test.cc +732 -121
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +3 -1
- package/deps/rocksdb/rocksdb/table/two_level_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/unique_id.cc +2 -2
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +2 -2
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +5 -5
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -6
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +2 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +56 -32
- package/deps/rocksdb/rocksdb/test_util/testutil.h +57 -34
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +18 -1
- 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 +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +210 -112
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +22 -27
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +10 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +328 -59
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +34 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +64 -17
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +8 -1
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +3 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +136 -10
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +50 -8
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +51 -45
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +10 -10
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +14 -4
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +2 -1
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +2 -2
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +2 -4
- package/deps/rocksdb/rocksdb/util/atomic.h +111 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +5 -1
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +12 -2
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/coding.h +34 -38
- package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/comparator.cc +18 -5
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +4 -4
- package/deps/rocksdb/rocksdb/util/crc32c.cc +3 -6
- package/deps/rocksdb/rocksdb/util/crc32c.h +3 -3
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +3 -4
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -2
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -4
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -2
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +3 -3
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +83 -59
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/hash.h +4 -4
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +3 -3
- package/deps/rocksdb/rocksdb/util/murmurhash.cc +1 -1
- package/deps/rocksdb/rocksdb/util/random.cc +3 -4
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +23 -43
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +21 -16
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +44 -24
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +2 -3
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +2 -10
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +2 -2
- package/deps/rocksdb/rocksdb/util/slice.cc +4 -5
- package/deps/rocksdb/rocksdb/util/slice_test.cc +70 -4
- package/deps/rocksdb/rocksdb/util/status.cc +1 -1
- package/deps/rocksdb/rocksdb/util/stderr_logger.cc +39 -7
- package/deps/rocksdb/rocksdb/util/stderr_logger.h +12 -2
- package/deps/rocksdb/rocksdb/util/string_util.cc +31 -18
- package/deps/rocksdb/rocksdb/util/string_util.h +9 -9
- package/deps/rocksdb/rocksdb/util/string_util_test.cc +36 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +5 -5
- package/deps/rocksdb/rocksdb/util/thread_local.cc +1 -1
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +3 -4
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +1 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +12 -16
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +5 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +116 -116
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -31
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -22
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +9 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +3 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +22 -55
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +113 -74
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +36 -24
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +27 -11
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +68 -54
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +16 -16
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +29 -9
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +27 -14
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +8 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +3 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +9 -7
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +7 -10
- package/deps/rocksdb/rocksdb/utilities/debug.cc +6 -2
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +18 -11
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +18 -25
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +32 -23
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +51 -48
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +10 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +5 -6
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +5 -6
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -8
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +29 -21
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +14 -15
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +3 -5
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +8 -8
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +6 -9
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +6 -6
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +17 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +442 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +27 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +28 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +70 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +50 -22
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +64 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +76 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +573 -77
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +65 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +13 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +14 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +37 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +23 -29
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +31 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +8 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +3 -4
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +34 -18
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +21 -25
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/types_util.cc +88 -0
- package/deps/rocksdb/rocksdb/utilities/types_util_test.cc +98 -0
- package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +463 -90
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +259 -76
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +70 -14
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +609 -10
- package/deps/rocksdb/rocksdb.gyp +8 -4
- package/index.js +18 -4
- package/max_rev_operator.h +2 -0
- package/package.json +2 -2
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +29 -5
- package/.tap/coverage/4c642b53-6895-4ef0-9391-7c6b8d484262.json +0 -14334
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +0 -57
|
@@ -375,7 +375,7 @@ TEST_F(DBBasicTestWithTimestamp, UpdateFullHistoryTsLowWithPublicAPI) {
|
|
|
375
375
|
ts_low_str_long);
|
|
376
376
|
ASSERT_EQ(s, Status::InvalidArgument());
|
|
377
377
|
// test IncreaseFullHistoryTsLow with a timestamp which is null
|
|
378
|
-
std::string ts_low_str_null
|
|
378
|
+
std::string ts_low_str_null;
|
|
379
379
|
s = db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(),
|
|
380
380
|
ts_low_str_null);
|
|
381
381
|
ASSERT_EQ(s, Status::InvalidArgument());
|
|
@@ -430,8 +430,8 @@ TEST_F(DBBasicTestWithTimestamp, GetApproximateSizes) {
|
|
|
430
430
|
std::vector<Range> ranges;
|
|
431
431
|
std::string start_tmp = Key(10);
|
|
432
432
|
std::string end_tmp = Key(20);
|
|
433
|
-
ranges.emplace_back(
|
|
434
|
-
ranges.emplace_back(
|
|
433
|
+
ranges.emplace_back(start_tmp, end_tmp);
|
|
434
|
+
ranges.emplace_back(start, end);
|
|
435
435
|
uint64_t range_sizes[2];
|
|
436
436
|
ASSERT_OK(db_->GetApproximateSizes(size_approx_options, default_cf,
|
|
437
437
|
ranges.data(), 2, range_sizes));
|
|
@@ -598,8 +598,7 @@ TEST_F(DBBasicTestWithTimestamp, TrimHistoryTest) {
|
|
|
598
598
|
|
|
599
599
|
ColumnFamilyOptions cf_options(options);
|
|
600
600
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
601
|
-
column_families.
|
|
602
|
-
ColumnFamilyDescriptor(kDefaultColumnFamilyName, cf_options));
|
|
601
|
+
column_families.emplace_back(kDefaultColumnFamilyName, cf_options);
|
|
603
602
|
DBOptions db_options(options);
|
|
604
603
|
|
|
605
604
|
// Trim data whose version > Timestamp(5, 0), read(k1, ts(7)) <- NOT_FOUND.
|
|
@@ -642,8 +641,7 @@ TEST_F(DBBasicTestWithTimestamp, OpenAndTrimHistoryInvalidOptionTest) {
|
|
|
642
641
|
|
|
643
642
|
ColumnFamilyOptions cf_options(options);
|
|
644
643
|
std::vector<ColumnFamilyDescriptor> column_families;
|
|
645
|
-
column_families.
|
|
646
|
-
ColumnFamilyDescriptor(kDefaultColumnFamilyName, cf_options));
|
|
644
|
+
column_families.emplace_back(kDefaultColumnFamilyName, cf_options);
|
|
647
645
|
DBOptions db_options(options);
|
|
648
646
|
|
|
649
647
|
// OpenAndTrimHistory should not work with avoid_flush_during_recovery
|
|
@@ -1646,35 +1644,88 @@ TEST_F(DBBasicTestWithTimestamp, GetWithRowCache) {
|
|
|
1646
1644
|
|
|
1647
1645
|
const Snapshot* snap_with_nothing = db_->GetSnapshot();
|
|
1648
1646
|
ASSERT_OK(db_->Put(write_opts, "foo", ts_early, "bar"));
|
|
1649
|
-
|
|
1647
|
+
ASSERT_OK(db_->Put(write_opts, "foo2", ts_early, "bar2"));
|
|
1648
|
+
ASSERT_OK(db_->Put(write_opts, "foo3", ts_early, "bar3"));
|
|
1650
1649
|
|
|
1651
|
-
|
|
1652
|
-
for (int i = 0; i < 10; i++) {
|
|
1653
|
-
std::string numStr = std::to_string(i);
|
|
1654
|
-
ASSERT_OK(db_->Put(write_opts, numStr, ts_later, numStr));
|
|
1655
|
-
}
|
|
1650
|
+
const Snapshot* snap_with_foo = db_->GetSnapshot();
|
|
1656
1651
|
ASSERT_OK(Flush());
|
|
1657
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 0);
|
|
1658
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 0);
|
|
1659
1652
|
|
|
1660
1653
|
ReadOptions read_opts;
|
|
1661
1654
|
read_opts.timestamp = &ts_later_slice;
|
|
1662
1655
|
|
|
1663
1656
|
std::string read_value;
|
|
1664
1657
|
std::string read_ts;
|
|
1665
|
-
Status s
|
|
1666
|
-
ASSERT_OK(s);
|
|
1667
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 0);
|
|
1668
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 1);
|
|
1669
|
-
ASSERT_EQ(read_ts, ts_early);
|
|
1658
|
+
Status s;
|
|
1670
1659
|
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT),
|
|
1674
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1660
|
+
int expected_hit_count = 0;
|
|
1661
|
+
int expected_miss_count = 0;
|
|
1662
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1663
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), expected_miss_count);
|
|
1664
|
+
|
|
1665
|
+
{
|
|
1666
|
+
read_opts.timestamp = nullptr;
|
|
1667
|
+
s = db_->Get(read_opts, "foo", &read_value);
|
|
1668
|
+
ASSERT_NOK(s);
|
|
1669
|
+
ASSERT_TRUE(s.IsInvalidArgument());
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
// Mix use of Get
|
|
1673
|
+
{
|
|
1674
|
+
read_opts.timestamp = &ts_later_slice;
|
|
1675
|
+
|
|
1676
|
+
// Use Get without ts first, expect cache entry to store the correct ts
|
|
1677
|
+
s = db_->Get(read_opts, "foo2", &read_value);
|
|
1678
|
+
ASSERT_OK(s);
|
|
1679
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1680
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1681
|
+
++expected_miss_count);
|
|
1682
|
+
ASSERT_EQ(read_value, "bar2");
|
|
1683
|
+
|
|
1684
|
+
s = db_->Get(read_opts, "foo2", &read_value, &read_ts);
|
|
1685
|
+
ASSERT_OK(s);
|
|
1686
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), ++expected_hit_count);
|
|
1687
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), expected_miss_count);
|
|
1688
|
+
ASSERT_EQ(read_ts, ts_early);
|
|
1689
|
+
ASSERT_EQ(read_value, "bar2");
|
|
1690
|
+
|
|
1691
|
+
// Use Get with ts first, expect the Get without ts can get correct record
|
|
1692
|
+
s = db_->Get(read_opts, "foo3", &read_value, &read_ts);
|
|
1693
|
+
ASSERT_OK(s);
|
|
1694
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1695
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1696
|
+
++expected_miss_count);
|
|
1697
|
+
ASSERT_EQ(read_ts, ts_early);
|
|
1698
|
+
ASSERT_EQ(read_value, "bar3");
|
|
1699
|
+
|
|
1700
|
+
s = db_->Get(read_opts, "foo3", &read_value);
|
|
1701
|
+
ASSERT_OK(s);
|
|
1702
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), ++expected_hit_count);
|
|
1703
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), expected_miss_count);
|
|
1704
|
+
ASSERT_EQ(read_value, "bar3");
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
{
|
|
1708
|
+
// Test with consecutive calls of Get with ts.
|
|
1709
|
+
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1710
|
+
ASSERT_OK(s);
|
|
1711
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1712
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1713
|
+
++expected_miss_count);
|
|
1714
|
+
ASSERT_EQ(read_ts, ts_early);
|
|
1715
|
+
ASSERT_EQ(read_value, "bar");
|
|
1716
|
+
|
|
1717
|
+
// Test repeated get on cache entry
|
|
1718
|
+
for (int i = 0; i < 3; i++) {
|
|
1719
|
+
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1720
|
+
ASSERT_OK(s);
|
|
1721
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT),
|
|
1722
|
+
++expected_hit_count);
|
|
1723
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1724
|
+
expected_miss_count);
|
|
1725
|
+
ASSERT_EQ(read_ts, ts_early);
|
|
1726
|
+
ASSERT_EQ(read_value, "bar");
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1678
1729
|
|
|
1679
1730
|
{
|
|
1680
1731
|
std::string ts_nothing = Timestamp(0, 0);
|
|
@@ -1682,41 +1733,43 @@ TEST_F(DBBasicTestWithTimestamp, GetWithRowCache) {
|
|
|
1682
1733
|
read_opts.timestamp = &ts_nothing_slice;
|
|
1683
1734
|
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1684
1735
|
ASSERT_TRUE(s.IsNotFound());
|
|
1685
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT),
|
|
1686
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1687
|
-
|
|
1688
|
-
read_opts.timestamp = &ts_later_slice;
|
|
1689
|
-
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1690
|
-
ASSERT_OK(s);
|
|
1691
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 2);
|
|
1692
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 2);
|
|
1736
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1737
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1738
|
+
++expected_miss_count);
|
|
1693
1739
|
}
|
|
1694
1740
|
|
|
1695
1741
|
{
|
|
1696
1742
|
read_opts.snapshot = snap_with_foo;
|
|
1697
|
-
|
|
1743
|
+
read_opts.timestamp = &ts_later_slice;
|
|
1698
1744
|
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1699
1745
|
ASSERT_OK(s);
|
|
1700
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT),
|
|
1701
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1746
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1747
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1748
|
+
++expected_miss_count);
|
|
1749
|
+
ASSERT_EQ(read_ts, ts_early);
|
|
1750
|
+
ASSERT_EQ(read_value, "bar");
|
|
1702
1751
|
|
|
1703
1752
|
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1704
1753
|
ASSERT_OK(s);
|
|
1705
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT),
|
|
1706
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1754
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), ++expected_hit_count);
|
|
1755
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), expected_miss_count);
|
|
1756
|
+
ASSERT_EQ(read_ts, ts_early);
|
|
1757
|
+
ASSERT_EQ(read_value, "bar");
|
|
1707
1758
|
}
|
|
1708
1759
|
|
|
1709
1760
|
{
|
|
1710
1761
|
read_opts.snapshot = snap_with_nothing;
|
|
1711
1762
|
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1712
1763
|
ASSERT_TRUE(s.IsNotFound());
|
|
1713
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT),
|
|
1714
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1764
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1765
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1766
|
+
++expected_miss_count);
|
|
1715
1767
|
|
|
1716
1768
|
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1717
1769
|
ASSERT_TRUE(s.IsNotFound());
|
|
1718
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT),
|
|
1719
|
-
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1770
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), expected_hit_count);
|
|
1771
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS),
|
|
1772
|
+
++expected_miss_count);
|
|
1720
1773
|
}
|
|
1721
1774
|
|
|
1722
1775
|
db_->ReleaseSnapshot(snap_with_nothing);
|
|
@@ -1724,6 +1777,65 @@ TEST_F(DBBasicTestWithTimestamp, GetWithRowCache) {
|
|
|
1724
1777
|
Close();
|
|
1725
1778
|
}
|
|
1726
1779
|
|
|
1780
|
+
TEST_F(DBBasicTestWithTimestamp, GetWithRowCacheMultiSST) {
|
|
1781
|
+
BlockBasedTableOptions table_options;
|
|
1782
|
+
table_options.block_size = 1;
|
|
1783
|
+
Options options = CurrentOptions();
|
|
1784
|
+
options.env = env_;
|
|
1785
|
+
options.create_if_missing = true;
|
|
1786
|
+
options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
|
|
1787
|
+
LRUCacheOptions cache_options;
|
|
1788
|
+
cache_options.capacity = 8192;
|
|
1789
|
+
options.row_cache = cache_options.MakeSharedRowCache();
|
|
1790
|
+
|
|
1791
|
+
const size_t kTimestampSize = Timestamp(0, 0).size();
|
|
1792
|
+
TestComparator test_cmp(kTimestampSize);
|
|
1793
|
+
options.comparator = &test_cmp;
|
|
1794
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
1795
|
+
options.merge_operator = MergeOperators::CreateStringAppendTESTOperator();
|
|
1796
|
+
options.disable_auto_compactions = true;
|
|
1797
|
+
|
|
1798
|
+
DestroyAndReopen(options);
|
|
1799
|
+
|
|
1800
|
+
std::string ts_early = Timestamp(1, 0);
|
|
1801
|
+
std::string ts_later = Timestamp(10, 0);
|
|
1802
|
+
Slice ts_later_slice = ts_later;
|
|
1803
|
+
|
|
1804
|
+
ASSERT_OK(db_->Put(WriteOptions(), "foo", ts_early, "v1"));
|
|
1805
|
+
ASSERT_OK(Flush());
|
|
1806
|
+
|
|
1807
|
+
ColumnFamilyHandle* default_cf = db_->DefaultColumnFamily();
|
|
1808
|
+
ASSERT_OK(
|
|
1809
|
+
db_->Merge(WriteOptions(), default_cf, "foo", Timestamp(2, 0), "v2"));
|
|
1810
|
+
ASSERT_OK(
|
|
1811
|
+
db_->Merge(WriteOptions(), default_cf, "foo", Timestamp(3, 0), "v3"));
|
|
1812
|
+
ASSERT_OK(Flush());
|
|
1813
|
+
|
|
1814
|
+
ReadOptions read_opts;
|
|
1815
|
+
read_opts.timestamp = &ts_later_slice;
|
|
1816
|
+
|
|
1817
|
+
std::string read_value;
|
|
1818
|
+
std::string read_ts;
|
|
1819
|
+
Status s;
|
|
1820
|
+
|
|
1821
|
+
{
|
|
1822
|
+
// Since there are two SST files, will trigger the table lookup twice.
|
|
1823
|
+
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1824
|
+
ASSERT_OK(s);
|
|
1825
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 0);
|
|
1826
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 2);
|
|
1827
|
+
ASSERT_EQ(read_ts, Timestamp(3, 0));
|
|
1828
|
+
ASSERT_EQ(read_value, "v1,v2,v3");
|
|
1829
|
+
|
|
1830
|
+
s = db_->Get(read_opts, "foo", &read_value, &read_ts);
|
|
1831
|
+
ASSERT_OK(s);
|
|
1832
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 2);
|
|
1833
|
+
ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 2);
|
|
1834
|
+
ASSERT_EQ(read_ts, Timestamp(3, 0));
|
|
1835
|
+
ASSERT_EQ(read_value, "v1,v2,v3");
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1838
|
+
|
|
1727
1839
|
TEST_P(DBBasicTestWithTimestampTableOptions, MultiGetPrefixFilter) {
|
|
1728
1840
|
Options options = CurrentOptions();
|
|
1729
1841
|
options.env = env_;
|
|
@@ -2498,10 +2610,10 @@ TEST_F(DataVisibilityTest, MultiGetWithoutSnapshot) {
|
|
|
2498
2610
|
|
|
2499
2611
|
SyncPoint::GetInstance()->DisableProcessing();
|
|
2500
2612
|
SyncPoint::GetInstance()->LoadDependency({
|
|
2501
|
-
{"DBImpl::
|
|
2613
|
+
{"DBImpl::MultiCFSnapshot:AfterGetSeqNum1",
|
|
2502
2614
|
"DataVisibilityTest::MultiGetWithoutSnapshot:BeforePut"},
|
|
2503
2615
|
{"DataVisibilityTest::MultiGetWithoutSnapshot:AfterPut",
|
|
2504
|
-
"DBImpl::
|
|
2616
|
+
"DBImpl::MultiCFSnapshot:AfterGetSeqNum2"},
|
|
2505
2617
|
});
|
|
2506
2618
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
2507
2619
|
port::Thread writer_thread([this]() {
|
|
@@ -2520,7 +2632,7 @@ TEST_F(DataVisibilityTest, MultiGetWithoutSnapshot) {
|
|
|
2520
2632
|
auto ss = db_->MultiGet(read_opts, keys, &values);
|
|
2521
2633
|
|
|
2522
2634
|
writer_thread.join();
|
|
2523
|
-
for (auto s : ss) {
|
|
2635
|
+
for (const auto& s : ss) {
|
|
2524
2636
|
ASSERT_TRUE(s.IsNotFound());
|
|
2525
2637
|
}
|
|
2526
2638
|
VerifyDefaultCF();
|
|
@@ -2790,8 +2902,8 @@ TEST_P(DBBasicTestWithTimestampCompressionSettings, PutDeleteGet) {
|
|
|
2790
2902
|
// A class which remembers the name of each flushed file.
|
|
2791
2903
|
class FlushedFileCollector : public EventListener {
|
|
2792
2904
|
public:
|
|
2793
|
-
FlushedFileCollector()
|
|
2794
|
-
~FlushedFileCollector() override
|
|
2905
|
+
FlushedFileCollector() = default;
|
|
2906
|
+
~FlushedFileCollector() override = default;
|
|
2795
2907
|
|
|
2796
2908
|
void OnFlushCompleted(DB* /*db*/, const FlushJobInfo& info) override {
|
|
2797
2909
|
InstrumentedMutexLock lock(&mutex_);
|
|
@@ -2973,7 +3085,7 @@ TEST_F(DBBasicTestWithTimestamp, BatchWriteAndMultiGet) {
|
|
|
2973
3085
|
key_vals.push_back(Key1(j));
|
|
2974
3086
|
}
|
|
2975
3087
|
for (size_t j = 0; j != kNumKeysPerTimestamp; ++j) {
|
|
2976
|
-
keys.
|
|
3088
|
+
keys.emplace_back(key_vals[j]);
|
|
2977
3089
|
}
|
|
2978
3090
|
|
|
2979
3091
|
ReadOptions ropts;
|
|
@@ -3378,7 +3490,7 @@ TEST_F(UpdateFullHistoryTsLowTest, ConcurrentUpdate) {
|
|
|
3378
3490
|
VersionEdit* version_edit;
|
|
3379
3491
|
SyncPoint::GetInstance()->SetCallBack(
|
|
3380
3492
|
"DBImpl::IncreaseFullHistoryTsLowImpl:BeforeEdit",
|
|
3381
|
-
[&](void* arg) { version_edit =
|
|
3493
|
+
[&](void* arg) { version_edit = static_cast<VersionEdit*>(arg); });
|
|
3382
3494
|
SyncPoint::GetInstance()->SetCallBack(
|
|
3383
3495
|
"VersionSet::LogAndApply:BeforeWriterWaiting",
|
|
3384
3496
|
[&](void* /*arg*/) { version_edit->SetFullHistoryTsLow(higher_ts_low); });
|
|
@@ -3403,7 +3515,7 @@ class HandleFileBoundariesTest
|
|
|
3403
3515
|
: DBBasicTestWithTimestampBase("/handle_file_boundaries") {}
|
|
3404
3516
|
};
|
|
3405
3517
|
|
|
3406
|
-
TEST_P(HandleFileBoundariesTest,
|
|
3518
|
+
TEST_P(HandleFileBoundariesTest, ConfigurePersistUdtWithPut) {
|
|
3407
3519
|
Options options = CurrentOptions();
|
|
3408
3520
|
options.env = env_;
|
|
3409
3521
|
// Write a timestamp that is not the min timestamp to help test the behavior
|
|
@@ -3427,7 +3539,7 @@ TEST_P(HandleFileBoundariesTest, ConfigurePersistUdt) {
|
|
|
3427
3539
|
ASSERT_OK(
|
|
3428
3540
|
db_->Put(WriteOptions(), largest_ukey_without_ts, write_ts, "val2"));
|
|
3429
3541
|
|
|
3430
|
-
// Create a L0 SST file and its record is added to the
|
|
3542
|
+
// Create a L0 SST file and its record is added to the Manifest.
|
|
3431
3543
|
ASSERT_OK(Flush());
|
|
3432
3544
|
Close();
|
|
3433
3545
|
|
|
@@ -3459,6 +3571,61 @@ TEST_P(HandleFileBoundariesTest, ConfigurePersistUdt) {
|
|
|
3459
3571
|
Close();
|
|
3460
3572
|
}
|
|
3461
3573
|
|
|
3574
|
+
TEST_P(HandleFileBoundariesTest, ConfigurePersistUdtWithRangeDelete) {
|
|
3575
|
+
Options options = CurrentOptions();
|
|
3576
|
+
options.env = env_;
|
|
3577
|
+
// Write a timestamp that is not the min/max timestamp to help test the
|
|
3578
|
+
// behavior of flag `persist_user_defined_timestamps`.
|
|
3579
|
+
std::string write_ts;
|
|
3580
|
+
std::string min_ts;
|
|
3581
|
+
std::string max_ts;
|
|
3582
|
+
PutFixed64(&write_ts, 1);
|
|
3583
|
+
PutFixed64(&min_ts, 0);
|
|
3584
|
+
PutFixed64(&max_ts, std::numeric_limits<uint64_t>::max());
|
|
3585
|
+
std::string smallest_ukey_without_ts = "bar";
|
|
3586
|
+
std::string largest_ukey_without_ts = "foo";
|
|
3587
|
+
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
3588
|
+
bool persist_udt = test::ShouldPersistUDT(GetParam());
|
|
3589
|
+
options.persist_user_defined_timestamps = persist_udt;
|
|
3590
|
+
if (!persist_udt) {
|
|
3591
|
+
options.allow_concurrent_memtable_write = false;
|
|
3592
|
+
}
|
|
3593
|
+
DestroyAndReopen(options);
|
|
3594
|
+
|
|
3595
|
+
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
|
|
3596
|
+
smallest_ukey_without_ts, largest_ukey_without_ts,
|
|
3597
|
+
write_ts));
|
|
3598
|
+
|
|
3599
|
+
// Create a L0 SST file and its record is added to the Manifest.
|
|
3600
|
+
ASSERT_OK(Flush());
|
|
3601
|
+
Close();
|
|
3602
|
+
|
|
3603
|
+
options.create_if_missing = false;
|
|
3604
|
+
// Reopen the DB and process manifest file.
|
|
3605
|
+
Reopen(options);
|
|
3606
|
+
|
|
3607
|
+
std::vector<std::vector<FileMetaData>> level_to_files;
|
|
3608
|
+
dbfull()->TEST_GetFilesMetaData(dbfull()->DefaultColumnFamily(),
|
|
3609
|
+
&level_to_files);
|
|
3610
|
+
ASSERT_GT(level_to_files.size(), 1);
|
|
3611
|
+
// L0 only has one SST file.
|
|
3612
|
+
ASSERT_EQ(level_to_files[0].size(), 1);
|
|
3613
|
+
auto file_meta = level_to_files[0][0];
|
|
3614
|
+
if (persist_udt) {
|
|
3615
|
+
ASSERT_EQ(smallest_ukey_without_ts + write_ts,
|
|
3616
|
+
file_meta.smallest.user_key());
|
|
3617
|
+
} else {
|
|
3618
|
+
ASSERT_EQ(smallest_ukey_without_ts + min_ts, file_meta.smallest.user_key());
|
|
3619
|
+
}
|
|
3620
|
+
// When right file boundary comes from range deletion, it uses max timestamp
|
|
3621
|
+
// and a range deletion sentinel that uses the max sequence number to mark the
|
|
3622
|
+
// end key exclusive. This is regardless of whether timestamp is persisted.
|
|
3623
|
+
ASSERT_EQ(largest_ukey_without_ts + max_ts, file_meta.largest.user_key());
|
|
3624
|
+
auto largest_footer = ExtractInternalKeyFooter(file_meta.largest.Encode());
|
|
3625
|
+
ASSERT_EQ(largest_footer, kRangeTombstoneSentinel);
|
|
3626
|
+
Close();
|
|
3627
|
+
}
|
|
3628
|
+
|
|
3462
3629
|
INSTANTIATE_TEST_CASE_P(
|
|
3463
3630
|
ConfigurePersistUdt, HandleFileBoundariesTest,
|
|
3464
3631
|
::testing::Values(
|
|
@@ -3679,12 +3846,12 @@ TEST_F(DBBasicTestWithTimestamp, FullHistoryTsLowSanityCheckFail) {
|
|
|
3679
3846
|
std::vector<Slice> keys;
|
|
3680
3847
|
std::vector<std::string> values;
|
|
3681
3848
|
for (size_t j = 0; j < 2; ++j) {
|
|
3682
|
-
keys.
|
|
3849
|
+
keys.emplace_back(key_vals[j]);
|
|
3683
3850
|
}
|
|
3684
3851
|
|
|
3685
3852
|
std::vector<Status> statuses =
|
|
3686
3853
|
db_->MultiGet(read_opts, cfhs, keys, &values);
|
|
3687
|
-
for (auto status : statuses) {
|
|
3854
|
+
for (const auto& status : statuses) {
|
|
3688
3855
|
ASSERT_TRUE(status.IsInvalidArgument());
|
|
3689
3856
|
}
|
|
3690
3857
|
}
|
|
@@ -3696,12 +3863,12 @@ TEST_F(DBBasicTestWithTimestamp, FullHistoryTsLowSanityCheckFail) {
|
|
|
3696
3863
|
std::vector<Slice> keys;
|
|
3697
3864
|
std::vector<std::string> values;
|
|
3698
3865
|
for (size_t j = 0; j < 1; ++j) {
|
|
3699
|
-
keys.
|
|
3866
|
+
keys.emplace_back(key_vals[j]);
|
|
3700
3867
|
}
|
|
3701
3868
|
|
|
3702
3869
|
std::vector<Status> statuses =
|
|
3703
3870
|
db_->MultiGet(read_opts, one_cfh, keys, &values);
|
|
3704
|
-
for (auto status : statuses) {
|
|
3871
|
+
for (const auto& status : statuses) {
|
|
3705
3872
|
ASSERT_TRUE(status.IsInvalidArgument());
|
|
3706
3873
|
}
|
|
3707
3874
|
}
|
|
@@ -3714,7 +3881,7 @@ TEST_F(DBBasicTestWithTimestamp, FullHistoryTsLowSanityCheckFail) {
|
|
|
3714
3881
|
Status statuses[] = {Status::OK(), Status::OK()};
|
|
3715
3882
|
db_->MultiGet(read_opts, /*num_keys=*/2, &column_families[0], &keys[0],
|
|
3716
3883
|
&values[0], &statuses[0], /*sorted_input=*/false);
|
|
3717
|
-
for (auto status : statuses) {
|
|
3884
|
+
for (const auto& status : statuses) {
|
|
3718
3885
|
ASSERT_TRUE(status.IsInvalidArgument());
|
|
3719
3886
|
}
|
|
3720
3887
|
}
|
|
@@ -3727,7 +3894,7 @@ TEST_F(DBBasicTestWithTimestamp, FullHistoryTsLowSanityCheckFail) {
|
|
|
3727
3894
|
Status statuses[] = {Status::OK()};
|
|
3728
3895
|
db_->MultiGet(read_opts, /*num_keys=*/1, &one_column_family[0], &keys[0],
|
|
3729
3896
|
&values[0], &statuses[0], /*sorted_input=*/false);
|
|
3730
|
-
for (auto status : statuses) {
|
|
3897
|
+
for (const auto& status : statuses) {
|
|
3731
3898
|
ASSERT_TRUE(status.IsInvalidArgument());
|
|
3732
3899
|
}
|
|
3733
3900
|
}
|
|
@@ -3894,42 +4061,80 @@ TEST_F(DBBasicTestWithTimestamp,
|
|
|
3894
4061
|
Close();
|
|
3895
4062
|
}
|
|
3896
4063
|
|
|
3897
|
-
|
|
4064
|
+
class DeleteRangeWithTimestampTableOptions
|
|
4065
|
+
: public DBBasicTestWithTimestampBase,
|
|
4066
|
+
public testing::WithParamInterface<
|
|
4067
|
+
std::tuple<BlockBasedTableOptions::IndexType,
|
|
4068
|
+
test::UserDefinedTimestampTestMode>> {
|
|
4069
|
+
public:
|
|
4070
|
+
explicit DeleteRangeWithTimestampTableOptions()
|
|
4071
|
+
: DBBasicTestWithTimestampBase(
|
|
4072
|
+
"delete_range_with_timestamp_table_options") {}
|
|
4073
|
+
};
|
|
4074
|
+
|
|
4075
|
+
INSTANTIATE_TEST_CASE_P(
|
|
4076
|
+
Timestamp, DeleteRangeWithTimestampTableOptions,
|
|
4077
|
+
testing::Combine(
|
|
4078
|
+
testing::Values(
|
|
4079
|
+
BlockBasedTableOptions::IndexType::kBinarySearch,
|
|
4080
|
+
BlockBasedTableOptions::IndexType::kHashSearch,
|
|
4081
|
+
BlockBasedTableOptions::IndexType::kTwoLevelIndexSearch,
|
|
4082
|
+
BlockBasedTableOptions::IndexType::kBinarySearchWithFirstKey),
|
|
4083
|
+
testing::Values(
|
|
4084
|
+
test::UserDefinedTimestampTestMode::kNormal,
|
|
4085
|
+
test::UserDefinedTimestampTestMode::kStripUserDefinedTimestamp)));
|
|
4086
|
+
|
|
4087
|
+
TEST_P(DeleteRangeWithTimestampTableOptions, BasicReadAndIterate) {
|
|
3898
4088
|
const int kNum = 200, kRangeBegin = 50, kRangeEnd = 150, kNumPerFile = 25;
|
|
3899
4089
|
Options options = CurrentOptions();
|
|
4090
|
+
options.disable_auto_compactions = true;
|
|
3900
4091
|
options.prefix_extractor.reset(NewFixedPrefixTransform(3));
|
|
3901
4092
|
options.compression = kNoCompression;
|
|
3902
4093
|
BlockBasedTableOptions bbto;
|
|
3903
|
-
bbto.index_type = GetParam();
|
|
4094
|
+
bbto.index_type = std::get<0>(GetParam());
|
|
3904
4095
|
bbto.block_size = 100;
|
|
3905
4096
|
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
3906
4097
|
options.env = env_;
|
|
3907
4098
|
options.create_if_missing = true;
|
|
3908
|
-
|
|
3909
|
-
|
|
3910
|
-
options.
|
|
4099
|
+
bool persist_udt = test::ShouldPersistUDT(std::get<1>(GetParam()));
|
|
4100
|
+
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
4101
|
+
options.persist_user_defined_timestamps = persist_udt;
|
|
4102
|
+
// UDT in memtables only not compatible with concurrent memtable writes.
|
|
4103
|
+
options.allow_concurrent_memtable_write = persist_udt;
|
|
3911
4104
|
options.memtable_factory.reset(test::NewSpecialSkipListFactory(kNumPerFile));
|
|
3912
4105
|
DestroyAndReopen(options);
|
|
3913
4106
|
|
|
3914
4107
|
// Write half of the keys before the tombstone and half after the tombstone.
|
|
3915
4108
|
// Only covered keys (i.e., within the range and older than the tombstone)
|
|
3916
4109
|
// should be deleted.
|
|
4110
|
+
std::string full_history_ts_low;
|
|
4111
|
+
int cutoff_ts = 0;
|
|
3917
4112
|
for (int i = 0; i < kNum; ++i) {
|
|
4113
|
+
std::string write_ts;
|
|
4114
|
+
PutFixed64(&write_ts, i);
|
|
3918
4115
|
if (i == kNum / 2) {
|
|
3919
4116
|
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
|
|
3920
|
-
Key1(kRangeBegin), Key1(kRangeEnd),
|
|
3921
|
-
Timestamp(i, 0)));
|
|
4117
|
+
Key1(kRangeBegin), Key1(kRangeEnd), write_ts));
|
|
3922
4118
|
}
|
|
3923
|
-
ASSERT_OK(
|
|
3924
|
-
|
|
4119
|
+
ASSERT_OK(
|
|
4120
|
+
db_->Put(WriteOptions(), Key1(i), write_ts, "val" + std::to_string(i)));
|
|
3925
4121
|
if (i == kNum - kNumPerFile) {
|
|
4122
|
+
if (!persist_udt) {
|
|
4123
|
+
// When UDTs are not persisted, mark the timestamps in the Memtables as
|
|
4124
|
+
// all expired so the followed flush can go through.
|
|
4125
|
+
cutoff_ts = i + 1;
|
|
4126
|
+
PutFixed64(&full_history_ts_low, cutoff_ts);
|
|
4127
|
+
ASSERT_OK(db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(),
|
|
4128
|
+
full_history_ts_low));
|
|
4129
|
+
}
|
|
3926
4130
|
ASSERT_OK(Flush());
|
|
3927
4131
|
}
|
|
3928
4132
|
}
|
|
3929
4133
|
|
|
3930
4134
|
ReadOptions read_opts;
|
|
3931
4135
|
read_opts.total_order_seek = true;
|
|
3932
|
-
std::string read_ts
|
|
4136
|
+
std::string read_ts;
|
|
4137
|
+
PutFixed64(&read_ts, kNum);
|
|
3933
4138
|
Slice read_ts_slice = read_ts;
|
|
3934
4139
|
read_opts.timestamp = &read_ts_slice;
|
|
3935
4140
|
{
|
|
@@ -3964,33 +4169,43 @@ TEST_P(DBBasicTestWithTimestampTableOptions, DeleteRangeBaiscReadAndIterate) {
|
|
|
3964
4169
|
ASSERT_OK(iter->status());
|
|
3965
4170
|
ASSERT_EQ(-1, expected);
|
|
3966
4171
|
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
|
|
3970
|
-
|
|
3971
|
-
|
|
3972
|
-
|
|
3973
|
-
|
|
3974
|
-
|
|
3975
|
-
|
|
3976
|
-
|
|
4172
|
+
// Cannot read below the cutoff timestamp when timestamps are not persisted.
|
|
4173
|
+
if (persist_udt) {
|
|
4174
|
+
read_ts.clear();
|
|
4175
|
+
PutFixed64(&read_ts, 0);
|
|
4176
|
+
read_ts_slice = read_ts;
|
|
4177
|
+
read_opts.timestamp = &read_ts_slice;
|
|
4178
|
+
iter.reset(db_->NewIterator(read_opts));
|
|
4179
|
+
iter->SeekToFirst();
|
|
4180
|
+
ASSERT_TRUE(iter->Valid());
|
|
4181
|
+
ASSERT_EQ(iter->key(), Key1(0));
|
|
4182
|
+
iter->Next();
|
|
4183
|
+
ASSERT_FALSE(iter->Valid());
|
|
4184
|
+
ASSERT_OK(iter->status());
|
|
4185
|
+
}
|
|
3977
4186
|
}
|
|
3978
4187
|
|
|
3979
|
-
read_ts
|
|
4188
|
+
read_ts.clear();
|
|
4189
|
+
PutFixed64(&read_ts, kNum);
|
|
3980
4190
|
read_ts_slice = read_ts;
|
|
3981
4191
|
read_opts.timestamp = &read_ts_slice;
|
|
3982
4192
|
std::string value, timestamp;
|
|
3983
4193
|
Status s;
|
|
4194
|
+
std::string expected_ts;
|
|
4195
|
+
int int_expected_ts;
|
|
3984
4196
|
for (int i = 0; i < kNum; ++i) {
|
|
3985
4197
|
s = db_->Get(read_opts, Key1(i), &value, ×tamp);
|
|
3986
4198
|
if (i >= kRangeBegin && i < kNum / 2) {
|
|
3987
4199
|
ASSERT_TRUE(s.IsNotFound());
|
|
3988
|
-
|
|
4200
|
+
int_expected_ts = (persist_udt || kNum / 2 >= cutoff_ts) ? kNum / 2 : 0;
|
|
3989
4201
|
} else {
|
|
3990
4202
|
ASSERT_OK(s);
|
|
3991
4203
|
ASSERT_EQ(value, "val" + std::to_string(i));
|
|
3992
|
-
|
|
4204
|
+
int_expected_ts = (persist_udt || i >= cutoff_ts) ? i : 0;
|
|
3993
4205
|
}
|
|
4206
|
+
expected_ts.clear();
|
|
4207
|
+
PutFixed64(&expected_ts, int_expected_ts);
|
|
4208
|
+
ASSERT_EQ(timestamp, expected_ts);
|
|
3994
4209
|
}
|
|
3995
4210
|
|
|
3996
4211
|
size_t batch_size = kNum;
|
|
@@ -4009,11 +4224,41 @@ TEST_P(DBBasicTestWithTimestampTableOptions, DeleteRangeBaiscReadAndIterate) {
|
|
|
4009
4224
|
for (int i = 0; i < kNum; ++i) {
|
|
4010
4225
|
if (i >= kRangeBegin && i < kNum / 2) {
|
|
4011
4226
|
ASSERT_TRUE(statuses[i].IsNotFound());
|
|
4012
|
-
|
|
4227
|
+
int_expected_ts = (persist_udt || kNum / 2 >= cutoff_ts) ? kNum / 2 : 0;
|
|
4013
4228
|
} else {
|
|
4014
4229
|
ASSERT_OK(statuses[i]);
|
|
4015
4230
|
ASSERT_EQ(values[i], "val" + std::to_string(i));
|
|
4016
|
-
|
|
4231
|
+
int_expected_ts = (persist_udt || i >= cutoff_ts) ? i : 0;
|
|
4232
|
+
}
|
|
4233
|
+
expected_ts.clear();
|
|
4234
|
+
PutFixed64(&expected_ts, int_expected_ts);
|
|
4235
|
+
ASSERT_EQ(timestamps[i], expected_ts);
|
|
4236
|
+
}
|
|
4237
|
+
|
|
4238
|
+
CompactRangeOptions cro;
|
|
4239
|
+
cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
|
|
4240
|
+
if (!persist_udt) {
|
|
4241
|
+
// Mark everything expired so manual compaction can go through
|
|
4242
|
+
full_history_ts_low.clear();
|
|
4243
|
+
PutFixed64(&full_history_ts_low, kNum);
|
|
4244
|
+
ASSERT_OK(db_->IncreaseFullHistoryTsLow(db_->DefaultColumnFamily(),
|
|
4245
|
+
full_history_ts_low));
|
|
4246
|
+
}
|
|
4247
|
+
Slice compaction_ts = full_history_ts_low;
|
|
4248
|
+
cro.full_history_ts_low = &compaction_ts;
|
|
4249
|
+
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
4250
|
+
for (int i = kRangeBegin; i < kNum / 2; ++i) {
|
|
4251
|
+
s = db_->Get(read_opts, Key1(i), &value, ×tamp);
|
|
4252
|
+
ASSERT_TRUE(s.IsNotFound());
|
|
4253
|
+
if (persist_udt) {
|
|
4254
|
+
expected_ts.clear();
|
|
4255
|
+
PutFixed64(&expected_ts, kNum / 2);
|
|
4256
|
+
ASSERT_EQ(timestamp, expected_ts);
|
|
4257
|
+
} else {
|
|
4258
|
+
// When timestamps are not persisted, data in SST files all logically have
|
|
4259
|
+
// min timestamp. A compaction to the last level will drop the range
|
|
4260
|
+
// tombstone.
|
|
4261
|
+
ASSERT_TRUE(timestamp.empty());
|
|
4017
4262
|
}
|
|
4018
4263
|
}
|
|
4019
4264
|
Close();
|
|
@@ -4442,8 +4687,8 @@ TEST_F(DBBasicTestWithTimestamp, TimestampFilterTableReadOnGet) {
|
|
|
4442
4687
|
Slice read_ts_slice = Slice(read_ts_str);
|
|
4443
4688
|
ReadOptions read_opts;
|
|
4444
4689
|
read_opts.timestamp = &read_ts_slice;
|
|
4445
|
-
std::string value_from_get
|
|
4446
|
-
std::string timestamp_from_get
|
|
4690
|
+
std::string value_from_get;
|
|
4691
|
+
std::string timestamp_from_get;
|
|
4447
4692
|
auto status =
|
|
4448
4693
|
db_->Get(read_opts, Key1(3), &value_from_get, ×tamp_from_get);
|
|
4449
4694
|
ASSERT_TRUE(status.IsNotFound());
|
|
@@ -4492,4 +4737,4 @@ int main(int argc, char** argv) {
|
|
|
4492
4737
|
::testing::InitGoogleTest(&argc, argv);
|
|
4493
4738
|
RegisterCustomObjects(argc, argv);
|
|
4494
4739
|
return RUN_ALL_TESTS();
|
|
4495
|
-
}
|
|
4740
|
+
}
|
|
@@ -64,7 +64,7 @@ TEST_F(TimestampCompatibleCompactionTest, UserKeyCrossFileBoundary) {
|
|
|
64
64
|
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
65
65
|
SyncPoint::GetInstance()->SetCallBack(
|
|
66
66
|
"LevelCompactionPicker::PickCompaction:Return", [&](void* arg) {
|
|
67
|
-
const auto* compaction =
|
|
67
|
+
const auto* compaction = static_cast<Compaction*>(arg);
|
|
68
68
|
ASSERT_NE(nullptr, compaction);
|
|
69
69
|
ASSERT_EQ(0, compaction->start_level());
|
|
70
70
|
ASSERT_EQ(1, compaction->num_input_levels());
|
|
@@ -172,8 +172,8 @@ TEST_F(TimestampCompatibleCompactionTest, MultipleSubCompactions) {
|
|
|
172
172
|
|
|
173
173
|
class TestFilePartitioner : public SstPartitioner {
|
|
174
174
|
public:
|
|
175
|
-
explicit TestFilePartitioner()
|
|
176
|
-
~TestFilePartitioner() override
|
|
175
|
+
explicit TestFilePartitioner() = default;
|
|
176
|
+
~TestFilePartitioner() override = default;
|
|
177
177
|
|
|
178
178
|
const char* Name() const override { return "TestFilePartitioner"; }
|
|
179
179
|
PartitionerResult ShouldPartition(
|
|
@@ -188,7 +188,7 @@ class TestFilePartitioner : public SstPartitioner {
|
|
|
188
188
|
|
|
189
189
|
class TestFilePartitionerFactory : public SstPartitionerFactory {
|
|
190
190
|
public:
|
|
191
|
-
explicit TestFilePartitionerFactory()
|
|
191
|
+
explicit TestFilePartitionerFactory() = default;
|
|
192
192
|
std::unique_ptr<SstPartitioner> CreatePartitioner(
|
|
193
193
|
const SstPartitioner::Context& /*context*/) const override {
|
|
194
194
|
std::unique_ptr<SstPartitioner> ret =
|