@nxtedition/rocksdb 13.5.8 → 13.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +209 -2
- package/deps/rocksdb/rocksdb/BUCK +12 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
- package/deps/rocksdb/rocksdb/Makefile +28 -23
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
- package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
- package/deps/rocksdb/rocksdb/db/builder.h +5 -4
- package/deps/rocksdb/rocksdb/db/c.cc +556 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
- package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
- package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
- package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
- package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
- package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
- package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
- package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
- package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
- package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
- package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
- package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
- package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
- package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
- package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
- package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
- package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
- package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
- package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
- package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
- package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
- package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
- package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
- package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
- package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
- package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
- package/deps/rocksdb/rocksdb/env/env.cc +32 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
- package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
- package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
- package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
- package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
- package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
- package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
- package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
- package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
- package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
- package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
- package/deps/rocksdb/rocksdb/options/options.cc +296 -305
- package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
- package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
- package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
- package/deps/rocksdb/rocksdb/port/lang.h +2 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
- package/deps/rocksdb/rocksdb/src.mk +17 -11
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
- package/deps/rocksdb/rocksdb/table/format.cc +62 -44
- package/deps/rocksdb/rocksdb/table/format.h +35 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
- package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
- package/deps/rocksdb/rocksdb/util/compression.h +348 -232
- package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
- package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
- package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
- package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
- 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 +1 -1
- 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/util/dbt.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
- package/deps/rocksdb/rocksdb.gyp +5 -0
- package/index.js +47 -2
- package/package.json +8 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
#include "rocksdb/iterator.h"
|
|
9
|
+
#include "rocksdb/options.h"
|
|
10
|
+
|
|
11
|
+
namespace ROCKSDB_NAMESPACE {
|
|
12
|
+
|
|
13
|
+
// EXPERIMENTAL
|
|
14
|
+
//
|
|
15
|
+
// An iterator that returns results from multiple scan ranges. The ranges are
|
|
16
|
+
// expected to be in increasing sorted order.
|
|
17
|
+
// The results are returned in nested container objects that can be iterated
|
|
18
|
+
// using an std::input_iterator.
|
|
19
|
+
//
|
|
20
|
+
// MultiScan
|
|
21
|
+
// |
|
|
22
|
+
// ---
|
|
23
|
+
// |
|
|
24
|
+
// MultiScanIterator <-- std::input_iterator (returns a Scan object for each
|
|
25
|
+
// | scan range)
|
|
26
|
+
// ---
|
|
27
|
+
// |
|
|
28
|
+
// Scan
|
|
29
|
+
// |
|
|
30
|
+
// ---
|
|
31
|
+
// |
|
|
32
|
+
// ScanIterator <-- std::input_iterator (returns the KVs of a single
|
|
33
|
+
// scan range)
|
|
34
|
+
//
|
|
35
|
+
// The application on top of RocksDB
|
|
36
|
+
// would use this as follows -
|
|
37
|
+
//
|
|
38
|
+
// std::vector<ScanOptions> scans{{.start = Slice("bar")},
|
|
39
|
+
// {.start = Slice("foo")}};
|
|
40
|
+
// std::unique_ptr<MultiScan> iter.reset(
|
|
41
|
+
// db->NewMultiScan());
|
|
42
|
+
// try {
|
|
43
|
+
// for (auto scan : *iter) {
|
|
44
|
+
// for (auto it : scan) {
|
|
45
|
+
// // Do something with key - it.first
|
|
46
|
+
// // Do something with value - it.second
|
|
47
|
+
// }
|
|
48
|
+
// }
|
|
49
|
+
// } catch (MultiScanException& ex) {
|
|
50
|
+
// // Check ex.status()
|
|
51
|
+
// } catch (std::logic_error& ex) {
|
|
52
|
+
// // Check ex.what()
|
|
53
|
+
// }
|
|
54
|
+
|
|
55
|
+
class MultiScanException : public std::runtime_error {
|
|
56
|
+
public:
|
|
57
|
+
explicit MultiScanException(Status& s)
|
|
58
|
+
: std::runtime_error(s.ToString()), s_(s) {}
|
|
59
|
+
|
|
60
|
+
Status& status() { return s_; }
|
|
61
|
+
|
|
62
|
+
private:
|
|
63
|
+
Status s_;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// A container object encapsulating a single scan range. It supports an
|
|
67
|
+
// std::input_iterator for a single pass iteration of the KVs in the range.
|
|
68
|
+
// A Status exception is thrown if there is an error in scanning the range.
|
|
69
|
+
class Scan {
|
|
70
|
+
public:
|
|
71
|
+
class ScanIterator;
|
|
72
|
+
|
|
73
|
+
explicit Scan(Iterator* db_iter) : db_iter_(db_iter) {}
|
|
74
|
+
|
|
75
|
+
ScanIterator begin() { return ScanIterator(db_iter_); }
|
|
76
|
+
|
|
77
|
+
std::nullptr_t end() { return nullptr; }
|
|
78
|
+
|
|
79
|
+
class ScanIterator {
|
|
80
|
+
public:
|
|
81
|
+
using self_type = ScanIterator;
|
|
82
|
+
using value_type = std::pair<Slice, Slice>;
|
|
83
|
+
using reference = std::pair<Slice, Slice>&;
|
|
84
|
+
using pointer = std::pair<Slice, Slice>*;
|
|
85
|
+
using difference_type = int;
|
|
86
|
+
using iterator_category = std::input_iterator_tag;
|
|
87
|
+
|
|
88
|
+
explicit ScanIterator(Iterator* db_iter) : db_iter_(db_iter) {
|
|
89
|
+
valid_ = db_iter_->Valid();
|
|
90
|
+
if (valid_) {
|
|
91
|
+
result_ = value_type(db_iter_->key(), db_iter_->value());
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
ScanIterator() : db_iter_(nullptr), valid_(false) {}
|
|
96
|
+
|
|
97
|
+
~ScanIterator() { assert(status_.ok()); }
|
|
98
|
+
|
|
99
|
+
ScanIterator& operator++() {
|
|
100
|
+
if (!valid_) {
|
|
101
|
+
throw std::logic_error("Trying to advance invalid iterator");
|
|
102
|
+
} else {
|
|
103
|
+
db_iter_->Next();
|
|
104
|
+
status_ = db_iter_->status();
|
|
105
|
+
if (!status_.ok()) {
|
|
106
|
+
throw MultiScanException(status_);
|
|
107
|
+
} else {
|
|
108
|
+
valid_ = db_iter_->Valid();
|
|
109
|
+
if (valid_) {
|
|
110
|
+
result_ = value_type(db_iter_->key(), db_iter_->value());
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return *this;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
bool operator==(std::nullptr_t /*other*/) const { return !valid_; }
|
|
118
|
+
|
|
119
|
+
bool operator!=(std::nullptr_t /*other*/) const { return valid_; }
|
|
120
|
+
|
|
121
|
+
reference operator*() {
|
|
122
|
+
if (!valid_) {
|
|
123
|
+
throw std::logic_error("Trying to deref invalid iterator");
|
|
124
|
+
}
|
|
125
|
+
return result_;
|
|
126
|
+
}
|
|
127
|
+
reference operator->() {
|
|
128
|
+
if (!valid_) {
|
|
129
|
+
throw std::logic_error("Trying to deref invalid iterator");
|
|
130
|
+
}
|
|
131
|
+
return result_;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
private:
|
|
135
|
+
Iterator* db_iter_;
|
|
136
|
+
bool valid_;
|
|
137
|
+
Status status_;
|
|
138
|
+
value_type result_;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
private:
|
|
142
|
+
Iterator* db_iter_;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// A container object encapsulating the scan ranges for a multi scan.
|
|
146
|
+
// It supports an std::input_iterator for a single pass iteration of the
|
|
147
|
+
// ScanOptions in scan_opts, which can be dereferenced to get the container
|
|
148
|
+
// (Scan) for a single range.
|
|
149
|
+
// A Status exception is thrown if there is an error.
|
|
150
|
+
class MultiScan {
|
|
151
|
+
public:
|
|
152
|
+
MultiScan(const std::vector<ScanOptions>& scan_opts,
|
|
153
|
+
std::unique_ptr<Iterator>&& db_iter)
|
|
154
|
+
: scan_opts_(scan_opts), db_iter_(std::move(db_iter)) {}
|
|
155
|
+
|
|
156
|
+
explicit MultiScan(std::unique_ptr<Iterator>&& db_iter)
|
|
157
|
+
: db_iter_(std::move(db_iter)) {}
|
|
158
|
+
|
|
159
|
+
class MultiScanIterator {
|
|
160
|
+
public:
|
|
161
|
+
MultiScanIterator(const MultiScanIterator&) = delete;
|
|
162
|
+
MultiScanIterator operator=(MultiScanIterator&) = delete;
|
|
163
|
+
|
|
164
|
+
using self_type = MultiScanIterator;
|
|
165
|
+
using value_type = Scan;
|
|
166
|
+
using reference = Scan&;
|
|
167
|
+
using pointer = Scan*;
|
|
168
|
+
using difference_type = int;
|
|
169
|
+
using iterator_category = std::input_iterator_tag;
|
|
170
|
+
|
|
171
|
+
MultiScanIterator(const std::vector<ScanOptions>& scan_opts,
|
|
172
|
+
Iterator* db_iter)
|
|
173
|
+
: scan_opts_(scan_opts), idx_(0), db_iter_(db_iter), scan_(db_iter_) {
|
|
174
|
+
if (scan_opts_.empty()) {
|
|
175
|
+
throw std::logic_error("Zero scans in multi-scan");
|
|
176
|
+
}
|
|
177
|
+
db_iter_->Seek(*scan_opts_[idx_].range.start);
|
|
178
|
+
status_ = db_iter_->status();
|
|
179
|
+
if (!status_.ok()) {
|
|
180
|
+
throw MultiScanException(status_);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
explicit MultiScanIterator(const std::vector<ScanOptions>& scan_opts)
|
|
185
|
+
: scan_opts_(scan_opts),
|
|
186
|
+
idx_(scan_opts_.size()),
|
|
187
|
+
db_iter_(nullptr),
|
|
188
|
+
scan_(nullptr) {}
|
|
189
|
+
|
|
190
|
+
~MultiScanIterator() { assert(status_.ok()); }
|
|
191
|
+
|
|
192
|
+
MultiScanIterator& operator++() {
|
|
193
|
+
if (idx_ >= scan_opts_.size()) {
|
|
194
|
+
throw std::logic_error("Index out of range");
|
|
195
|
+
}
|
|
196
|
+
idx_++;
|
|
197
|
+
if (idx_ < scan_opts_.size()) {
|
|
198
|
+
db_iter_->Seek(*scan_opts_[idx_].range.start);
|
|
199
|
+
status_ = db_iter_->status();
|
|
200
|
+
if (!status_.ok()) {
|
|
201
|
+
throw MultiScanException(status_);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return *this;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
bool operator==(std::nullptr_t /*other*/) const {
|
|
208
|
+
return idx_ >= scan_opts_.size();
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
bool operator!=(std::nullptr_t /*other*/) const {
|
|
212
|
+
return idx_ < scan_opts_.size();
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
reference operator*() { return scan_; }
|
|
216
|
+
reference operator->() { return scan_; }
|
|
217
|
+
|
|
218
|
+
private:
|
|
219
|
+
const std::vector<ScanOptions>& scan_opts_;
|
|
220
|
+
size_t idx_;
|
|
221
|
+
Iterator* db_iter_;
|
|
222
|
+
Status status_;
|
|
223
|
+
Scan scan_;
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
MultiScanIterator begin() {
|
|
227
|
+
return MultiScanIterator(scan_opts_, db_iter_.get());
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
std::nullptr_t end() { return nullptr; }
|
|
231
|
+
|
|
232
|
+
private:
|
|
233
|
+
const std::vector<ScanOptions> scan_opts_;
|
|
234
|
+
std::unique_ptr<Iterator> db_iter_;
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -62,6 +62,8 @@ struct Options;
|
|
|
62
62
|
struct DbPath;
|
|
63
63
|
|
|
64
64
|
using FileTypeSet = SmallEnumSet<FileType, FileType::kBlobFile>;
|
|
65
|
+
using CompactionStyleSet =
|
|
66
|
+
SmallEnumSet<CompactionStyle, CompactionStyle::kCompactionStyleNone>;
|
|
65
67
|
|
|
66
68
|
struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
|
|
67
69
|
// The function recovers options to a previous version. Only 4.6 or later
|
|
@@ -231,6 +233,14 @@ struct ColumnFamilyOptions : public AdvancedColumnFamilyOptions {
|
|
|
231
233
|
// different options for compression algorithms
|
|
232
234
|
CompressionOptions compression_opts;
|
|
233
235
|
|
|
236
|
+
// EXPERIMENTAL
|
|
237
|
+
// Customized compression through a callback interface. When non-nullptr,
|
|
238
|
+
// supersedes the above compression options, except that the above options are
|
|
239
|
+
// still processed as they historically would be and passed to
|
|
240
|
+
// CompressionManager::GetCompressorForSST as hints or suggestions. See
|
|
241
|
+
// advanced_compression.h
|
|
242
|
+
std::shared_ptr<CompressionManager> compression_manager;
|
|
243
|
+
|
|
234
244
|
// Number of files to trigger level-0 compaction. A value <0 means that
|
|
235
245
|
// level-0 compaction will not be triggered by number of files at all.
|
|
236
246
|
//
|
|
@@ -454,6 +464,7 @@ extern const char* kHostnameForDbHostId;
|
|
|
454
464
|
enum class CompactionServiceJobStatus : char {
|
|
455
465
|
kSuccess,
|
|
456
466
|
kFailure,
|
|
467
|
+
kAborted,
|
|
457
468
|
kUseLocal,
|
|
458
469
|
};
|
|
459
470
|
|
|
@@ -461,6 +472,12 @@ struct CompactionServiceJobInfo {
|
|
|
461
472
|
std::string db_name;
|
|
462
473
|
std::string db_id;
|
|
463
474
|
std::string db_session_id;
|
|
475
|
+
|
|
476
|
+
// the id of the column family where the compaction happened.
|
|
477
|
+
uint32_t cf_id;
|
|
478
|
+
// the name of the column family where the compaction happened.
|
|
479
|
+
std::string cf_name;
|
|
480
|
+
|
|
464
481
|
uint64_t job_id; // job_id is only unique within the current DB and session,
|
|
465
482
|
// restart DB will reset the job_id. `db_id` and
|
|
466
483
|
// `db_session_id` could help you build unique id across
|
|
@@ -474,21 +491,33 @@ struct CompactionServiceJobInfo {
|
|
|
474
491
|
bool is_manual_compaction;
|
|
475
492
|
bool bottommost_level;
|
|
476
493
|
|
|
494
|
+
// the smallest input level of the compaction.
|
|
495
|
+
// (same as Compaction::start_level and CompactionJobInfo::base_input_level)
|
|
496
|
+
int base_input_level;
|
|
497
|
+
// the output level of the compaction.
|
|
498
|
+
int output_level;
|
|
499
|
+
|
|
477
500
|
CompactionServiceJobInfo(std::string db_name_, std::string db_id_,
|
|
478
|
-
std::string db_session_id_,
|
|
501
|
+
std::string db_session_id_, uint32_t cf_id_,
|
|
502
|
+
std::string cf_name_, uint64_t job_id_,
|
|
479
503
|
Env::Priority priority_,
|
|
480
504
|
CompactionReason compaction_reason_,
|
|
481
505
|
bool is_full_compaction_, bool is_manual_compaction_,
|
|
482
|
-
bool bottommost_level_
|
|
506
|
+
bool bottommost_level_, int base_input_level_,
|
|
507
|
+
int output_level_)
|
|
483
508
|
: db_name(std::move(db_name_)),
|
|
484
509
|
db_id(std::move(db_id_)),
|
|
485
510
|
db_session_id(std::move(db_session_id_)),
|
|
511
|
+
cf_id(cf_id_),
|
|
512
|
+
cf_name(std::move(cf_name_)),
|
|
486
513
|
job_id(job_id_),
|
|
487
514
|
priority(priority_),
|
|
488
515
|
compaction_reason(compaction_reason_),
|
|
489
516
|
is_full_compaction(is_full_compaction_),
|
|
490
517
|
is_manual_compaction(is_manual_compaction_),
|
|
491
|
-
bottommost_level(bottommost_level_)
|
|
518
|
+
bottommost_level(bottommost_level_),
|
|
519
|
+
base_input_level(base_input_level_),
|
|
520
|
+
output_level(output_level_) {}
|
|
492
521
|
};
|
|
493
522
|
|
|
494
523
|
struct CompactionServiceScheduleResponse {
|
|
@@ -527,6 +556,9 @@ class CompactionService : public Customizable {
|
|
|
527
556
|
return CompactionServiceJobStatus::kUseLocal;
|
|
528
557
|
}
|
|
529
558
|
|
|
559
|
+
// Cancel awaiting jobs. Called by CancelAllBackgroundWork()
|
|
560
|
+
virtual void CancelAwaitingJobs() {}
|
|
561
|
+
|
|
530
562
|
// Optional callback function upon Installation.
|
|
531
563
|
virtual void OnInstallation(const std::string& /*scheduled_job_id*/,
|
|
532
564
|
CompactionServiceJobStatus /*status*/) {}
|
|
@@ -590,7 +622,8 @@ struct DBOptions {
|
|
|
590
622
|
// DEPRECATED: This option might be removed in a future release.
|
|
591
623
|
//
|
|
592
624
|
// If true, during memtable flush, RocksDB will validate total entries
|
|
593
|
-
// read in flush,
|
|
625
|
+
// read in flush, total entries written in the SST and compare them with
|
|
626
|
+
// counter of keys added.
|
|
594
627
|
//
|
|
595
628
|
// The option is here to turn the feature off in case this new validation
|
|
596
629
|
// feature has a bug. The option may be removed in the future once the
|
|
@@ -632,6 +665,26 @@ struct DBOptions {
|
|
|
632
665
|
// Default: false
|
|
633
666
|
bool track_and_verify_wals_in_manifest = false;
|
|
634
667
|
|
|
668
|
+
// EXPERIMENTAL
|
|
669
|
+
//
|
|
670
|
+
// If true, each new WAL will record various information about its predecessor
|
|
671
|
+
// WAL for verification on the predecessor WAL during WAL recovery.
|
|
672
|
+
//
|
|
673
|
+
// It verifies the following:
|
|
674
|
+
// 1. There exists at least some WAL in the DB
|
|
675
|
+
// - It's not compatible with `RepairDB()` since this option imposes a
|
|
676
|
+
// stricter requirement on WAL than the DB went through `RepariDB()` can
|
|
677
|
+
// normally meet
|
|
678
|
+
// 2. There exists no WAL hole where new WAL data presents while some old WAL
|
|
679
|
+
// data not yet obsolete is missing. The DB manifest indicates which WALs are
|
|
680
|
+
// obsolete.
|
|
681
|
+
//
|
|
682
|
+
// This is intended to be a better replacement to
|
|
683
|
+
// `track_and_verify_wals_in_manifest`.
|
|
684
|
+
//
|
|
685
|
+
// Default: false
|
|
686
|
+
bool track_and_verify_wals = false;
|
|
687
|
+
|
|
635
688
|
// If true, verifies the SST unique id between MANIFEST and actual file
|
|
636
689
|
// each time an SST file is opened. This check ensures an SST file is not
|
|
637
690
|
// overwritten or misplaced. A corruption error will be reported if mismatch
|
|
@@ -789,6 +842,7 @@ struct DBOptions {
|
|
|
789
842
|
// If it is non empty, the log files will be in the specified dir,
|
|
790
843
|
// and the db data dir's absolute path will be used as the log file
|
|
791
844
|
// name's prefix.
|
|
845
|
+
// NOTE: not for WALs
|
|
792
846
|
std::string db_log_dir = "";
|
|
793
847
|
|
|
794
848
|
// This specifies the absolute dir path for write-ahead logs (WAL).
|
|
@@ -869,21 +923,24 @@ struct DBOptions {
|
|
|
869
923
|
// be created.
|
|
870
924
|
// If max_log_file_size == 0, all logs will be written to one
|
|
871
925
|
// log file.
|
|
926
|
+
// NOTE: not for WALs
|
|
872
927
|
size_t max_log_file_size = 0;
|
|
873
928
|
|
|
874
929
|
// Time for the info log file to roll (in seconds).
|
|
875
930
|
// If specified with non-zero value, log file will be rolled
|
|
876
931
|
// if it has been active longer than `log_file_time_to_roll`.
|
|
877
932
|
// Default: 0 (disabled)
|
|
933
|
+
// NOTE: not for WALs
|
|
878
934
|
size_t log_file_time_to_roll = 0;
|
|
879
935
|
|
|
880
936
|
// Maximal info log files to be kept.
|
|
881
937
|
// Default: 1000
|
|
938
|
+
// NOTE: not for WALs
|
|
882
939
|
size_t keep_log_file_num = 1000;
|
|
883
940
|
|
|
884
|
-
// Recycle
|
|
885
|
-
// If non-zero, we will reuse previously written
|
|
886
|
-
//
|
|
941
|
+
// Recycle WAL files.
|
|
942
|
+
// If non-zero, we will reuse previously written WAL files for new
|
|
943
|
+
// WALs, overwriting the old data. The value indicates how many
|
|
887
944
|
// such files we will keep around at any point in time for later
|
|
888
945
|
// use. This is more efficient because the blocks are already
|
|
889
946
|
// allocated and fdatasync does not need to update the inode after
|
|
@@ -1045,23 +1102,6 @@ struct DBOptions {
|
|
|
1045
1102
|
// Dynamically changeable through SetDBOptions() API.
|
|
1046
1103
|
size_t compaction_readahead_size = 2 * 1024 * 1024;
|
|
1047
1104
|
|
|
1048
|
-
// This is a maximum buffer size that is used by WinMmapReadableFile in
|
|
1049
|
-
// unbuffered disk I/O mode. We need to maintain an aligned buffer for
|
|
1050
|
-
// reads. We allow the buffer to grow until the specified value and then
|
|
1051
|
-
// for bigger requests allocate one shot buffers. In unbuffered mode we
|
|
1052
|
-
// always bypass read-ahead buffer at ReadaheadRandomAccessFile
|
|
1053
|
-
// When read-ahead is required we then make use of compaction_readahead_size
|
|
1054
|
-
// value and always try to read ahead. With read-ahead we always
|
|
1055
|
-
// pre-allocate buffer to the size instead of growing it up to a limit.
|
|
1056
|
-
//
|
|
1057
|
-
// This option is currently honored only on Windows
|
|
1058
|
-
//
|
|
1059
|
-
// Default: 1 Mb
|
|
1060
|
-
//
|
|
1061
|
-
// Special value: 0 - means do not maintain per instance buffer. Allocate
|
|
1062
|
-
// per request buffer and avoid locking.
|
|
1063
|
-
size_t random_access_max_buffer_size = 1024 * 1024;
|
|
1064
|
-
|
|
1065
1105
|
// This is the maximum buffer size that is used by WritableFileWriter.
|
|
1066
1106
|
// With direct IO, we need to maintain an aligned buffer for writes.
|
|
1067
1107
|
// We allow the buffer to grow until it's size hits the limit in buffered
|
|
@@ -1288,14 +1328,6 @@ struct DBOptions {
|
|
|
1288
1328
|
// currently.
|
|
1289
1329
|
WalFilter* wal_filter = nullptr;
|
|
1290
1330
|
|
|
1291
|
-
// DEPRECATED: This option might be removed in a future release.
|
|
1292
|
-
//
|
|
1293
|
-
// If true, then DB::Open, CreateColumnFamily, DropColumnFamily, and
|
|
1294
|
-
// SetOptions will fail if options file is not properly persisted.
|
|
1295
|
-
//
|
|
1296
|
-
// DEFAULT: true
|
|
1297
|
-
bool fail_if_options_file_error = true;
|
|
1298
|
-
|
|
1299
1331
|
// If true, then print malloc stats together with rocksdb.stats
|
|
1300
1332
|
// when printing to LOG.
|
|
1301
1333
|
// DEFAULT: false
|
|
@@ -1414,9 +1446,10 @@ struct DBOptions {
|
|
|
1414
1446
|
// prefix_same_as_start=true can take advantage of prefix seek optimizations.
|
|
1415
1447
|
bool prefix_seek_opt_in_only = false;
|
|
1416
1448
|
|
|
1417
|
-
// The number of bytes to prefetch when reading the
|
|
1418
|
-
//
|
|
1419
|
-
// round-trips. If 0, then
|
|
1449
|
+
// The number of bytes to prefetch when reading the DB manifest and WAL files
|
|
1450
|
+
// during DB::Open (and variants). This is mostly useful for reading a
|
|
1451
|
+
// remotely located log, as it can save the number of round-trips. If 0, then
|
|
1452
|
+
// the prefetching is disabled.
|
|
1420
1453
|
//
|
|
1421
1454
|
// Default: 0
|
|
1422
1455
|
size_t log_readahead_size = 0;
|
|
@@ -1613,6 +1646,24 @@ struct DBOptions {
|
|
|
1613
1646
|
// `kUnknown`, this overrides any temperature set by OptimizeForLogWrite
|
|
1614
1647
|
// functions.
|
|
1615
1648
|
Temperature wal_write_temperature = Temperature::kUnknown;
|
|
1649
|
+
|
|
1650
|
+
// Enum set indicative of which compaction styles SST write lifetime hint
|
|
1651
|
+
// calculation is allowed on. Today, RocksDB provides native support for
|
|
1652
|
+
// kCompactionStyleLevel and kCompactionStyleUniversal (experimental version).
|
|
1653
|
+
// Other compaction styles, even when enabled in the set, won't have any
|
|
1654
|
+
// effect in the default PosixWritableFile file implementation. There are
|
|
1655
|
+
// numerous benefits coming from employing the hints including reduction in
|
|
1656
|
+
// write amplification caused by OS file movement during garbage collection,
|
|
1657
|
+
// and reduction in wear-leveling (SSDs). However, as currently implemented,
|
|
1658
|
+
// SST write lifetime hints are calculated in a static way and solely based on
|
|
1659
|
+
// the level, which might not be suitable for non-uniform workloads with
|
|
1660
|
+
// dynamic / high-variance lifespan of data within the same level. In those
|
|
1661
|
+
// cases (or when the performance is not satisfactory), it's recommended to
|
|
1662
|
+
// disable the hints by assigning the setting to the empty set (= {});
|
|
1663
|
+
//
|
|
1664
|
+
// Default: Enabled in kCompactionStyleLevel mode.
|
|
1665
|
+
CompactionStyleSet calculate_sst_write_lifetime_hint_set = {
|
|
1666
|
+
CompactionStyle::kCompactionStyleLevel};
|
|
1616
1667
|
// End EXPERIMENTAL
|
|
1617
1668
|
};
|
|
1618
1669
|
|
|
@@ -1676,6 +1727,50 @@ enum ReadTier {
|
|
|
1676
1727
|
kMemtableTier = 0x3 // data in memtable. used for memtable-only iterators.
|
|
1677
1728
|
};
|
|
1678
1729
|
|
|
1730
|
+
// A range of keys. In case of user_defined timestamp, if enabled, `start` and
|
|
1731
|
+
// `limit` should point to key without timestamp part.
|
|
1732
|
+
struct Range {
|
|
1733
|
+
Slice start;
|
|
1734
|
+
Slice limit;
|
|
1735
|
+
|
|
1736
|
+
Range() {}
|
|
1737
|
+
Range(const Slice& s, const Slice& l) : start(s), limit(l) {}
|
|
1738
|
+
};
|
|
1739
|
+
|
|
1740
|
+
// A key range with optional endpoints. In case of user_defined timestamp, if
|
|
1741
|
+
// enabled, `start` and `limit` should point to key without timestamp part.
|
|
1742
|
+
struct RangeOpt {
|
|
1743
|
+
// When start.has_value() == false, refers to starting before every key
|
|
1744
|
+
OptSlice start;
|
|
1745
|
+
// When limit.has_value() == false, refers to ending after every key
|
|
1746
|
+
OptSlice limit;
|
|
1747
|
+
|
|
1748
|
+
RangeOpt() {}
|
|
1749
|
+
RangeOpt(const OptSlice& s, const OptSlice& l) : start(s), limit(l) {}
|
|
1750
|
+
};
|
|
1751
|
+
|
|
1752
|
+
// EXPERIMENTAL
|
|
1753
|
+
//
|
|
1754
|
+
// Options for a RocksDB scan request. Only forward scans for now.
|
|
1755
|
+
// We may add other options such as prefix scan in the future.
|
|
1756
|
+
struct ScanOptions {
|
|
1757
|
+
// The scan range. Mandatory for start to be set, limit is optional
|
|
1758
|
+
RangeOpt range;
|
|
1759
|
+
|
|
1760
|
+
// A map of name,value pairs that can be passed by the user to an
|
|
1761
|
+
// external table reader. This is completely opaque to RocksDB and is
|
|
1762
|
+
// ignored by the natively supported table readers like block based and plain
|
|
1763
|
+
// table. This is only useful for Iterator.
|
|
1764
|
+
std::optional<std::unordered_map<std::string, std::string>> property_bag;
|
|
1765
|
+
|
|
1766
|
+
// An unbounded scan with a start key
|
|
1767
|
+
explicit ScanOptions(const Slice& _start) : range(_start, OptSlice()) {}
|
|
1768
|
+
|
|
1769
|
+
// A bounded scan with a start key and upper bound
|
|
1770
|
+
ScanOptions(const Slice& _start, const Slice& _upper_bound)
|
|
1771
|
+
: range(_start, _upper_bound) {}
|
|
1772
|
+
};
|
|
1773
|
+
|
|
1679
1774
|
// Options that control read operations
|
|
1680
1775
|
struct ReadOptions {
|
|
1681
1776
|
// *** BEGIN options relevant to point lookups as well as scans ***
|
|
@@ -1757,6 +1852,10 @@ struct ReadOptions {
|
|
|
1757
1852
|
// block cache.
|
|
1758
1853
|
bool fill_cache = true;
|
|
1759
1854
|
|
|
1855
|
+
// DEPRECATED: This option might be removed in a future release.
|
|
1856
|
+
// There should be no noticeable performance difference whether this option
|
|
1857
|
+
// is turned on or off when a DB does not use DeleteRange().
|
|
1858
|
+
//
|
|
1760
1859
|
// If true, range tombstones handling will be skipped in key lookup paths.
|
|
1761
1860
|
// For DB instances that don't use DeleteRange() calls, this setting can
|
|
1762
1861
|
// be used to optimize the read performance.
|
|
@@ -1940,6 +2039,28 @@ struct ReadOptions {
|
|
|
1940
2039
|
// Default: false
|
|
1941
2040
|
bool allow_unprepared_value = false;
|
|
1942
2041
|
|
|
2042
|
+
// EXPERIMENTAL
|
|
2043
|
+
//
|
|
2044
|
+
// Long-running iterators are holding onto memory and storage resources long
|
|
2045
|
+
// after they are obsolete. This setting (when enabled) will fix that problem
|
|
2046
|
+
// for as long as iterator periodically makes some progress and its supplied
|
|
2047
|
+
// `read_options` was configured with non-nullptr `snapshot` value.
|
|
2048
|
+
// The feature is engineered so that the performance impact should be
|
|
2049
|
+
// negligible. We expect the default value to be true some time in the future.
|
|
2050
|
+
//
|
|
2051
|
+
// NOTE 1: Does not have effect on TransactionDB with WRITE_PREPARED or
|
|
2052
|
+
// WRITE_UNPREPARED policies (currently incompatible).
|
|
2053
|
+
//
|
|
2054
|
+
// NOTE 2: True is not recommended if using user-defined timestamp with
|
|
2055
|
+
// persist_user_defined_timestamps=false and non-nullptr
|
|
2056
|
+
// ReadOptions::timestamp or ReadOptions::iter_start_ts, because
|
|
2057
|
+
// auto-refreshing iterator will not prevent user timestamp
|
|
2058
|
+
// information from being dropped during iteration. Auto-refresh might
|
|
2059
|
+
// be disabled for this combination in the future.
|
|
2060
|
+
//
|
|
2061
|
+
// Default: false
|
|
2062
|
+
bool auto_refresh_iterator_with_snapshot = false;
|
|
2063
|
+
|
|
1943
2064
|
// *** END options only relevant to iterators or scans ***
|
|
1944
2065
|
|
|
1945
2066
|
// *** BEGIN options for RocksDB internal use only ***
|
|
@@ -1949,6 +2070,19 @@ struct ReadOptions {
|
|
|
1949
2070
|
|
|
1950
2071
|
// *** END options for RocksDB internal use only ***
|
|
1951
2072
|
|
|
2073
|
+
// *** BEGIN per-request settings for internal team use only ***
|
|
2074
|
+
|
|
2075
|
+
// TODO: create a new struct for per-request options, potentially including
|
|
2076
|
+
// timestamps in point lookups/scans
|
|
2077
|
+
|
|
2078
|
+
// request_id is a unique id assigned by the application. It is used to allow
|
|
2079
|
+
// us to link file system metrics/logs to rocksDB and application logs. This
|
|
2080
|
+
// request_id may not be unique to each RocksDB api call - it could refer to
|
|
2081
|
+
// an application level request that results in multiple RocksDB api calls
|
|
2082
|
+
const std::string* request_id = nullptr;
|
|
2083
|
+
|
|
2084
|
+
// *** END per-request settings for internal team use only ***
|
|
2085
|
+
|
|
1952
2086
|
ReadOptions() {}
|
|
1953
2087
|
ReadOptions(bool _verify_checksums, bool _fill_cache);
|
|
1954
2088
|
explicit ReadOptions(Env::IOActivity _io_activity);
|
|
@@ -2088,10 +2222,20 @@ struct CompactionOptions {
|
|
|
2088
2222
|
// If > 0, it will replace the option in the DBOptions for this compaction.
|
|
2089
2223
|
uint32_t max_subcompactions;
|
|
2090
2224
|
|
|
2225
|
+
// Allows cancellation of an in-progress manual compaction.
|
|
2226
|
+
//
|
|
2227
|
+
// Cancellation can be delayed waiting on automatic compactions when used
|
|
2228
|
+
// together with `exclusive_manual_compaction == true`.
|
|
2229
|
+
std::atomic<bool>* canceled;
|
|
2230
|
+
// NOTE: Calling DisableManualCompaction() will not override the
|
|
2231
|
+
// canceled variable in CompactionOptions, as it does for CompactRangeOptions
|
|
2232
|
+
// - this is because ManualCompactionState is not used
|
|
2233
|
+
|
|
2091
2234
|
CompactionOptions()
|
|
2092
2235
|
: compression(kDisableCompressionOption),
|
|
2093
2236
|
output_file_size_limit(std::numeric_limits<uint64_t>::max()),
|
|
2094
|
-
max_subcompactions(0)
|
|
2237
|
+
max_subcompactions(0),
|
|
2238
|
+
canceled(nullptr) {}
|
|
2095
2239
|
};
|
|
2096
2240
|
|
|
2097
2241
|
// For level based compaction, we can configure if we want to skip/force
|
|
@@ -2158,7 +2302,7 @@ struct CompactRangeOptions {
|
|
|
2158
2302
|
// Cancellation can be delayed waiting on automatic compactions when used
|
|
2159
2303
|
// together with `exclusive_manual_compaction == true`.
|
|
2160
2304
|
std::atomic<bool>* canceled = nullptr;
|
|
2161
|
-
// NOTE: Calling DisableManualCompaction() overwrites the
|
|
2305
|
+
// NOTE: Calling DisableManualCompaction() overwrites the user-provided
|
|
2162
2306
|
// canceled variable in CompactRangeOptions.
|
|
2163
2307
|
// Typically, when CompactRange is being called in one thread (t1) with
|
|
2164
2308
|
// canceled = false, and DisableManualCompaction is being called in the
|
|
@@ -2202,8 +2346,11 @@ struct IngestExternalFileOptions {
|
|
|
2202
2346
|
// during file ingestion in the DB (the conditions under which a global_seqno
|
|
2203
2347
|
// must be assigned to the ingested file).
|
|
2204
2348
|
bool allow_global_seqno = true;
|
|
2205
|
-
//
|
|
2206
|
-
// (
|
|
2349
|
+
// Normally (true), IngestExternalFile() will trigger and block for flushing
|
|
2350
|
+
// memtable(s) if there is overlap between ingested files and memtable(s). If
|
|
2351
|
+
// allow_blocking_flush is set to false, IngestExternalFile() will fail if the
|
|
2352
|
+
// file key range overlaps with the memtable key range (memtable flush
|
|
2353
|
+
// required).
|
|
2207
2354
|
bool allow_blocking_flush = true;
|
|
2208
2355
|
// Set to true if you would like duplicate keys in the file being ingested
|
|
2209
2356
|
// to be skipped rather than overwriting existing data under that key.
|
|
@@ -2286,6 +2433,44 @@ struct IngestExternalFileOptions {
|
|
|
2286
2433
|
bool fill_cache = true;
|
|
2287
2434
|
};
|
|
2288
2435
|
|
|
2436
|
+
// It is valid that files_checksums and files_checksum_func_names are both
|
|
2437
|
+
// empty (no checksum information is provided for ingestion). Otherwise,
|
|
2438
|
+
// their sizes should be the same as external_files. The file order should
|
|
2439
|
+
// be the same in three vectors and guaranteed by the caller.
|
|
2440
|
+
// Note that, we assume the temperatures of this batch of files to be
|
|
2441
|
+
// ingested are the same.
|
|
2442
|
+
struct IngestExternalFileArg {
|
|
2443
|
+
ColumnFamilyHandle* column_family = nullptr;
|
|
2444
|
+
std::vector<std::string> external_files;
|
|
2445
|
+
IngestExternalFileOptions options;
|
|
2446
|
+
std::vector<std::string> files_checksums;
|
|
2447
|
+
std::vector<std::string> files_checksum_func_names;
|
|
2448
|
+
// A hint as to the temperature for *reading* the files to be ingested.
|
|
2449
|
+
Temperature file_temperature = Temperature::kUnknown;
|
|
2450
|
+
// EXPERIMENTAL: When specified, existing keys in the given range will be
|
|
2451
|
+
// cleared atomically as part of the ingestion, where the ingested files are
|
|
2452
|
+
// logically applied on top of the cleared key range.
|
|
2453
|
+
// * If both `start` and `limit` are nullptr, the entire column family is
|
|
2454
|
+
// cleared; however, setting just one bound to nullptr is not yet supported.
|
|
2455
|
+
// * When a range is specified, all the external files in this batch must
|
|
2456
|
+
// be contained in that key range.
|
|
2457
|
+
// * Checks for memtable overlap and possible blocking flush will apply
|
|
2458
|
+
// to this range (not just the file ranges).
|
|
2459
|
+
// * Not compatible with ingest_behind=true.
|
|
2460
|
+
// * When options.snapshot_consistency = false, the range is cleared
|
|
2461
|
+
// similarly to DeleteFilesInRange, but fails if any files overlap the range
|
|
2462
|
+
// only partially.
|
|
2463
|
+
// * It is recommended to use fail_if_not_bottommost_level=true to ensure
|
|
2464
|
+
// data in the key range is ingested to a single compacted level (the
|
|
2465
|
+
// last level). (fail_if_not_bottommost_level=false allows overlap between
|
|
2466
|
+
// the ingested files.)
|
|
2467
|
+
// * options.snapshot_consistency = true is not yet supported.
|
|
2468
|
+
// BUG: the upper bound of the range may be interpreted as inclusive or
|
|
2469
|
+
// exclusive, so it is best not to depend on one or the other until it is
|
|
2470
|
+
// sorted out.
|
|
2471
|
+
std::optional<RangeOpt> atomic_replace_range;
|
|
2472
|
+
};
|
|
2473
|
+
|
|
2289
2474
|
enum TraceFilterType : uint64_t {
|
|
2290
2475
|
// Trace all the operations
|
|
2291
2476
|
kTraceFilterNone = 0x0,
|
|
@@ -2371,10 +2556,16 @@ struct CompactionServiceOptionsOverride {
|
|
|
2371
2556
|
// to set it here.
|
|
2372
2557
|
std::shared_ptr<Statistics> statistics = nullptr;
|
|
2373
2558
|
|
|
2559
|
+
// Info Log. If not overriden, default one will be used.
|
|
2560
|
+
std::shared_ptr<Logger> info_log = nullptr;
|
|
2561
|
+
|
|
2374
2562
|
// Only compaction generated SST files use this user defined table properties
|
|
2375
2563
|
// collector.
|
|
2376
2564
|
std::vector<std::shared_ptr<TablePropertiesCollectorFactory>>
|
|
2377
2565
|
table_properties_collector_factories;
|
|
2566
|
+
|
|
2567
|
+
// All other options to override. Unknown options will be ignored.
|
|
2568
|
+
std::unordered_map<std::string, std::string> options_map;
|
|
2378
2569
|
};
|
|
2379
2570
|
|
|
2380
2571
|
struct OpenAndCompactOptions {
|