@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
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
//
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
#include "rocksdb/convenience.h"
|
|
9
8
|
|
|
10
9
|
#include "db/convenience_impl.h"
|
|
@@ -27,6 +26,17 @@ Status DeleteFilesInRange(DB* db, ColumnFamilyHandle* column_family,
|
|
|
27
26
|
|
|
28
27
|
Status DeleteFilesInRanges(DB* db, ColumnFamilyHandle* column_family,
|
|
29
28
|
const RangePtr* ranges, size_t n, bool include_end) {
|
|
29
|
+
std::vector<RangeOpt> range_opts(n);
|
|
30
|
+
for (size_t i = 0; i < n; ++i) {
|
|
31
|
+
range_opts[i] = {OptSlice::CopyFromPtr(ranges[i].start),
|
|
32
|
+
OptSlice::CopyFromPtr(ranges[i].limit)};
|
|
33
|
+
}
|
|
34
|
+
return DeleteFilesInRanges(db, column_family, range_opts.data(), n,
|
|
35
|
+
include_end);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Status DeleteFilesInRanges(DB* db, ColumnFamilyHandle* column_family,
|
|
39
|
+
const RangeOpt* ranges, size_t n, bool include_end) {
|
|
30
40
|
return (static_cast_with_check<DBImpl>(db->GetRootDB()))
|
|
31
41
|
->DeleteFilesInRanges(column_family, ranges, n, include_end);
|
|
32
42
|
}
|
|
@@ -83,9 +93,10 @@ Status VerifySstFileChecksumInternal(const Options& options,
|
|
|
83
93
|
nullptr /* file_read_hist */, ioptions.rate_limiter.get()));
|
|
84
94
|
const bool kImmortal = true;
|
|
85
95
|
auto reader_options = TableReaderOptions(
|
|
86
|
-
ioptions, options.prefix_extractor,
|
|
87
|
-
options.block_protection_bytes_per_key,
|
|
88
|
-
!kImmortal, false /* force_direct_prefetch */,
|
|
96
|
+
ioptions, options.prefix_extractor, options.compression_manager.get(),
|
|
97
|
+
env_options, internal_comparator, options.block_protection_bytes_per_key,
|
|
98
|
+
false /* skip_filters */, !kImmortal, false /* force_direct_prefetch */,
|
|
99
|
+
-1 /* level */);
|
|
89
100
|
reader_options.largest_seqno = largest_seqno;
|
|
90
101
|
s = options.table_factory->NewTableReader(
|
|
91
102
|
read_options, reader_options, std::move(file_reader), file_size,
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
// Use of this source code is governed by a BSD-style license that can be
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
|
|
10
|
-
#include "rocksdb/options.h"
|
|
11
|
-
|
|
12
10
|
#include <fcntl.h>
|
|
13
11
|
#include <sys/stat.h>
|
|
14
12
|
#include <sys/types.h>
|
|
@@ -25,6 +23,7 @@
|
|
|
25
23
|
#include "rocksdb/convenience.h"
|
|
26
24
|
#include "rocksdb/db.h"
|
|
27
25
|
#include "rocksdb/env.h"
|
|
26
|
+
#include "rocksdb/options.h"
|
|
28
27
|
#include "rocksdb/table.h"
|
|
29
28
|
#include "rocksdb/utilities/transaction_db.h"
|
|
30
29
|
#include "rocksdb/write_batch.h"
|
|
@@ -864,7 +863,6 @@ TEST_F(CorruptionTest, ParanoidFileChecksOnCompact) {
|
|
|
864
863
|
ASSERT_OK(DB::Open(options, dbname_, &db_));
|
|
865
864
|
assert(db_ != nullptr); // suppress false clang-analyze report
|
|
866
865
|
Build(100, 2);
|
|
867
|
-
// ASSERT_OK(db_->Flush(FlushOptions()));
|
|
868
866
|
DBImpl* dbi = static_cast_with_check<DBImpl>(db_);
|
|
869
867
|
ASSERT_OK(dbi->TEST_FlushMemTable());
|
|
870
868
|
mock->SetCorruptionMode(mode);
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
4
|
// (found in the LICENSE.Apache file in the root directory).
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
#include "db/db_impl/db_impl.h"
|
|
8
7
|
#include "db/db_test_util.h"
|
|
9
8
|
#include "rocksdb/db.h"
|
|
@@ -349,4 +348,3 @@ int main(int argc, char** argv) {
|
|
|
349
348
|
return 0;
|
|
350
349
|
}
|
|
351
350
|
}
|
|
352
|
-
|
|
@@ -161,6 +161,7 @@ TEST_F(DBBasicTest, UniqueSession) {
|
|
|
161
161
|
|
|
162
162
|
ASSERT_EQ(sid2, sid3);
|
|
163
163
|
|
|
164
|
+
DestroyAndReopen(options);
|
|
164
165
|
CreateAndReopenWithCF({"goku"}, options);
|
|
165
166
|
ASSERT_OK(db_->GetDbSessionId(sid1));
|
|
166
167
|
ASSERT_OK(Put("bar", "e1"));
|
|
@@ -179,6 +180,7 @@ TEST_F(DBBasicTest, UniqueSession) {
|
|
|
179
180
|
TEST_F(DBBasicTest, ReadOnlyDB) {
|
|
180
181
|
ASSERT_OK(Put("foo", "v1"));
|
|
181
182
|
ASSERT_OK(Put("bar", "v2"));
|
|
183
|
+
ASSERT_OK(Flush());
|
|
182
184
|
ASSERT_OK(Put("foo", "v3"));
|
|
183
185
|
Close();
|
|
184
186
|
|
|
@@ -208,10 +210,11 @@ TEST_F(DBBasicTest, ReadOnlyDB) {
|
|
|
208
210
|
|
|
209
211
|
auto options = CurrentOptions();
|
|
210
212
|
assert(options.env == env_);
|
|
211
|
-
ASSERT_OK(
|
|
213
|
+
ASSERT_OK(EnforcedReadOnlyReopen(options));
|
|
212
214
|
ASSERT_EQ("v3", Get("foo"));
|
|
213
215
|
ASSERT_EQ("v2", Get("bar"));
|
|
214
216
|
verify_all_iters();
|
|
217
|
+
ASSERT_EQ(Flush().code(), Status::Code::kNotSupported);
|
|
215
218
|
Close();
|
|
216
219
|
|
|
217
220
|
// Reopen and flush memtable.
|
|
@@ -219,26 +222,38 @@ TEST_F(DBBasicTest, ReadOnlyDB) {
|
|
|
219
222
|
ASSERT_OK(Flush());
|
|
220
223
|
Close();
|
|
221
224
|
// Now check keys in read only mode.
|
|
222
|
-
ASSERT_OK(
|
|
225
|
+
ASSERT_OK(EnforcedReadOnlyReopen(options));
|
|
223
226
|
ASSERT_EQ("v3", Get("foo"));
|
|
224
227
|
ASSERT_EQ("v2", Get("bar"));
|
|
225
228
|
verify_all_iters();
|
|
226
|
-
|
|
229
|
+
ASSERT_EQ(db_->SyncWAL().code(), Status::Code::kNotSupported);
|
|
230
|
+
|
|
231
|
+
// More ops that should fail
|
|
232
|
+
std::vector<ColumnFamilyHandle*> cfhs{{}};
|
|
233
|
+
ASSERT_EQ(db_->CreateColumnFamily(options, "blah", &cfhs[0]).code(),
|
|
234
|
+
Status::Code::kNotSupported);
|
|
235
|
+
|
|
236
|
+
ASSERT_EQ(db_->CreateColumnFamilies(options, {"blah"}, &cfhs).code(),
|
|
237
|
+
Status::Code::kNotSupported);
|
|
238
|
+
|
|
239
|
+
std::vector<ColumnFamilyDescriptor> cfds;
|
|
240
|
+
cfds.push_back({"blah", options});
|
|
241
|
+
ASSERT_EQ(db_->CreateColumnFamilies(cfds, &cfhs).code(),
|
|
242
|
+
Status::Code::kNotSupported);
|
|
227
243
|
}
|
|
228
244
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
245
|
+
TEST_F(DBBasicTest, ReadOnlyDBWithWriteDBIdToManifestSet) {
|
|
246
|
+
auto options = CurrentOptions();
|
|
247
|
+
options.write_dbid_to_manifest = false;
|
|
248
|
+
DestroyAndReopen(options);
|
|
233
249
|
ASSERT_OK(Put("foo", "v1"));
|
|
234
250
|
ASSERT_OK(Put("bar", "v2"));
|
|
235
251
|
ASSERT_OK(Put("foo", "v3"));
|
|
236
252
|
Close();
|
|
237
253
|
|
|
238
|
-
auto options = CurrentOptions();
|
|
239
254
|
options.write_dbid_to_manifest = true;
|
|
240
255
|
assert(options.env == env_);
|
|
241
|
-
ASSERT_OK(
|
|
256
|
+
ASSERT_OK(EnforcedReadOnlyReopen(options));
|
|
242
257
|
std::string db_id1;
|
|
243
258
|
ASSERT_OK(db_->GetDbIdentity(db_id1));
|
|
244
259
|
ASSERT_EQ("v3", Get("foo"));
|
|
@@ -258,7 +273,7 @@ TEST_F(DBBasicTest, DISABLED_ReadOnlyDBWithWriteDBIdToManifestSet) {
|
|
|
258
273
|
ASSERT_OK(Flush());
|
|
259
274
|
Close();
|
|
260
275
|
// Now check keys in read only mode.
|
|
261
|
-
ASSERT_OK(
|
|
276
|
+
ASSERT_OK(EnforcedReadOnlyReopen(options));
|
|
262
277
|
ASSERT_EQ("v3", Get("foo"));
|
|
263
278
|
ASSERT_EQ("v2", Get("bar"));
|
|
264
279
|
ASSERT_TRUE(db_->SyncWAL().IsNotSupported());
|
|
@@ -878,7 +893,6 @@ TEST_F(DBBasicTest, Snapshot) {
|
|
|
878
893
|
} while (ChangeOptions());
|
|
879
894
|
}
|
|
880
895
|
|
|
881
|
-
|
|
882
896
|
class DBBasicMultiConfigs : public DBBasicTest,
|
|
883
897
|
public ::testing::WithParamInterface<int> {
|
|
884
898
|
public:
|
|
@@ -2604,8 +2618,7 @@ class DBMultiGetAsyncIOTest : public DBBasicTest,
|
|
|
2604
2618
|
// Warm up the block cache so we don't need to use the IO uring
|
|
2605
2619
|
Iterator* iter = dbfull()->NewIterator(ReadOptions());
|
|
2606
2620
|
for (iter->SeekToFirst(); iter->Valid() && iter->status().ok();
|
|
2607
|
-
iter->Next())
|
|
2608
|
-
;
|
|
2621
|
+
iter->Next());
|
|
2609
2622
|
EXPECT_OK(iter->status());
|
|
2610
2623
|
delete iter;
|
|
2611
2624
|
#endif // ROCKSDB_IOURING_PRESENT
|
|
@@ -3275,8 +3288,7 @@ TEST_F(DBBasicTest, GetAllKeyVersions) {
|
|
|
3275
3288
|
ASSERT_OK(Delete(std::to_string(i)));
|
|
3276
3289
|
}
|
|
3277
3290
|
std::vector<KeyVersion> key_versions;
|
|
3278
|
-
ASSERT_OK(GetAllKeyVersions(db_,
|
|
3279
|
-
std::numeric_limits<size_t>::max(),
|
|
3291
|
+
ASSERT_OK(GetAllKeyVersions(db_, {}, {}, std::numeric_limits<size_t>::max(),
|
|
3280
3292
|
&key_versions));
|
|
3281
3293
|
ASSERT_EQ(kNumInserts + kNumDeletes + kNumUpdates, key_versions.size());
|
|
3282
3294
|
for (size_t i = 0; i < kNumInserts + kNumDeletes + kNumUpdates; i++) {
|
|
@@ -3286,7 +3298,7 @@ TEST_F(DBBasicTest, GetAllKeyVersions) {
|
|
|
3286
3298
|
ASSERT_EQ(key_versions[i].GetTypeName(), "TypeValue");
|
|
3287
3299
|
}
|
|
3288
3300
|
}
|
|
3289
|
-
ASSERT_OK(GetAllKeyVersions(db_, handles_[0],
|
|
3301
|
+
ASSERT_OK(GetAllKeyVersions(db_, handles_[0], {}, {},
|
|
3290
3302
|
std::numeric_limits<size_t>::max(),
|
|
3291
3303
|
&key_versions));
|
|
3292
3304
|
ASSERT_EQ(kNumInserts + kNumDeletes + kNumUpdates, key_versions.size());
|
|
@@ -3301,10 +3313,17 @@ TEST_F(DBBasicTest, GetAllKeyVersions) {
|
|
|
3301
3313
|
for (size_t i = 0; i + 1 != kNumDeletes; ++i) {
|
|
3302
3314
|
ASSERT_OK(Delete(1, std::to_string(i)));
|
|
3303
3315
|
}
|
|
3304
|
-
ASSERT_OK(GetAllKeyVersions(db_, handles_[1],
|
|
3316
|
+
ASSERT_OK(GetAllKeyVersions(db_, handles_[1], {}, {},
|
|
3305
3317
|
std::numeric_limits<size_t>::max(),
|
|
3306
3318
|
&key_versions));
|
|
3307
3319
|
ASSERT_EQ(kNumInserts + kNumDeletes + kNumUpdates - 3, key_versions.size());
|
|
3320
|
+
|
|
3321
|
+
// Change from historical behavior: empty key is now interpreted literally as
|
|
3322
|
+
// a legal key (rather than as a "not present" key)
|
|
3323
|
+
ASSERT_OK(GetAllKeyVersions(db_, handles_[1], Slice(), Slice(),
|
|
3324
|
+
std::numeric_limits<size_t>::max(),
|
|
3325
|
+
&key_versions));
|
|
3326
|
+
ASSERT_EQ(key_versions.size(), 0);
|
|
3308
3327
|
}
|
|
3309
3328
|
|
|
3310
3329
|
TEST_F(DBBasicTest, ValueTypeString) {
|
|
@@ -3356,6 +3375,69 @@ TEST_F(DBBasicTest, MultiGetIOBufferOverrun) {
|
|
|
3356
3375
|
keys.data(), values.data(), statuses.data(), true);
|
|
3357
3376
|
}
|
|
3358
3377
|
|
|
3378
|
+
TEST_F(DBBasicTest, MultiGetWithSnapshotsAndPersistedTier) {
|
|
3379
|
+
Options options = CurrentOptions();
|
|
3380
|
+
options.create_if_missing = true;
|
|
3381
|
+
options.atomic_flush = true;
|
|
3382
|
+
DestroyAndReopen(options);
|
|
3383
|
+
CreateAndReopenWithCF({"cf1", "cf2"}, options);
|
|
3384
|
+
|
|
3385
|
+
// Insert initial data
|
|
3386
|
+
ASSERT_OK(Put(0, "key1", "value1_cf0"));
|
|
3387
|
+
ASSERT_OK(Put(1, "key1", "value1_cf1"));
|
|
3388
|
+
ASSERT_OK(Put(2, "key1", "value1_cf2"));
|
|
3389
|
+
ASSERT_OK(Flush({0, 1, 2}));
|
|
3390
|
+
for (auto cf : {0, 1, 2}) {
|
|
3391
|
+
ASSERT_EQ(1, NumTableFilesAtLevel(0, cf));
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3394
|
+
ASSERT_OK(Put(0, "key1", "value2_cf0"));
|
|
3395
|
+
ASSERT_OK(Put(1, "key1", "value2_cf1"));
|
|
3396
|
+
ASSERT_OK(Put(2, "key1", "value2_cf2"));
|
|
3397
|
+
|
|
3398
|
+
// Prepare for concurrent atomic flush
|
|
3399
|
+
std::atomic<bool> flush_done(false);
|
|
3400
|
+
std::thread flush_thread([&]() {
|
|
3401
|
+
ASSERT_OK(Flush({0, 1, 2}));
|
|
3402
|
+
flush_done.store(true);
|
|
3403
|
+
});
|
|
3404
|
+
|
|
3405
|
+
// Perform MultiGet with snapshot and read_tier = kPersistentTier
|
|
3406
|
+
ReadOptions ro;
|
|
3407
|
+
const Snapshot* snapshot = db_->GetSnapshot();
|
|
3408
|
+
ro.snapshot = snapshot;
|
|
3409
|
+
ro.read_tier = kPersistedTier;
|
|
3410
|
+
|
|
3411
|
+
std::string k = "key1";
|
|
3412
|
+
std::vector<Slice> keys(3, Slice(k));
|
|
3413
|
+
std::vector<Status> statuses(keys.size());
|
|
3414
|
+
std::vector<ColumnFamilyHandle*> cfs(keys.size());
|
|
3415
|
+
std::vector<Slice> new_keys(keys.size());
|
|
3416
|
+
std::vector<PinnableSlice> pin_values(keys.size());
|
|
3417
|
+
for (size_t i = 0; i < keys.size(); ++i) {
|
|
3418
|
+
cfs[i] = handles_[i];
|
|
3419
|
+
}
|
|
3420
|
+
db_->MultiGet(ro, cfs.size(), cfs.data(), keys.data(), pin_values.data(),
|
|
3421
|
+
statuses.data());
|
|
3422
|
+
for (const auto& s : statuses) {
|
|
3423
|
+
ASSERT_OK(s);
|
|
3424
|
+
}
|
|
3425
|
+
|
|
3426
|
+
if (pin_values[0] == "value1_cf0") {
|
|
3427
|
+
// Check if the first value matches expected value
|
|
3428
|
+
ASSERT_EQ(pin_values[1], "value1_cf1");
|
|
3429
|
+
ASSERT_EQ(pin_values[2], "value1_cf2");
|
|
3430
|
+
} else {
|
|
3431
|
+
// If first value doesn't match, check if we got the updated values
|
|
3432
|
+
ASSERT_EQ(pin_values[0], "value2_cf0");
|
|
3433
|
+
ASSERT_EQ(pin_values[1], "value2_cf1");
|
|
3434
|
+
ASSERT_EQ(pin_values[2], "value2_cf2");
|
|
3435
|
+
}
|
|
3436
|
+
|
|
3437
|
+
flush_thread.join();
|
|
3438
|
+
db_->ReleaseSnapshot(snapshot);
|
|
3439
|
+
}
|
|
3440
|
+
|
|
3359
3441
|
TEST_F(DBBasicTest, IncrementalRecoveryNoCorrupt) {
|
|
3360
3442
|
Options options = CurrentOptions();
|
|
3361
3443
|
DestroyAndReopen(options);
|
|
@@ -4996,6 +5078,103 @@ TEST_F(DBBasicTest, VerifyFileChecksumsReadahead) {
|
|
|
4996
5078
|
(sst_size + alignment - 1) / (alignment));
|
|
4997
5079
|
}
|
|
4998
5080
|
|
|
5081
|
+
TEST_F(DBBasicTest, DisallowMemtableWrite) {
|
|
5082
|
+
// This test is mostly about what you can't do with memtable writes
|
|
5083
|
+
// disallowed. For what you can do, see
|
|
5084
|
+
// ExternalSSTFileBasicTest.FailIfNotBottommostLevelAndDisallowMemtable
|
|
5085
|
+
Options options_allow = GetDefaultOptions();
|
|
5086
|
+
options_allow.create_if_missing = true;
|
|
5087
|
+
Options options_disallow = options_allow;
|
|
5088
|
+
options_disallow.disallow_memtable_writes = true;
|
|
5089
|
+
options_disallow.paranoid_memory_checks = true;
|
|
5090
|
+
|
|
5091
|
+
DestroyAndReopen(options_allow);
|
|
5092
|
+
// CFs allowing and disallowing memtable write
|
|
5093
|
+
CreateColumnFamilies({"cf1", "cf2"}, options_allow);
|
|
5094
|
+
CreateColumnFamilies({"cf3"}, options_disallow);
|
|
5095
|
+
// XXX: needed to get consistent handles_ mappings
|
|
5096
|
+
ReopenWithColumnFamilies(
|
|
5097
|
+
{"default", "cf1", "cf2", "cf3"},
|
|
5098
|
+
{options_allow, options_allow, options_allow, options_disallow});
|
|
5099
|
+
|
|
5100
|
+
EXPECT_EQ(Put(0, "a0", "1").code(), Status::Code::kOk);
|
|
5101
|
+
EXPECT_EQ(Put(1, "a1", "1").code(), Status::Code::kOk);
|
|
5102
|
+
EXPECT_EQ(Put(2, "a2", "1").code(), Status::Code::kOk);
|
|
5103
|
+
EXPECT_EQ(Put(3, "a3", "1").code(), Status::Code::kInvalidArgument);
|
|
5104
|
+
|
|
5105
|
+
EXPECT_EQ(Get(0, "a0"), "1");
|
|
5106
|
+
EXPECT_EQ(Get(1, "a1"), "1");
|
|
5107
|
+
EXPECT_EQ(Get(2, "a2"), "1");
|
|
5108
|
+
EXPECT_EQ(Get(3, "a3"), "NOT_FOUND");
|
|
5109
|
+
|
|
5110
|
+
EXPECT_EQ(Delete(0, "z0").code(), Status::Code::kOk);
|
|
5111
|
+
EXPECT_EQ(Delete(1, "z1").code(), Status::Code::kOk);
|
|
5112
|
+
EXPECT_EQ(Delete(2, "z2").code(), Status::Code::kOk);
|
|
5113
|
+
EXPECT_EQ(Delete(3, "z3").code(), Status::Code::kInvalidArgument);
|
|
5114
|
+
|
|
5115
|
+
WriteBatch wb;
|
|
5116
|
+
EXPECT_EQ(wb.Put(handles_[0], "b0", "2").code(), Status::Code::kOk);
|
|
5117
|
+
EXPECT_EQ(wb.Put(handles_[1], "b1", "2").code(), Status::Code::kOk);
|
|
5118
|
+
EXPECT_EQ(wb.Put(handles_[2], "b2", "2").code(), Status::Code::kOk);
|
|
5119
|
+
EXPECT_EQ(wb.Put(handles_[3], "b3", "2").code(),
|
|
5120
|
+
Status::Code::kInvalidArgument);
|
|
5121
|
+
ASSERT_OK(db_->Write({}, &wb));
|
|
5122
|
+
wb.Clear();
|
|
5123
|
+
|
|
5124
|
+
EXPECT_EQ(Get(0, "b0"), "2");
|
|
5125
|
+
EXPECT_EQ(Get(1, "b1"), "2");
|
|
5126
|
+
EXPECT_EQ(Get(2, "b2"), "2");
|
|
5127
|
+
EXPECT_EQ(Get(3, "b3"), "NOT_FOUND");
|
|
5128
|
+
|
|
5129
|
+
std::unique_ptr<Iterator> iter(
|
|
5130
|
+
dbfull()->NewIterator(ReadOptions(), handles_[3]));
|
|
5131
|
+
iter->Seek("a3");
|
|
5132
|
+
ASSERT_OK(iter->status());
|
|
5133
|
+
iter.reset();
|
|
5134
|
+
// When the DB is re-opened with WAL entries for a CF that is newly setting
|
|
5135
|
+
// disallow_memtable_writes, we detect that and fail the open gracefully.
|
|
5136
|
+
ASSERT_EQ(TryReopenWithColumnFamilies(
|
|
5137
|
+
{"default", "cf1", "cf2", "cf3"},
|
|
5138
|
+
{options_allow, options_allow, options_disallow, options_allow})
|
|
5139
|
+
.code(),
|
|
5140
|
+
Status::Code::kInvalidArgument);
|
|
5141
|
+
|
|
5142
|
+
// Successfully opening with allow creates L0 files from the WAL
|
|
5143
|
+
ReopenWithColumnFamilies({"default", "cf1", "cf2", "cf3"}, options_allow);
|
|
5144
|
+
|
|
5145
|
+
EXPECT_EQ(Get(0, "a0"), "1");
|
|
5146
|
+
EXPECT_EQ(Get(1, "a1"), "1");
|
|
5147
|
+
EXPECT_EQ(Get(2, "a2"), "1");
|
|
5148
|
+
EXPECT_EQ(Get(3, "a3"), "NOT_FOUND");
|
|
5149
|
+
|
|
5150
|
+
// Now able to disallow on CF2 because no relevant WAL entries
|
|
5151
|
+
ReopenWithColumnFamilies(
|
|
5152
|
+
{"default", "cf1", "cf2", "cf3"},
|
|
5153
|
+
{options_allow, options_allow, options_disallow, options_allow});
|
|
5154
|
+
|
|
5155
|
+
EXPECT_EQ(Get(0, "a0"), "1");
|
|
5156
|
+
EXPECT_EQ(Get(1, "a1"), "1");
|
|
5157
|
+
EXPECT_EQ(Get(2, "a2"), "1");
|
|
5158
|
+
EXPECT_EQ(Get(3, "a3"), "NOT_FOUND");
|
|
5159
|
+
|
|
5160
|
+
// Now able to write to CF 3 but not CF 2
|
|
5161
|
+
EXPECT_EQ(Put(0, "c0", "3").code(), Status::Code::kOk);
|
|
5162
|
+
EXPECT_EQ(Put(1, "c1", "3").code(), Status::Code::kOk);
|
|
5163
|
+
EXPECT_EQ(Put(2, "c2", "3").code(), Status::Code::kInvalidArgument);
|
|
5164
|
+
EXPECT_EQ(Put(3, "c3", "3").code(), Status::Code::kOk);
|
|
5165
|
+
|
|
5166
|
+
EXPECT_EQ(Get(0, "c0"), "3");
|
|
5167
|
+
EXPECT_EQ(Get(1, "c1"), "3");
|
|
5168
|
+
EXPECT_EQ(Get(2, "c2"), "NOT_FOUND");
|
|
5169
|
+
EXPECT_EQ(Get(3, "c3"), "3");
|
|
5170
|
+
|
|
5171
|
+
// disallow_memtable_writes not supported on default column family.
|
|
5172
|
+
// (Would be complicated to make a WriteBatch aware of the setting in order
|
|
5173
|
+
// to reject the write before entering the write path.)
|
|
5174
|
+
Destroy(options_allow);
|
|
5175
|
+
EXPECT_EQ(TryReopen(options_disallow).code(), Status::Code::kInvalidArgument);
|
|
5176
|
+
}
|
|
5177
|
+
|
|
4999
5178
|
// TODO: re-enable after we provide finer-grained control for WAL tracking to
|
|
5000
5179
|
// meet the needs of different use cases, durability levels and recovery modes.
|
|
5001
5180
|
TEST_F(DBBasicTest, DISABLED_ManualWalSync) {
|
|
@@ -305,7 +305,6 @@ class ReadOnlyCacheWrapper : public CacheWrapper {
|
|
|
305
305
|
} // anonymous namespace
|
|
306
306
|
#endif // SNAPPY
|
|
307
307
|
|
|
308
|
-
|
|
309
308
|
// Make sure that when options.block_cache is set, after a new table is
|
|
310
309
|
// created its index/filter blocks are added to block cache.
|
|
311
310
|
TEST_F(DBBlockCacheTest, IndexAndFilterBlocksOfNewTableAddedToCache) {
|
|
@@ -507,6 +506,8 @@ TEST_P(DBBlockCacheTest1, WarmCacheWithBlocksDuringFlush) {
|
|
|
507
506
|
table_options.prepopulate_block_cache =
|
|
508
507
|
BlockBasedTableOptions::PrepopulateBlockCache::kFlushOnly;
|
|
509
508
|
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
509
|
+
// Include a compression dictionary block
|
|
510
|
+
options.compression_opts.max_dict_bytes = 123;
|
|
510
511
|
DestroyAndReopen(options);
|
|
511
512
|
|
|
512
513
|
std::string value(kValueSize, 'a');
|
|
@@ -538,6 +539,9 @@ TEST_P(DBBlockCacheTest1, WarmCacheWithBlocksDuringFlush) {
|
|
|
538
539
|
options.statistics->getTickerCount(BLOCK_CACHE_FILTER_HIT));
|
|
539
540
|
}
|
|
540
541
|
ASSERT_EQ(0, options.statistics->getTickerCount(BLOCK_CACHE_FILTER_MISS));
|
|
542
|
+
|
|
543
|
+
// Including compression dict
|
|
544
|
+
ASSERT_EQ(0, options.statistics->getTickerCount(BLOCK_CACHE_MISS));
|
|
541
545
|
}
|
|
542
546
|
|
|
543
547
|
// Verify compaction not counted
|
|
@@ -825,70 +829,78 @@ TEST_F(DBBlockCacheTest, CacheCompressionDict) {
|
|
|
825
829
|
const int kNumEntriesPerFile = 128;
|
|
826
830
|
const int kNumBytesPerEntry = 1024;
|
|
827
831
|
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
if (Zlib_Supported()) {
|
|
831
|
-
compression_types.push_back(kZlibCompression);
|
|
832
|
-
}
|
|
833
|
-
if (LZ4_Supported()) {
|
|
834
|
-
compression_types.push_back(kLZ4Compression);
|
|
835
|
-
compression_types.push_back(kLZ4HCCompression);
|
|
836
|
-
}
|
|
837
|
-
if (ZSTD_Supported()) {
|
|
838
|
-
compression_types.push_back(kZSTD);
|
|
839
|
-
} else if (ZSTDNotFinal_Supported()) {
|
|
840
|
-
compression_types.push_back(kZSTDNotFinalCompression);
|
|
841
|
-
}
|
|
832
|
+
std::vector<CompressionType> dict_compressions =
|
|
833
|
+
GetSupportedDictCompressions();
|
|
842
834
|
Random rnd(301);
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
856
|
-
DestroyAndReopen(options);
|
|
835
|
+
// Format version before and after compression handling changes
|
|
836
|
+
for (int format_version : {6, 7}) {
|
|
837
|
+
// Test all supported compression types because (at least historically)
|
|
838
|
+
// dictionary compression could be enabled and a dictionary block saved
|
|
839
|
+
// but ignored by some compression types. Ensure we at least don't crash
|
|
840
|
+
// or return corruption for those.
|
|
841
|
+
for (auto compression_type : GetSupportedCompressions()) {
|
|
842
|
+
// Extra handling checks only for types actually supporting dictionary
|
|
843
|
+
// compression.
|
|
844
|
+
bool dict_supported =
|
|
845
|
+
std::count(dict_compressions.begin(), dict_compressions.end(),
|
|
846
|
+
compression_type) > 0;
|
|
857
847
|
|
|
858
|
-
|
|
848
|
+
Options options = CurrentOptions();
|
|
849
|
+
options.bottommost_compression = compression_type;
|
|
850
|
+
options.bottommost_compression_opts.max_dict_bytes = 4096;
|
|
851
|
+
options.bottommost_compression_opts.enabled = true;
|
|
852
|
+
options.create_if_missing = true;
|
|
853
|
+
options.num_levels = 2;
|
|
854
|
+
options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
|
|
855
|
+
options.target_file_size_base = kNumEntriesPerFile * kNumBytesPerEntry;
|
|
856
|
+
BlockBasedTableOptions table_options;
|
|
857
|
+
table_options.cache_index_and_filter_blocks = true;
|
|
858
|
+
table_options.block_cache.reset(new MockCache());
|
|
859
|
+
table_options.format_version = format_version;
|
|
860
|
+
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
|
|
861
|
+
DestroyAndReopen(options);
|
|
859
862
|
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
for (int
|
|
863
|
-
|
|
864
|
-
|
|
863
|
+
RecordCacheCountersForCompressionDict(options);
|
|
864
|
+
|
|
865
|
+
for (int i = 0; i < kNumFiles; ++i) {
|
|
866
|
+
ASSERT_EQ(i, NumTableFilesAtLevel(0, 0));
|
|
867
|
+
for (int j = 0; j < kNumEntriesPerFile; ++j) {
|
|
868
|
+
std::string value = rnd.RandomString(kNumBytesPerEntry);
|
|
869
|
+
ASSERT_OK(Put(Key(j * kNumFiles + i), value.c_str()));
|
|
870
|
+
}
|
|
871
|
+
ASSERT_OK(Flush());
|
|
872
|
+
}
|
|
873
|
+
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
874
|
+
ASSERT_EQ(0, NumTableFilesAtLevel(0));
|
|
875
|
+
ASSERT_EQ(kNumFiles, NumTableFilesAtLevel(1));
|
|
876
|
+
|
|
877
|
+
if (dict_supported) {
|
|
878
|
+
// Compression dictionary blocks are preloaded.
|
|
879
|
+
CheckCacheCountersForCompressionDict(
|
|
880
|
+
options, kNumFiles /* expected_compression_dict_misses */,
|
|
881
|
+
0 /* expected_compression_dict_hits */,
|
|
882
|
+
kNumFiles /* expected_compression_dict_inserts */);
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
// Seek to a key in a file. It should cause the SST's dictionary
|
|
886
|
+
// meta-block to be read.
|
|
887
|
+
RecordCacheCounters(options);
|
|
888
|
+
RecordCacheCountersForCompressionDict(options);
|
|
889
|
+
ReadOptions read_options;
|
|
890
|
+
ASSERT_NE("NOT_FOUND", Get(Key(kNumFiles * kNumEntriesPerFile - 1)));
|
|
891
|
+
|
|
892
|
+
if (dict_supported) {
|
|
893
|
+
// Two block hits: index and dictionary since they are prefetched
|
|
894
|
+
// One block missed/added: data block
|
|
895
|
+
CheckCacheCounters(options, 1 /* expected_misses */,
|
|
896
|
+
2 /* expected_hits */, 1 /* expected_inserts */,
|
|
897
|
+
0 /* expected_failures */);
|
|
898
|
+
CheckCacheCountersForCompressionDict(
|
|
899
|
+
options, 0 /* expected_compression_dict_misses */,
|
|
900
|
+
1 /* expected_compression_dict_hits */,
|
|
901
|
+
0 /* expected_compression_dict_inserts */);
|
|
865
902
|
}
|
|
866
|
-
ASSERT_OK(Flush());
|
|
867
903
|
}
|
|
868
|
-
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
869
|
-
ASSERT_EQ(0, NumTableFilesAtLevel(0));
|
|
870
|
-
ASSERT_EQ(kNumFiles, NumTableFilesAtLevel(1));
|
|
871
|
-
|
|
872
|
-
// Compression dictionary blocks are preloaded.
|
|
873
|
-
CheckCacheCountersForCompressionDict(
|
|
874
|
-
options, kNumFiles /* expected_compression_dict_misses */,
|
|
875
|
-
0 /* expected_compression_dict_hits */,
|
|
876
|
-
kNumFiles /* expected_compression_dict_inserts */);
|
|
877
|
-
|
|
878
|
-
// Seek to a key in a file. It should cause the SST's dictionary meta-block
|
|
879
|
-
// to be read.
|
|
880
|
-
RecordCacheCounters(options);
|
|
881
|
-
RecordCacheCountersForCompressionDict(options);
|
|
882
|
-
ReadOptions read_options;
|
|
883
|
-
ASSERT_NE("NOT_FOUND", Get(Key(kNumFiles * kNumEntriesPerFile - 1)));
|
|
884
|
-
// Two block hits: index and dictionary since they are prefetched
|
|
885
|
-
// One block missed/added: data block
|
|
886
|
-
CheckCacheCounters(options, 1 /* expected_misses */, 2 /* expected_hits */,
|
|
887
|
-
1 /* expected_inserts */, 0 /* expected_failures */);
|
|
888
|
-
CheckCacheCountersForCompressionDict(
|
|
889
|
-
options, 0 /* expected_compression_dict_misses */,
|
|
890
|
-
1 /* expected_compression_dict_hits */,
|
|
891
|
-
0 /* expected_compression_dict_inserts */);
|
|
892
904
|
}
|
|
893
905
|
}
|
|
894
906
|
|
|
@@ -1758,8 +1770,8 @@ class CacheKeyTest : public testing::Test {
|
|
|
1758
1770
|
tp_.db_id = std::to_string(db_id_);
|
|
1759
1771
|
tp_.orig_file_number = file_number;
|
|
1760
1772
|
bool is_stable;
|
|
1761
|
-
std::string cur_session_id;
|
|
1762
|
-
uint64_t cur_file_number = 42;
|
|
1773
|
+
std::string cur_session_id; // ignored
|
|
1774
|
+
uint64_t cur_file_number = 42; // ignored
|
|
1763
1775
|
OffsetableCacheKey rv;
|
|
1764
1776
|
BlockBasedTable::SetupBaseCacheKey(&tp_, cur_session_id, cur_file_number,
|
|
1765
1777
|
&rv, &is_stable);
|
|
@@ -2244,6 +2244,54 @@ TEST_F(DBBloomFilterTest, MemtableWholeKeyBloomFilterMultiGet) {
|
|
|
2244
2244
|
|
|
2245
2245
|
db_->ReleaseSnapshot(snapshot);
|
|
2246
2246
|
}
|
|
2247
|
+
|
|
2248
|
+
TEST_F(DBBloomFilterTest, TestMemtableBloomAndWBM) {
|
|
2249
|
+
Options options = CurrentOptions();
|
|
2250
|
+
options.arena_block_size = 4096;
|
|
2251
|
+
options.write_buffer_size = 4000000;
|
|
2252
|
+
std::shared_ptr<Cache> cache = NewLRUCache(LRUCacheOptions(
|
|
2253
|
+
options.write_buffer_size * 3 /* capacity */, 1 /* num_shard_bits */,
|
|
2254
|
+
false /* strict_capacity_limit */, 0.0 /* high_pri_pool_ratio */,
|
|
2255
|
+
nullptr /* memory_allocator */, kDefaultToAdaptiveMutex,
|
|
2256
|
+
kDontChargeCacheMetadata));
|
|
2257
|
+
|
|
2258
|
+
options.write_buffer_manager.reset(
|
|
2259
|
+
new WriteBufferManager(options.write_buffer_size, cache));
|
|
2260
|
+
Reopen(options);
|
|
2261
|
+
ASSERT_OK(Put("foo", "bar"));
|
|
2262
|
+
|
|
2263
|
+
const auto kDummyEntrySize =
|
|
2264
|
+
CacheReservationManagerImpl<CacheEntryRole::kMisc>::GetDummyEntrySize();
|
|
2265
|
+
|
|
2266
|
+
// Just the start of a memtable, no Bloom
|
|
2267
|
+
ASSERT_GE(cache->GetUsage(), options.arena_block_size);
|
|
2268
|
+
ASSERT_LE(cache->GetUsage(), kDummyEntrySize);
|
|
2269
|
+
|
|
2270
|
+
// Now enable memtable bloom filter
|
|
2271
|
+
const double kRatio = 0.25;
|
|
2272
|
+
options.memtable_prefix_bloom_size_ratio = kRatio;
|
|
2273
|
+
options.memtable_whole_key_filtering = true;
|
|
2274
|
+
Reopen(options);
|
|
2275
|
+
ASSERT_OK(Put("foo2", "bar2"));
|
|
2276
|
+
|
|
2277
|
+
// Expecting a memtable Bloom of ratio times write_buffer_size, memory tracked
|
|
2278
|
+
auto bloom_size = static_cast<size_t>(kRatio * options.write_buffer_size);
|
|
2279
|
+
ASSERT_GE(cache->GetUsage(), bloom_size);
|
|
2280
|
+
ASSERT_LE(cache->GetUsage(), bloom_size + 2U * kDummyEntrySize);
|
|
2281
|
+
|
|
2282
|
+
// Now get another memtable and test
|
|
2283
|
+
// Pin this memtable with an iterator
|
|
2284
|
+
std::unique_ptr<Iterator> iter{db_->NewIterator({})};
|
|
2285
|
+
iter->Seek("foo2");
|
|
2286
|
+
ASSERT_TRUE(iter->Valid());
|
|
2287
|
+
ASSERT_OK(Flush());
|
|
2288
|
+
ASSERT_OK(Put("foo2", "bar2"));
|
|
2289
|
+
|
|
2290
|
+
// Expecting twice as much
|
|
2291
|
+
ASSERT_GE(cache->GetUsage(), 2U * bloom_size);
|
|
2292
|
+
ASSERT_LE(cache->GetUsage(), 2U * bloom_size + 2U * kDummyEntrySize);
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2247
2295
|
namespace {
|
|
2248
2296
|
std::pair<uint64_t, uint64_t> GetBloomStat(const Options& options, bool sst) {
|
|
2249
2297
|
if (sst) {
|