@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
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#include <unordered_map>
|
|
18
18
|
#include <vector>
|
|
19
19
|
|
|
20
|
+
#include "rocksdb/attribute_groups.h"
|
|
20
21
|
#include "rocksdb/block_cache_trace_writer.h"
|
|
21
22
|
#include "rocksdb/iterator.h"
|
|
22
23
|
#include "rocksdb/listener.h"
|
|
@@ -131,16 +132,31 @@ struct IngestExternalFileArg {
|
|
|
131
132
|
IngestExternalFileOptions options;
|
|
132
133
|
std::vector<std::string> files_checksums;
|
|
133
134
|
std::vector<std::string> files_checksum_func_names;
|
|
135
|
+
// A hint as to the temperature for *reading* the files to be ingested.
|
|
134
136
|
Temperature file_temperature = Temperature::kUnknown;
|
|
135
137
|
};
|
|
136
138
|
|
|
137
139
|
struct GetMergeOperandsOptions {
|
|
140
|
+
using ContinueCallback = std::function<bool(Slice)>;
|
|
141
|
+
|
|
138
142
|
// A limit on the number of merge operands returned by the GetMergeOperands()
|
|
139
143
|
// API. In contrast with ReadOptions::merge_operator_max_count, this is a hard
|
|
140
144
|
// limit: when it is exceeded, no merge operands will be returned and the
|
|
141
145
|
// query will fail with an Incomplete status. See also the
|
|
142
146
|
// DB::GetMergeOperands() API below.
|
|
143
147
|
int expected_max_number_of_operands = 0;
|
|
148
|
+
|
|
149
|
+
// `continue_cb` will be called after reading each merge operand, excluding
|
|
150
|
+
// any base value. Operands are read in order from newest to oldest. The
|
|
151
|
+
// operand value is provided as an argument.
|
|
152
|
+
//
|
|
153
|
+
// Returning false will end the lookup process at the merge operand on which
|
|
154
|
+
// `continue_cb` was just invoked. Returning true allows the lookup to
|
|
155
|
+
// continue.
|
|
156
|
+
//
|
|
157
|
+
// If it is nullptr, `GetMergeOperands()` will behave as if it always returned
|
|
158
|
+
// true (continue fetching merge operands until there are no more).
|
|
159
|
+
ContinueCallback continue_cb;
|
|
144
160
|
};
|
|
145
161
|
|
|
146
162
|
// A collections of table properties objects, where
|
|
@@ -282,6 +298,29 @@ class DB {
|
|
|
282
298
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
283
299
|
std::vector<ColumnFamilyHandle*>* handles, DB** dbptr);
|
|
284
300
|
|
|
301
|
+
// EXPERIMENTAL
|
|
302
|
+
|
|
303
|
+
// Open a database as a follower. The difference between this and opening
|
|
304
|
+
// as secondary is that the follower database has its own directory with
|
|
305
|
+
// links to the actual files, and can tolarate obsolete file deletions by
|
|
306
|
+
// the leader to its own database. Another difference is the follower
|
|
307
|
+
// tries to keep up with the leader by periodically tailing the leader's
|
|
308
|
+
// MANIFEST, and (in the future) memtable updates, rather than relying on
|
|
309
|
+
// the user to manually call TryCatchupWithPrimary().
|
|
310
|
+
|
|
311
|
+
// Open as a follower with the default column family
|
|
312
|
+
static Status OpenAsFollower(const Options& options, const std::string& name,
|
|
313
|
+
const std::string& leader_path,
|
|
314
|
+
std::unique_ptr<DB>* dbptr);
|
|
315
|
+
|
|
316
|
+
// Open as a follower with multiple column families
|
|
317
|
+
static Status OpenAsFollower(
|
|
318
|
+
const DBOptions& db_options, const std::string& name,
|
|
319
|
+
const std::string& leader_path,
|
|
320
|
+
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
321
|
+
std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr);
|
|
322
|
+
// End EXPERIMENTAL
|
|
323
|
+
|
|
285
324
|
// Open DB and run the compaction.
|
|
286
325
|
// It's a read-only operation, the result won't be installed to the DB, it
|
|
287
326
|
// will be output to the `output_directory`. The API should only be used with
|
|
@@ -435,6 +474,10 @@ class DB {
|
|
|
435
474
|
virtual Status PutEntity(const WriteOptions& options,
|
|
436
475
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
437
476
|
const WideColumns& columns);
|
|
477
|
+
// Split and store wide column entities in multiple column families (a.k.a.
|
|
478
|
+
// AttributeGroups)
|
|
479
|
+
virtual Status PutEntity(const WriteOptions& options, const Slice& key,
|
|
480
|
+
const AttributeGroups& attribute_groups);
|
|
438
481
|
|
|
439
482
|
// Remove the database entry (if any) for "key". Returns OK on
|
|
440
483
|
// success, and a non-OK status on error. It is not an error if "key"
|
|
@@ -498,6 +541,8 @@ class DB {
|
|
|
498
541
|
// 2) Limiting the maximum number of open files in the presence of range
|
|
499
542
|
// tombstones can degrade read performance. To avoid this problem, set
|
|
500
543
|
// max_open_files to -1 whenever possible.
|
|
544
|
+
// 3) Incompatible with row_cache, will return Status::NotSupported() if
|
|
545
|
+
// row_cache is configured.
|
|
501
546
|
virtual Status DeleteRange(const WriteOptions& options,
|
|
502
547
|
ColumnFamilyHandle* column_family,
|
|
503
548
|
const Slice& begin_key, const Slice& end_key);
|
|
@@ -505,6 +550,15 @@ class DB {
|
|
|
505
550
|
ColumnFamilyHandle* column_family,
|
|
506
551
|
const Slice& begin_key, const Slice& end_key,
|
|
507
552
|
const Slice& ts);
|
|
553
|
+
virtual Status DeleteRange(const WriteOptions& options,
|
|
554
|
+
const Slice& begin_key, const Slice& end_key) {
|
|
555
|
+
return DeleteRange(options, DefaultColumnFamily(), begin_key, end_key);
|
|
556
|
+
}
|
|
557
|
+
virtual Status DeleteRange(const WriteOptions& options,
|
|
558
|
+
const Slice& begin_key, const Slice& end_key,
|
|
559
|
+
const Slice& ts) {
|
|
560
|
+
return DeleteRange(options, DefaultColumnFamily(), begin_key, end_key, ts);
|
|
561
|
+
}
|
|
508
562
|
|
|
509
563
|
// Merge the database entry for "key" with "value". Returns OK on success,
|
|
510
564
|
// and a non-OK status on error. The semantics of this operation is
|
|
@@ -536,53 +590,69 @@ class DB {
|
|
|
536
590
|
// any, or an empty value otherwise.
|
|
537
591
|
//
|
|
538
592
|
// If timestamp is enabled and a non-null timestamp pointer is passed in,
|
|
539
|
-
// timestamp is returned.
|
|
593
|
+
// timestamp is returned. If the underlying DB implementation doesn't
|
|
594
|
+
// support returning timestamp and the timestamp argument is non-null,
|
|
595
|
+
// a Status::NotSupported() error will be returned.
|
|
540
596
|
//
|
|
541
597
|
// Returns OK on success. Returns NotFound and an empty value in "*value" if
|
|
542
598
|
// there is no entry for "key". Returns some other non-OK status on error.
|
|
599
|
+
// NOTE: Pure virtual => was virtual before
|
|
600
|
+
virtual Status Get(const ReadOptions& options,
|
|
601
|
+
ColumnFamilyHandle* column_family, const Slice& key,
|
|
602
|
+
PinnableSlice* value, std::string* timestamp) = 0;
|
|
603
|
+
|
|
604
|
+
// The timestamp of the key is returned if a non-null timestamp pointer is
|
|
605
|
+
// passed, and value is returned as a string
|
|
606
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
543
607
|
virtual inline Status Get(const ReadOptions& options,
|
|
544
608
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
545
|
-
std::string* value) {
|
|
609
|
+
std::string* value, std::string* timestamp) final {
|
|
546
610
|
assert(value != nullptr);
|
|
547
611
|
PinnableSlice pinnable_val(value);
|
|
548
612
|
assert(!pinnable_val.IsPinned());
|
|
549
|
-
auto s = Get(options, column_family, key, &pinnable_val);
|
|
613
|
+
auto s = Get(options, column_family, key, &pinnable_val, timestamp);
|
|
550
614
|
if (s.ok() && pinnable_val.IsPinned()) {
|
|
551
615
|
value->assign(pinnable_val.data(), pinnable_val.size());
|
|
552
616
|
} // else value is already assigned
|
|
553
617
|
return s;
|
|
554
618
|
}
|
|
619
|
+
|
|
620
|
+
// No timestamp, and value is returned in a PinnableSlice
|
|
621
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
555
622
|
virtual Status Get(const ReadOptions& options,
|
|
556
623
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
557
|
-
PinnableSlice* value)
|
|
558
|
-
|
|
559
|
-
std::string* value) {
|
|
560
|
-
return Get(options, DefaultColumnFamily(), key, value);
|
|
624
|
+
PinnableSlice* value) final {
|
|
625
|
+
return Get(options, column_family, key, value, nullptr);
|
|
561
626
|
}
|
|
562
627
|
|
|
563
|
-
//
|
|
564
|
-
//
|
|
628
|
+
// No timestamp, and the value is returned as a string
|
|
629
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
565
630
|
virtual inline Status Get(const ReadOptions& options,
|
|
566
631
|
ColumnFamilyHandle* column_family, const Slice& key,
|
|
567
|
-
std::string* value
|
|
632
|
+
std::string* value) final {
|
|
568
633
|
assert(value != nullptr);
|
|
569
634
|
PinnableSlice pinnable_val(value);
|
|
570
635
|
assert(!pinnable_val.IsPinned());
|
|
571
|
-
auto s = Get(options, column_family, key, &pinnable_val
|
|
636
|
+
auto s = Get(options, column_family, key, &pinnable_val);
|
|
572
637
|
if (s.ok() && pinnable_val.IsPinned()) {
|
|
573
638
|
value->assign(pinnable_val.data(), pinnable_val.size());
|
|
574
639
|
} // else value is already assigned
|
|
575
640
|
return s;
|
|
576
641
|
}
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
642
|
+
|
|
643
|
+
// Gets a key in the default column family, returns the value as a string,
|
|
644
|
+
// and no timestamp returned
|
|
645
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
646
|
+
virtual Status Get(const ReadOptions& options, const Slice& key,
|
|
647
|
+
std::string* value) final {
|
|
648
|
+
return Get(options, DefaultColumnFamily(), key, value);
|
|
583
649
|
}
|
|
650
|
+
|
|
651
|
+
// Gets a key in the default column family, returns the value as a string,
|
|
652
|
+
// and timestamp of the key is returned if timestamp parameter is non-null
|
|
653
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
584
654
|
virtual Status Get(const ReadOptions& options, const Slice& key,
|
|
585
|
-
std::string* value, std::string* timestamp) {
|
|
655
|
+
std::string* value, std::string* timestamp) final {
|
|
586
656
|
return Get(options, DefaultColumnFamily(), key, value, timestamp);
|
|
587
657
|
}
|
|
588
658
|
|
|
@@ -602,12 +672,23 @@ class DB {
|
|
|
602
672
|
return Status::NotSupported("GetEntity not supported");
|
|
603
673
|
}
|
|
604
674
|
|
|
675
|
+
// Returns logically grouped wide-column entities per column family (a.k.a.
|
|
676
|
+
// attribute groups) for a single key. PinnableAttributeGroups is a vector of
|
|
677
|
+
// PinnableAttributeGroup. Each PinnableAttributeGroup will have
|
|
678
|
+
// ColumnFamilyHandle* as input, and Status and PinnableWideColumns as output.
|
|
679
|
+
virtual Status GetEntity(const ReadOptions& /* options */,
|
|
680
|
+
const Slice& /* key */,
|
|
681
|
+
PinnableAttributeGroups* /* result */) {
|
|
682
|
+
return Status::NotSupported("GetEntity not supported");
|
|
683
|
+
}
|
|
684
|
+
|
|
605
685
|
// Populates the `merge_operands` array with all the merge operands in the DB
|
|
606
|
-
// for `key
|
|
607
|
-
//
|
|
608
|
-
//
|
|
686
|
+
// for `key`, or a customizable suffix of merge operands when
|
|
687
|
+
// `GetMergeOperandsOptions::continue_cb` is set. The `merge_operands` array
|
|
688
|
+
// will be populated in the order of insertion. The number of entries
|
|
689
|
+
// populated in `merge_operands` will be assigned to `*number_of_operands`.
|
|
609
690
|
//
|
|
610
|
-
// If the number of merge operands
|
|
691
|
+
// If the number of merge operands to return for `key` is greater than
|
|
611
692
|
// `merge_operands_options.expected_max_number_of_operands`,
|
|
612
693
|
// `merge_operands` is not populated and the return value is
|
|
613
694
|
// `Status::Incomplete`. In that case, `*number_of_operands` will be assigned
|
|
@@ -627,9 +708,10 @@ class DB {
|
|
|
627
708
|
int* number_of_operands) = 0;
|
|
628
709
|
|
|
629
710
|
// Consistent Get of many keys across column families without the need
|
|
630
|
-
// for an explicit snapshot.
|
|
631
|
-
//
|
|
632
|
-
//
|
|
711
|
+
// for an explicit snapshot. The main difference between this set of
|
|
712
|
+
// MultiGet APis and the batched MultiGet APIs that follow are -
|
|
713
|
+
// 1. The APIs take std::vector instead of C style array pointers
|
|
714
|
+
// 2. Values are returned as std::string rather than PinnableSlice
|
|
633
715
|
//
|
|
634
716
|
// If keys[i] does not exist in the database, then the i'th returned
|
|
635
717
|
// status will be one for which Status::IsNotFound() is true, and
|
|
@@ -639,34 +721,67 @@ class DB {
|
|
|
639
721
|
//
|
|
640
722
|
// (*values) will always be resized to be the same size as (keys).
|
|
641
723
|
// Similarly, the number of returned statuses will be the number of keys.
|
|
724
|
+
// If timestamps is non-null, the vector pointed to by it will be resized to
|
|
725
|
+
// number of keys and filled with timestamps of the keys on return.
|
|
642
726
|
// Note: keys will not be "de-duplicated". Duplicate keys will return
|
|
643
|
-
// duplicate values in order
|
|
727
|
+
// duplicate values in order, and may return different status values
|
|
728
|
+
// in case there are errors.
|
|
729
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
730
|
+
virtual std::vector<Status> MultiGet(
|
|
731
|
+
const ReadOptions& options,
|
|
732
|
+
const std::vector<ColumnFamilyHandle*>& column_families,
|
|
733
|
+
const std::vector<Slice>& keys, std::vector<std::string>* values,
|
|
734
|
+
std::vector<std::string>* timestamps) final {
|
|
735
|
+
size_t num_keys = keys.size();
|
|
736
|
+
std::vector<Status> statuses(num_keys);
|
|
737
|
+
std::vector<PinnableSlice> pin_values(num_keys);
|
|
738
|
+
|
|
739
|
+
values->resize(num_keys);
|
|
740
|
+
if (timestamps) {
|
|
741
|
+
timestamps->resize(num_keys);
|
|
742
|
+
}
|
|
743
|
+
MultiGet(options, num_keys,
|
|
744
|
+
const_cast<ColumnFamilyHandle**>(column_families.data()),
|
|
745
|
+
keys.data(), pin_values.data(),
|
|
746
|
+
timestamps ? timestamps->data() : nullptr, statuses.data(),
|
|
747
|
+
/*sorted_input=*/false);
|
|
748
|
+
for (size_t i = 0; i < num_keys; ++i) {
|
|
749
|
+
if (statuses[i].ok()) {
|
|
750
|
+
(*values)[i].assign(pin_values[i].data(), pin_values[i].size());
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
return statuses;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
// No timestamps are returned
|
|
757
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
644
758
|
virtual std::vector<Status> MultiGet(
|
|
645
759
|
const ReadOptions& options,
|
|
646
760
|
const std::vector<ColumnFamilyHandle*>& column_family,
|
|
647
|
-
const std::vector<Slice>& keys, std::vector<std::string>* values)
|
|
761
|
+
const std::vector<Slice>& keys, std::vector<std::string>* values) final {
|
|
762
|
+
values->resize(keys.size());
|
|
763
|
+
return MultiGet(options, column_family, keys, values, nullptr);
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
// MultiGet for default column family, no timestamps returned
|
|
767
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
648
768
|
virtual std::vector<Status> MultiGet(const ReadOptions& options,
|
|
649
769
|
const std::vector<Slice>& keys,
|
|
650
|
-
std::vector<std::string>* values) {
|
|
770
|
+
std::vector<std::string>* values) final {
|
|
771
|
+
values->resize(keys.size());
|
|
651
772
|
return MultiGet(
|
|
652
773
|
options,
|
|
653
774
|
std::vector<ColumnFamilyHandle*>(keys.size(), DefaultColumnFamily()),
|
|
654
775
|
keys, values);
|
|
655
776
|
}
|
|
656
777
|
|
|
778
|
+
// MultiGet for default column family
|
|
779
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
657
780
|
virtual std::vector<Status> MultiGet(
|
|
658
|
-
const ReadOptions&
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
return std::vector<Status>(
|
|
663
|
-
keys.size(), Status::NotSupported(
|
|
664
|
-
"MultiGet() returning timestamps not implemented."));
|
|
665
|
-
}
|
|
666
|
-
virtual std::vector<Status> MultiGet(const ReadOptions& options,
|
|
667
|
-
const std::vector<Slice>& keys,
|
|
668
|
-
std::vector<std::string>* values,
|
|
669
|
-
std::vector<std::string>* timestamps) {
|
|
781
|
+
const ReadOptions& options, const std::vector<Slice>& keys,
|
|
782
|
+
std::vector<std::string>* values,
|
|
783
|
+
std::vector<std::string>* timestamps) final {
|
|
784
|
+
values->resize(keys.size());
|
|
670
785
|
return MultiGet(
|
|
671
786
|
options,
|
|
672
787
|
std::vector<ColumnFamilyHandle*>(keys.size(), DefaultColumnFamily()),
|
|
@@ -681,123 +796,59 @@ class DB {
|
|
|
681
796
|
// benefits.
|
|
682
797
|
// Parameters -
|
|
683
798
|
// options - ReadOptions
|
|
684
|
-
// column_family - ColumnFamilyHandle* that the keys belong to. All the keys
|
|
685
|
-
// passed to the API are restricted to a single column family
|
|
686
799
|
// num_keys - Number of keys to lookup
|
|
800
|
+
// column_families - Pointer to C style array of ColumnFamilyHandle* that
|
|
801
|
+
// the keys belong to.
|
|
687
802
|
// keys - Pointer to C style array of key Slices with num_keys elements
|
|
688
803
|
// values - Pointer to C style array of PinnableSlices with num_keys elements
|
|
804
|
+
// timestamps - Pointer to C style array of std::string that, if non-null and
|
|
805
|
+
// timestamps are enabled, will be filled with timestamps of the
|
|
806
|
+
// keys on return. The array should be sized to num_keys entries
|
|
807
|
+
// by the caller.
|
|
689
808
|
// statuses - Pointer to C style array of Status with num_keys elements
|
|
690
809
|
// sorted_input - If true, it means the input keys are already sorted by key
|
|
691
810
|
// order, so the MultiGet() API doesn't have to sort them
|
|
692
811
|
// again. If false, the keys will be copied and sorted
|
|
693
812
|
// internally by the API - the input array will not be
|
|
694
813
|
// modified
|
|
695
|
-
virtual void MultiGet(const ReadOptions& options,
|
|
696
|
-
ColumnFamilyHandle* column_family,
|
|
697
|
-
const size_t num_keys, const Slice* keys,
|
|
698
|
-
PinnableSlice* values, Status* statuses,
|
|
699
|
-
const bool /*sorted_input*/ = false) {
|
|
700
|
-
std::vector<ColumnFamilyHandle*> cf;
|
|
701
|
-
std::vector<Slice> user_keys;
|
|
702
|
-
std::vector<Status> status;
|
|
703
|
-
std::vector<std::string> vals;
|
|
704
814
|
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
values++;
|
|
714
|
-
}
|
|
715
|
-
}
|
|
815
|
+
// NOTE: Pure virtual => was virtual (optional). If the concrete
|
|
816
|
+
// implementation
|
|
817
|
+
// doesn't support returning timestamps, and the timestamps paramater is
|
|
818
|
+
// non-null, it should return Status::NotSupported() for all the keys.
|
|
819
|
+
virtual void MultiGet(const ReadOptions& options, const size_t num_keys,
|
|
820
|
+
ColumnFamilyHandle** column_families, const Slice* keys,
|
|
821
|
+
PinnableSlice* values, std::string* timestamps,
|
|
822
|
+
Status* statuses, const bool sorted_input = false) = 0;
|
|
716
823
|
|
|
824
|
+
// MultiGet for single column family
|
|
825
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
717
826
|
virtual void MultiGet(const ReadOptions& options,
|
|
718
827
|
ColumnFamilyHandle* column_family,
|
|
719
828
|
const size_t num_keys, const Slice* keys,
|
|
720
829
|
PinnableSlice* values, std::string* timestamps,
|
|
721
|
-
Status* statuses,
|
|
722
|
-
|
|
723
|
-
std::vector<Slice> user_keys;
|
|
724
|
-
std::vector<Status> status;
|
|
725
|
-
std::vector<std::string> vals;
|
|
726
|
-
std::vector<std::string> tss;
|
|
830
|
+
Status* statuses,
|
|
831
|
+
const bool sorted_input = false) final;
|
|
727
832
|
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
values++;
|
|
738
|
-
}
|
|
833
|
+
// MultiGet for single column family, no timestamps returned
|
|
834
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
835
|
+
virtual void MultiGet(const ReadOptions& options,
|
|
836
|
+
ColumnFamilyHandle* column_family,
|
|
837
|
+
const size_t num_keys, const Slice* keys,
|
|
838
|
+
PinnableSlice* values, Status* statuses,
|
|
839
|
+
const bool sorted_input = false) final {
|
|
840
|
+
MultiGet(options, column_family, num_keys, keys, values, nullptr, statuses,
|
|
841
|
+
sorted_input);
|
|
739
842
|
}
|
|
740
843
|
|
|
741
|
-
//
|
|
742
|
-
//
|
|
743
|
-
// table format with full filters are supported. Other table formats such
|
|
744
|
-
// as plain table, block based table with block based filters and
|
|
745
|
-
// partitioned indexes will still work, but will not get any performance
|
|
746
|
-
// benefits.
|
|
747
|
-
// Parameters -
|
|
748
|
-
// options - ReadOptions
|
|
749
|
-
// column_family - ColumnFamilyHandle* that the keys belong to. All the keys
|
|
750
|
-
// passed to the API are restricted to a single column family
|
|
751
|
-
// num_keys - Number of keys to lookup
|
|
752
|
-
// keys - Pointer to C style array of key Slices with num_keys elements
|
|
753
|
-
// values - Pointer to C style array of PinnableSlices with num_keys elements
|
|
754
|
-
// statuses - Pointer to C style array of Status with num_keys elements
|
|
755
|
-
// sorted_input - If true, it means the input keys are already sorted by key
|
|
756
|
-
// order, so the MultiGet() API doesn't have to sort them
|
|
757
|
-
// again. If false, the keys will be copied and sorted
|
|
758
|
-
// internally by the API - the input array will not be
|
|
759
|
-
// modified
|
|
844
|
+
// Multiple column families, no timestamps returned
|
|
845
|
+
// NOTE: virtual final => disallow override (was previously allowed)
|
|
760
846
|
virtual void MultiGet(const ReadOptions& options, const size_t num_keys,
|
|
761
847
|
ColumnFamilyHandle** column_families, const Slice* keys,
|
|
762
848
|
PinnableSlice* values, Status* statuses,
|
|
763
|
-
const bool
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
std::vector<Status> status;
|
|
767
|
-
std::vector<std::string> vals;
|
|
768
|
-
|
|
769
|
-
for (size_t i = 0; i < num_keys; ++i) {
|
|
770
|
-
cf.emplace_back(column_families[i]);
|
|
771
|
-
user_keys.emplace_back(keys[i]);
|
|
772
|
-
}
|
|
773
|
-
status = MultiGet(options, cf, user_keys, &vals);
|
|
774
|
-
std::copy(status.begin(), status.end(), statuses);
|
|
775
|
-
for (auto& value : vals) {
|
|
776
|
-
values->PinSelf(value);
|
|
777
|
-
values++;
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
virtual void MultiGet(const ReadOptions& options, const size_t num_keys,
|
|
781
|
-
ColumnFamilyHandle** column_families, const Slice* keys,
|
|
782
|
-
PinnableSlice* values, std::string* timestamps,
|
|
783
|
-
Status* statuses, const bool /*sorted_input*/ = false) {
|
|
784
|
-
std::vector<ColumnFamilyHandle*> cf;
|
|
785
|
-
std::vector<Slice> user_keys;
|
|
786
|
-
std::vector<Status> status;
|
|
787
|
-
std::vector<std::string> vals;
|
|
788
|
-
std::vector<std::string> tss;
|
|
789
|
-
|
|
790
|
-
for (size_t i = 0; i < num_keys; ++i) {
|
|
791
|
-
cf.emplace_back(column_families[i]);
|
|
792
|
-
user_keys.emplace_back(keys[i]);
|
|
793
|
-
}
|
|
794
|
-
status = MultiGet(options, cf, user_keys, &vals, &tss);
|
|
795
|
-
std::copy(status.begin(), status.end(), statuses);
|
|
796
|
-
std::copy(tss.begin(), tss.end(), timestamps);
|
|
797
|
-
for (auto& value : vals) {
|
|
798
|
-
values->PinSelf(value);
|
|
799
|
-
values++;
|
|
800
|
-
}
|
|
849
|
+
const bool sorted_input = false) final {
|
|
850
|
+
MultiGet(options, num_keys, column_families, keys, values, nullptr,
|
|
851
|
+
statuses, sorted_input);
|
|
801
852
|
}
|
|
802
853
|
|
|
803
854
|
// Batched MultiGet-like API that returns wide-column entities from a single
|
|
@@ -946,6 +997,31 @@ class DB {
|
|
|
946
997
|
const std::vector<ColumnFamilyHandle*>& column_families,
|
|
947
998
|
std::vector<Iterator*>* iterators) = 0;
|
|
948
999
|
|
|
1000
|
+
// EXPERIMENTAL
|
|
1001
|
+
// Return a cross-column-family iterator from a consistent database state.
|
|
1002
|
+
//
|
|
1003
|
+
// If a key exists in more than one column family, value() will be determined
|
|
1004
|
+
// by the wide column value of kDefaultColumnName after coalesced as described
|
|
1005
|
+
// below.
|
|
1006
|
+
//
|
|
1007
|
+
// Each wide column will be independently shadowed by the CFs.
|
|
1008
|
+
// For example, if CF1 has "key_1" ==> {"col_1": "foo",
|
|
1009
|
+
// "col_2", "baz"} and CF2 has "key_1" ==> {"col_2": "quux", "col_3", "bla"},
|
|
1010
|
+
// and when the iterator is at key_1, columns() will return
|
|
1011
|
+
// {"col_1": "foo", "col_2", "quux", "col_3", "bla"}
|
|
1012
|
+
// In this example, value() will be empty, because none of them have values
|
|
1013
|
+
// for kDefaultColumnName
|
|
1014
|
+
virtual std::unique_ptr<Iterator> NewCoalescingIterator(
|
|
1015
|
+
const ReadOptions& options,
|
|
1016
|
+
const std::vector<ColumnFamilyHandle*>& column_families) = 0;
|
|
1017
|
+
|
|
1018
|
+
// EXPERIMENTAL
|
|
1019
|
+
// A cross-column-family iterator that collects and returns attribute groups
|
|
1020
|
+
// for each key in order provided by comparator
|
|
1021
|
+
virtual std::unique_ptr<AttributeGroupIterator> NewAttributeGroupIterator(
|
|
1022
|
+
const ReadOptions& options,
|
|
1023
|
+
const std::vector<ColumnFamilyHandle*>& column_families) = 0;
|
|
1024
|
+
|
|
949
1025
|
// Return a handle to the current DB state. Iterators created with
|
|
950
1026
|
// this handle will all observe a stable snapshot of the current DB
|
|
951
1027
|
// state. The caller must call ReleaseSnapshot(result) when the
|
|
@@ -1399,6 +1475,9 @@ class DB {
|
|
|
1399
1475
|
// move the files back to the minimum level capable of holding the data set
|
|
1400
1476
|
// or a given level (specified by non-negative options.target_level).
|
|
1401
1477
|
//
|
|
1478
|
+
// For FIFO compaction, this will trigger a compaction (if available)
|
|
1479
|
+
// based on CompactionOptionsFIFO.
|
|
1480
|
+
//
|
|
1402
1481
|
// In case of user-defined timestamp, if enabled, `begin` and `end` should
|
|
1403
1482
|
// not contain timestamp.
|
|
1404
1483
|
virtual Status CompactRange(const CompactRangeOptions& options,
|
|
@@ -1600,8 +1679,8 @@ class DB {
|
|
|
1600
1679
|
// Freezes the logical state of the DB (by stopping writes), and if WAL is
|
|
1601
1680
|
// enabled, ensures that state has been flushed to DB files (as in
|
|
1602
1681
|
// FlushWAL()). This can be used for taking a Checkpoint at a known DB
|
|
1603
|
-
// state, though the
|
|
1604
|
-
//
|
|
1682
|
+
// state, though while the WAL is locked, flushes as part of CreateCheckpoint
|
|
1683
|
+
// and simiar are skipped. Other operations allowed on a "read only" DB should
|
|
1605
1684
|
// work while frozen. Each LockWAL() call that returns OK must eventually be
|
|
1606
1685
|
// followed by a corresponding call to UnlockWAL(). Where supported, non-OK
|
|
1607
1686
|
// status is generally only possible with some kind of corruption or I/O
|
|
@@ -1620,11 +1699,6 @@ class DB {
|
|
|
1620
1699
|
// The sequence number of the most recent transaction.
|
|
1621
1700
|
virtual SequenceNumber GetLatestSequenceNumber() const = 0;
|
|
1622
1701
|
|
|
1623
|
-
// Prevent file deletions. Compactions will continue to occur,
|
|
1624
|
-
// but no obsolete files will be deleted. Calling this multiple
|
|
1625
|
-
// times have the same effect as calling it once.
|
|
1626
|
-
virtual Status DisableFileDeletions() = 0;
|
|
1627
|
-
|
|
1628
1702
|
// Increase the full_history_ts of column family. The new ts_low value should
|
|
1629
1703
|
// be newer than current full_history_ts value.
|
|
1630
1704
|
// If another thread updates full_history_ts_low concurrently to a higher
|
|
@@ -1636,16 +1710,24 @@ class DB {
|
|
|
1636
1710
|
virtual Status GetFullHistoryTsLow(ColumnFamilyHandle* column_family,
|
|
1637
1711
|
std::string* ts_low) = 0;
|
|
1638
1712
|
|
|
1639
|
-
//
|
|
1640
|
-
//
|
|
1641
|
-
//
|
|
1642
|
-
//
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
//
|
|
1713
|
+
// Suspend deleting obsolete files. Compactions will continue to occur,
|
|
1714
|
+
// but no obsolete files will be deleted. To resume file deletions, each
|
|
1715
|
+
// call to DisableFileDeletions() must be matched by a subsequent call to
|
|
1716
|
+
// EnableFileDeletions(). For more details, see EnableFileDeletions().
|
|
1717
|
+
virtual Status DisableFileDeletions() = 0;
|
|
1718
|
+
|
|
1719
|
+
// Resume deleting obsolete files, following up on `DisableFileDeletions()`.
|
|
1720
|
+
//
|
|
1721
|
+
// File deletions disabling and enabling is not controlled by a binary flag,
|
|
1722
|
+
// instead it's represented as a counter to allow different callers to
|
|
1723
|
+
// independently disable file deletion. Disabling file deletion can be
|
|
1724
|
+
// critical for operations like making a backup. So the counter implementation
|
|
1725
|
+
// makes the file deletion disabled as long as there is one caller requesting
|
|
1726
|
+
// so, and only when every caller agrees to re-enable file deletion, it will
|
|
1727
|
+
// be enabled. Two threads can call this method concurrently without
|
|
1646
1728
|
// synchronization -- i.e., file deletions will be enabled only after both
|
|
1647
1729
|
// threads call EnableFileDeletions()
|
|
1648
|
-
virtual Status EnableFileDeletions(
|
|
1730
|
+
virtual Status EnableFileDeletions() = 0;
|
|
1649
1731
|
|
|
1650
1732
|
// Retrieves the creation time of the oldest file in the DB.
|
|
1651
1733
|
// This API only works if max_open_files = -1, if it is not then
|
|
@@ -1771,6 +1853,15 @@ class DB {
|
|
|
1771
1853
|
// to Flush the memtable first before ingesting the file.
|
|
1772
1854
|
// In the second mode we will always ingest in the bottom most level (see
|
|
1773
1855
|
// docs to IngestExternalFileOptions::ingest_behind).
|
|
1856
|
+
// For a column family that enables user-defined timestamps, ingesting
|
|
1857
|
+
// external SST files are supported with these limitations: 1) Ingested file's
|
|
1858
|
+
// user key (without timestamp) range should not overlap with the db's key
|
|
1859
|
+
// range. 2) When ingesting multiple external SST files, their key ranges
|
|
1860
|
+
// should not overlap with each other either. 3) Ingestion behind mode is not
|
|
1861
|
+
// supported. 4) When an ingested file contains point data and range deletion
|
|
1862
|
+
// for the same key, the point data currently overrides the range deletion
|
|
1863
|
+
// regardless which one has the higher user-defined timestamps.
|
|
1864
|
+
// For FIFO compaction, SST files will always be ingested into L0.
|
|
1774
1865
|
//
|
|
1775
1866
|
// (1) External SST files can be created using SstFileWriter
|
|
1776
1867
|
// (2) We will try to ingest the files to the lowest possible level
|
|
@@ -1783,6 +1874,16 @@ class DB {
|
|
|
1783
1874
|
// the files cannot be ingested to the bottommost level, and it is the
|
|
1784
1875
|
// user's responsibility to clear the bottommost level in the overlapping
|
|
1785
1876
|
// range before re-attempting the ingestion.
|
|
1877
|
+
//
|
|
1878
|
+
// EXPERIMENTAL: the temperatures of the files after ingestion are currently
|
|
1879
|
+
// determined like this:
|
|
1880
|
+
// - If the ingested file is moved rather than copied, its temperature is
|
|
1881
|
+
// inherited from the input file.
|
|
1882
|
+
// - If either ingest_behind or fail_if_not_bottommost_level is set to true,
|
|
1883
|
+
// then the temperature is set to the CF's last_level_temperature.
|
|
1884
|
+
// - Otherwise, the temperature is set to the CF's default_write_temperature.
|
|
1885
|
+
// (Landing in the last level does not currently guarantee using
|
|
1886
|
+
// last_level_temperature - TODO)
|
|
1786
1887
|
virtual Status IngestExternalFile(
|
|
1787
1888
|
ColumnFamilyHandle* column_family,
|
|
1788
1889
|
const std::vector<std::string>& external_files,
|
|
@@ -1908,6 +2009,8 @@ class DB {
|
|
|
1908
2009
|
return Status::NotSupported("SuggestCompactRange() is not implemented.");
|
|
1909
2010
|
}
|
|
1910
2011
|
|
|
2012
|
+
// Trivially move L0 files to target level. Should not be called with another
|
|
2013
|
+
// PromoteL0() concurrently
|
|
1911
2014
|
virtual Status PromoteL0(ColumnFamilyHandle* /*column_family*/,
|
|
1912
2015
|
int /*target_level*/) {
|
|
1913
2016
|
return Status::NotSupported("PromoteL0() is not implemented.");
|