@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
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
#include "table/two_level_iterator.h"
|
|
35
35
|
#include "trace_replay/block_cache_tracer.h"
|
|
36
36
|
#include "util/atomic.h"
|
|
37
|
+
#include "util/cast_util.h"
|
|
37
38
|
#include "util/coro_utils.h"
|
|
38
39
|
#include "util/hash_containers.h"
|
|
39
40
|
|
|
@@ -105,6 +106,7 @@ class BlockBasedTable : public TableReader {
|
|
|
105
106
|
std::shared_ptr<CacheReservationManager> table_reader_cache_res_mgr =
|
|
106
107
|
nullptr,
|
|
107
108
|
const std::shared_ptr<const SliceTransform>& prefix_extractor = nullptr,
|
|
109
|
+
UnownedPtr<CompressionManager> compression_manager = nullptr,
|
|
108
110
|
bool prefetch_index_and_filter_in_cache = true, bool skip_filters = false,
|
|
109
111
|
int level = -1, const bool immortal_table = false,
|
|
110
112
|
const SequenceNumber largest_seqno = 0,
|
|
@@ -364,7 +366,7 @@ class BlockBasedTable : public TableReader {
|
|
|
364
366
|
template <typename TBlocklike>
|
|
365
367
|
WithBlocklikeCheck<Status, TBlocklike> MaybeReadBlockAndLoadToCache(
|
|
366
368
|
FilePrefetchBuffer* prefetch_buffer, const ReadOptions& ro,
|
|
367
|
-
const BlockHandle& handle,
|
|
369
|
+
const BlockHandle& handle, UnownedPtr<Decompressor> decomp,
|
|
368
370
|
bool for_compaction, CachableEntry<TBlocklike>* block_entry,
|
|
369
371
|
GetContext* get_context, BlockCacheLookupContext* lookup_context,
|
|
370
372
|
BlockContents* contents, bool async_read,
|
|
@@ -376,7 +378,7 @@ class BlockBasedTable : public TableReader {
|
|
|
376
378
|
template <typename TBlocklike>
|
|
377
379
|
WithBlocklikeCheck<Status, TBlocklike> RetrieveBlock(
|
|
378
380
|
FilePrefetchBuffer* prefetch_buffer, const ReadOptions& ro,
|
|
379
|
-
const BlockHandle& handle,
|
|
381
|
+
const BlockHandle& handle, UnownedPtr<Decompressor> decomp,
|
|
380
382
|
CachableEntry<TBlocklike>* block_entry, GetContext* get_context,
|
|
381
383
|
BlockCacheLookupContext* lookup_context, bool for_compaction,
|
|
382
384
|
bool use_cache, bool async_read, bool use_block_cache_for_lookup) const;
|
|
@@ -397,7 +399,7 @@ class BlockBasedTable : public TableReader {
|
|
|
397
399
|
const MultiGetRange* batch,
|
|
398
400
|
const autovector<BlockHandle, MultiGetContext::MAX_BATCH_SIZE>* handles,
|
|
399
401
|
Status* statuses, CachableEntry<Block_kData>* results, char* scratch,
|
|
400
|
-
|
|
402
|
+
UnownedPtr<Decompressor> decomp, bool use_fs_scratch);
|
|
401
403
|
|
|
402
404
|
// Get the iterator from the index reader.
|
|
403
405
|
//
|
|
@@ -429,7 +431,7 @@ class BlockBasedTable : public TableReader {
|
|
|
429
431
|
WithBlocklikeCheck<Status, TBlocklike> GetDataBlockFromCache(
|
|
430
432
|
const Slice& cache_key, BlockCacheInterface<TBlocklike> block_cache,
|
|
431
433
|
CachableEntry<TBlocklike>* block, GetContext* get_context,
|
|
432
|
-
|
|
434
|
+
UnownedPtr<Decompressor> decomp) const;
|
|
433
435
|
|
|
434
436
|
// Put a maybe compressed block to the corresponding block caches.
|
|
435
437
|
// This method will perform decompression against block_contents if needed
|
|
@@ -447,8 +449,7 @@ class BlockBasedTable : public TableReader {
|
|
|
447
449
|
CachableEntry<TBlocklike>* cached_block,
|
|
448
450
|
BlockContents&& uncompressed_block_contents,
|
|
449
451
|
BlockContents&& compressed_block_contents,
|
|
450
|
-
CompressionType block_comp_type,
|
|
451
|
-
const UncompressionDict& uncompression_dict,
|
|
452
|
+
CompressionType block_comp_type, UnownedPtr<Decompressor> decomp,
|
|
452
453
|
MemoryAllocator* memory_allocator, GetContext* get_context) const;
|
|
453
454
|
|
|
454
455
|
// Calls (*handle_result)(arg, ...) repeatedly, starting with the entry found
|
|
@@ -650,9 +651,11 @@ struct BlockBasedTable::Rep {
|
|
|
650
651
|
Slice min_timestamp;
|
|
651
652
|
Slice max_timestamp;
|
|
652
653
|
|
|
653
|
-
// If
|
|
654
|
-
//
|
|
655
|
-
|
|
654
|
+
// If blocks might be compressed, refers to a decompressor that can decompress
|
|
655
|
+
// them. (nullptr -> no blocks compressed) However, if (data) blocks are
|
|
656
|
+
// dictionary compressed, a dictionary-aware decompressor is needed, which
|
|
657
|
+
// might live in the block cache.
|
|
658
|
+
std::shared_ptr<Decompressor> decompressor;
|
|
656
659
|
|
|
657
660
|
// These describe how index is encoded.
|
|
658
661
|
bool index_has_first_key = false;
|
|
@@ -60,34 +60,33 @@ TBlockIter* BlockBasedTable::NewDataBlockIterator(
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
CachableEntry<Block> block;
|
|
63
|
-
|
|
64
|
-
CachableEntry<
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
{
|
|
64
|
+
CachableEntry<DecompressorDict> dict;
|
|
65
|
+
Decompressor* decomp = rep_->decompressor.get();
|
|
66
|
+
if (rep_->uncompression_dict_reader && block_type == BlockType::kData) {
|
|
67
|
+
// For async scans, don't use the prefetch buffer since an async prefetch
|
|
68
|
+
// might already be under way and this would invalidate it. Also, the
|
|
69
|
+
// uncompression dict is typically at the end of the file and would
|
|
70
|
+
// most likely break the sequentiality of the access pattern.
|
|
71
|
+
// Same is with auto_readahead_size. It iterates over index to lookup for
|
|
72
|
+
// data blocks. And this could break the the sequentiality of the access
|
|
73
|
+
// pattern.
|
|
74
|
+
s = rep_->uncompression_dict_reader->GetOrReadUncompressionDictionary(
|
|
75
|
+
((ro.async_io || ro.auto_readahead_size) ? nullptr : prefetch_buffer),
|
|
76
|
+
ro, get_context, lookup_context, &dict);
|
|
77
|
+
if (!s.ok()) {
|
|
78
|
+
iter->Invalidate(s);
|
|
79
|
+
return iter;
|
|
80
|
+
}
|
|
81
|
+
assert(dict.GetValue());
|
|
82
|
+
if (dict.GetValue()) {
|
|
83
|
+
decomp = dict.GetValue()->decompressor_.get();
|
|
84
|
+
}
|
|
78
85
|
}
|
|
79
|
-
const UncompressionDict& dict = uncompression_dict.GetValue()
|
|
80
|
-
? *uncompression_dict.GetValue()
|
|
81
|
-
: UncompressionDict::GetEmptyDict();
|
|
82
86
|
s = RetrieveBlock(
|
|
83
|
-
prefetch_buffer, ro, handle,
|
|
87
|
+
prefetch_buffer, ro, handle, decomp, &block.As<IterBlocklike>(),
|
|
84
88
|
get_context, lookup_context, for_compaction,
|
|
85
89
|
/* use_cache */ true, async_read, use_block_cache_for_lookup);
|
|
86
|
-
} else {
|
|
87
|
-
s = RetrieveBlock(
|
|
88
|
-
prefetch_buffer, ro, handle, UncompressionDict::GetEmptyDict(),
|
|
89
|
-
&block.As<IterBlocklike>(), get_context, lookup_context, for_compaction,
|
|
90
|
-
/* use_cache */ true, async_read, use_block_cache_for_lookup);
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
if (s.IsTryAgain() && async_read) {
|
|
@@ -33,7 +33,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
|
|
|
33
33
|
(const ReadOptions& options, const MultiGetRange* batch,
|
|
34
34
|
const autovector<BlockHandle, MultiGetContext::MAX_BATCH_SIZE>* handles,
|
|
35
35
|
Status* statuses, CachableEntry<Block_kData>* results, char* scratch,
|
|
36
|
-
|
|
36
|
+
UnownedPtr<Decompressor> decomp, bool use_fs_scratch) const {
|
|
37
37
|
RandomAccessFileReader* file = rep_->file.get();
|
|
38
38
|
const Footer& footer = rep_->footer;
|
|
39
39
|
const ImmutableOptions& ioptions = rep_->ioptions;
|
|
@@ -51,7 +51,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
|
|
|
51
51
|
|
|
52
52
|
// XXX: use_cache=true means double cache query?
|
|
53
53
|
statuses[idx_in_batch] = RetrieveBlock(
|
|
54
|
-
nullptr, options, handle,
|
|
54
|
+
nullptr, options, handle, decomp,
|
|
55
55
|
&results[idx_in_batch].As<Block_kData>(), mget_iter->get_context,
|
|
56
56
|
/* lookup_context */ nullptr,
|
|
57
57
|
/* for_compaction */ false, /* use_cache */ true,
|
|
@@ -138,17 +138,18 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
|
|
|
138
138
|
AlignedBuf direct_io_buf;
|
|
139
139
|
{
|
|
140
140
|
IOOptions opts;
|
|
141
|
-
|
|
141
|
+
IODebugContext dbg;
|
|
142
|
+
IOStatus s = file->PrepareIOOptions(options, opts, &dbg);
|
|
142
143
|
if (s.ok()) {
|
|
143
144
|
#if defined(WITH_COROUTINES)
|
|
144
145
|
if (file->use_direct_io()) {
|
|
145
146
|
#endif // WITH_COROUTINES
|
|
146
147
|
s = file->MultiRead(opts, &read_reqs[0], read_reqs.size(),
|
|
147
|
-
&direct_io_buf);
|
|
148
|
+
&direct_io_buf, &dbg);
|
|
148
149
|
#if defined(WITH_COROUTINES)
|
|
149
150
|
} else {
|
|
150
151
|
co_await batch->context()->reader().MultiReadAsync(
|
|
151
|
-
file, opts, &read_reqs[0], read_reqs.size(), &direct_io_buf);
|
|
152
|
+
file, opts, &read_reqs[0], read_reqs.size(), &direct_io_buf, &dbg);
|
|
152
153
|
}
|
|
153
154
|
#endif // WITH_COROUTINES
|
|
154
155
|
}
|
|
@@ -240,10 +241,11 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
|
|
|
240
241
|
// its not a memory mapped file
|
|
241
242
|
Slice result;
|
|
242
243
|
IOOptions opts;
|
|
243
|
-
|
|
244
|
+
IODebugContext dbg;
|
|
245
|
+
IOStatus io_s = file->PrepareIOOptions(options, opts, &dbg);
|
|
244
246
|
opts.verify_and_reconstruct_read = true;
|
|
245
247
|
io_s = file->Read(opts, handle.offset(), BlockSizeWithTrailer(handle),
|
|
246
|
-
&result, const_cast<char*>(data), nullptr);
|
|
248
|
+
&result, const_cast<char*>(data), nullptr, &dbg);
|
|
247
249
|
if (io_s.ok()) {
|
|
248
250
|
assert(result.data() == data);
|
|
249
251
|
assert(result.size() == BlockSizeWithTrailer(handle));
|
|
@@ -298,7 +300,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
|
|
|
298
300
|
// necessary. Since we're passing the serialized block contents, it
|
|
299
301
|
// will avoid looking up the block cache
|
|
300
302
|
s = MaybeReadBlockAndLoadToCache(
|
|
301
|
-
nullptr, options, handle,
|
|
303
|
+
nullptr, options, handle, decomp,
|
|
302
304
|
/*for_compaction=*/false, block_entry, mget_iter->get_context,
|
|
303
305
|
/*lookup_context=*/nullptr, &serialized_block,
|
|
304
306
|
/*async_read=*/false, /*use_block_cache_for_lookup=*/true);
|
|
@@ -320,11 +322,9 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::RetrieveMultipleBlocks)
|
|
|
320
322
|
GetBlockCompressionType(serialized_block);
|
|
321
323
|
BlockContents contents;
|
|
322
324
|
if (compression_type != kNoCompression) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
info, req.result.data() + req_offset, handle.size(), &contents,
|
|
327
|
-
footer.format_version(), rep_->ioptions, memory_allocator);
|
|
325
|
+
s = DecompressSerializedBlock(
|
|
326
|
+
req.result.data() + req_offset, handle.size(), compression_type,
|
|
327
|
+
*decomp, &contents, rep_->ioptions, memory_allocator);
|
|
328
328
|
} else {
|
|
329
329
|
// There are two cases here:
|
|
330
330
|
// 1) caller uses the shared buffer (scratch or direct io buffer);
|
|
@@ -421,10 +421,10 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
|
|
|
421
421
|
{
|
|
422
422
|
MultiGetRange data_block_range(sst_file_range, sst_file_range.begin(),
|
|
423
423
|
sst_file_range.end());
|
|
424
|
-
CachableEntry<
|
|
425
|
-
Status
|
|
426
|
-
|
|
427
|
-
bool
|
|
424
|
+
CachableEntry<DecompressorDict> dict;
|
|
425
|
+
Status dict_status;
|
|
426
|
+
dict_status.PermitUncheckedError();
|
|
427
|
+
bool dict_inited = false;
|
|
428
428
|
size_t total_len = 0;
|
|
429
429
|
|
|
430
430
|
// GetContext for any key will do, as the stats will be aggregated
|
|
@@ -466,26 +466,26 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
|
|
|
466
466
|
continue;
|
|
467
467
|
}
|
|
468
468
|
|
|
469
|
-
if (!
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
&uncompression_dict);
|
|
476
|
-
uncompression_dict_inited = true;
|
|
469
|
+
if (!dict_inited && rep_->uncompression_dict_reader) {
|
|
470
|
+
dict_status = rep_->uncompression_dict_reader
|
|
471
|
+
->GetOrReadUncompressionDictionary(
|
|
472
|
+
nullptr /* prefetch_buffer */, read_options,
|
|
473
|
+
get_context, &metadata_lookup_context, &dict);
|
|
474
|
+
dict_inited = true;
|
|
477
475
|
}
|
|
478
476
|
|
|
479
|
-
if (!
|
|
480
|
-
assert(!
|
|
481
|
-
*(miter->s) =
|
|
477
|
+
if (!dict_status.ok()) {
|
|
478
|
+
assert(!dict_status.IsNotFound());
|
|
479
|
+
*(miter->s) = dict_status;
|
|
482
480
|
data_block_range.SkipKey(miter);
|
|
483
481
|
sst_file_range.SkipKey(miter);
|
|
484
482
|
continue;
|
|
483
|
+
} else {
|
|
484
|
+
assert(!dict_inited || dict.GetValue() != nullptr);
|
|
485
|
+
}
|
|
486
|
+
if (dict.GetValue()) {
|
|
487
|
+
create_ctx.decompressor = dict.GetValue()->decompressor_.get();
|
|
485
488
|
}
|
|
486
|
-
create_ctx.dict = uncompression_dict.GetValue()
|
|
487
|
-
? uncompression_dict.GetValue()
|
|
488
|
-
: &UncompressionDict::GetEmptyDict();
|
|
489
489
|
|
|
490
490
|
if (v.handle.offset() == prev_offset) {
|
|
491
491
|
// This key can reuse the previous block (later on).
|
|
@@ -565,11 +565,8 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
|
|
|
565
565
|
if (total_len) {
|
|
566
566
|
char* scratch = nullptr;
|
|
567
567
|
bool use_fs_scratch = false;
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
: UncompressionDict::GetEmptyDict();
|
|
571
|
-
assert(uncompression_dict_inited || !rep_->uncompression_dict_reader);
|
|
572
|
-
assert(uncompression_dict_status.ok());
|
|
568
|
+
assert(dict_inited || !rep_->uncompression_dict_reader);
|
|
569
|
+
assert(dict_status.ok());
|
|
573
570
|
|
|
574
571
|
if (!rep_->file->use_direct_io()) {
|
|
575
572
|
if (CheckFSFeatureSupport(rep_->ioptions.fs.get(),
|
|
@@ -589,7 +586,7 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
|
|
|
589
586
|
// 3. If blocks are compressed and no compressed block cache, use
|
|
590
587
|
// stack buf
|
|
591
588
|
if (!use_fs_scratch && !rep_->file->use_direct_io() &&
|
|
592
|
-
rep_->
|
|
589
|
+
rep_->decompressor) {
|
|
593
590
|
if (total_len <= kMultiGetReadStackBufSize) {
|
|
594
591
|
scratch = stack_buf;
|
|
595
592
|
} else {
|
|
@@ -599,7 +596,10 @@ DEFINE_SYNC_AND_ASYNC(void, BlockBasedTable::MultiGet)
|
|
|
599
596
|
}
|
|
600
597
|
CO_AWAIT(RetrieveMultipleBlocks)
|
|
601
598
|
(read_options, &data_block_range, &block_handles, &statuses[0],
|
|
602
|
-
&results[0], scratch,
|
|
599
|
+
&results[0], scratch,
|
|
600
|
+
dict.GetValue() ? dict.GetValue()->decompressor_.get()
|
|
601
|
+
: rep_->decompressor.get(),
|
|
602
|
+
use_fs_scratch);
|
|
603
603
|
if (get_context) {
|
|
604
604
|
++(get_context->get_context_stats_.num_sst_read);
|
|
605
605
|
}
|
|
@@ -163,10 +163,11 @@ class BlockBasedTableReaderBaseTest : public testing::Test {
|
|
|
163
163
|
bool user_defined_timestamps_persisted = true) {
|
|
164
164
|
const MutableCFOptions moptions(options_);
|
|
165
165
|
TableReaderOptions table_reader_options = TableReaderOptions(
|
|
166
|
-
ioptions, moptions.prefix_extractor,
|
|
167
|
-
0 /* block_protection_bytes_per_key */,
|
|
168
|
-
false /*
|
|
169
|
-
|
|
166
|
+
ioptions, moptions.prefix_extractor, moptions.compression_manager.get(),
|
|
167
|
+
foptions, comparator, 0 /* block_protection_bytes_per_key */,
|
|
168
|
+
false /* _skip_filters */, false /* _immortal */,
|
|
169
|
+
false /* _force_direct_prefetch */, -1 /* _level */,
|
|
170
|
+
nullptr /* _block_cache_tracer */,
|
|
170
171
|
0 /* _max_file_size_for_l0_meta_pin */, "" /* _cur_db_session_id */,
|
|
171
172
|
0 /* _cur_file_num */, {} /* _unique_id */, 0 /* _largest_seqno */,
|
|
172
173
|
0 /* _tail_size */, user_defined_timestamps_persisted);
|
|
@@ -190,6 +191,8 @@ class BlockBasedTableReaderBaseTest : public testing::Test {
|
|
|
190
191
|
|
|
191
192
|
if (status) {
|
|
192
193
|
*status = s;
|
|
194
|
+
} else {
|
|
195
|
+
ASSERT_OK(s);
|
|
193
196
|
}
|
|
194
197
|
}
|
|
195
198
|
|
|
@@ -52,10 +52,10 @@ void BlockCreateContext::Create(
|
|
|
52
52
|
table_options->filter_policy.get(), std::move(block)));
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
void BlockCreateContext::Create(std::unique_ptr<
|
|
55
|
+
void BlockCreateContext::Create(std::unique_ptr<DecompressorDict>* parsed_out,
|
|
56
56
|
BlockContents&& block) {
|
|
57
|
-
parsed_out->reset(new
|
|
58
|
-
block.data, std::move(block.allocation),
|
|
57
|
+
parsed_out->reset(new DecompressorDict(
|
|
58
|
+
block.data, std::move(block.allocation), *decompressor));
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
namespace {
|
|
@@ -69,7 +69,7 @@ const std::array<const Cache::CacheItemHelper*,
|
|
|
69
69
|
BlockCacheInterface<ParsedFullFilterBlock>::GetFullHelper(),
|
|
70
70
|
BlockCacheInterface<Block_kFilterPartitionIndex>::GetFullHelper(),
|
|
71
71
|
nullptr, // kProperties
|
|
72
|
-
BlockCacheInterface<
|
|
72
|
+
BlockCacheInterface<DecompressorDict>::GetFullHelper(),
|
|
73
73
|
BlockCacheInterface<Block_kRangeDeletion>::GetFullHelper(),
|
|
74
74
|
nullptr, // kHashIndexPrefixes
|
|
75
75
|
nullptr, // kHashIndexMetadata
|
|
@@ -86,7 +86,7 @@ const std::array<const Cache::CacheItemHelper*,
|
|
|
86
86
|
BlockCacheInterface<ParsedFullFilterBlock>::GetBasicHelper(),
|
|
87
87
|
BlockCacheInterface<Block_kFilterPartitionIndex>::GetBasicHelper(),
|
|
88
88
|
nullptr, // kProperties
|
|
89
|
-
BlockCacheInterface<
|
|
89
|
+
BlockCacheInterface<DecompressorDict>::GetBasicHelper(),
|
|
90
90
|
BlockCacheInterface<Block_kRangeDeletion>::GetBasicHelper(),
|
|
91
91
|
nullptr, // kHashIndexPrefixes
|
|
92
92
|
nullptr, // kHashIndexMetadata
|
|
@@ -71,15 +71,16 @@ struct BlockCreateContext : public Cache::CreateContext {
|
|
|
71
71
|
BlockCreateContext() {}
|
|
72
72
|
BlockCreateContext(const BlockBasedTableOptions* _table_options,
|
|
73
73
|
const ImmutableOptions* _ioptions, Statistics* _statistics,
|
|
74
|
-
|
|
74
|
+
Decompressor* _decompressor,
|
|
75
|
+
uint8_t _protection_bytes_per_key,
|
|
75
76
|
const Comparator* _raw_ucmp,
|
|
76
77
|
bool _index_value_is_full = false,
|
|
77
78
|
bool _index_has_first_key = false)
|
|
78
79
|
: table_options(_table_options),
|
|
79
80
|
ioptions(_ioptions),
|
|
80
81
|
statistics(_statistics),
|
|
82
|
+
decompressor(_decompressor),
|
|
81
83
|
raw_ucmp(_raw_ucmp),
|
|
82
|
-
using_zstd(_using_zstd),
|
|
83
84
|
protection_bytes_per_key(_protection_bytes_per_key),
|
|
84
85
|
index_value_is_full(_index_value_is_full),
|
|
85
86
|
index_has_first_key(_index_has_first_key) {}
|
|
@@ -87,10 +88,9 @@ struct BlockCreateContext : public Cache::CreateContext {
|
|
|
87
88
|
const BlockBasedTableOptions* table_options = nullptr;
|
|
88
89
|
const ImmutableOptions* ioptions = nullptr;
|
|
89
90
|
Statistics* statistics = nullptr;
|
|
91
|
+
// TODO: refactor to avoid copying BlockCreateContext for dict in block cache
|
|
92
|
+
Decompressor* decompressor = nullptr;
|
|
90
93
|
const Comparator* raw_ucmp = nullptr;
|
|
91
|
-
const UncompressionDict* dict = nullptr;
|
|
92
|
-
uint32_t format_version;
|
|
93
|
-
bool using_zstd = false;
|
|
94
94
|
uint8_t protection_bytes_per_key = 0;
|
|
95
95
|
bool index_value_is_full;
|
|
96
96
|
bool index_has_first_key;
|
|
@@ -102,12 +102,10 @@ struct BlockCreateContext : public Cache::CreateContext {
|
|
|
102
102
|
CompressionType type, MemoryAllocator* alloc) {
|
|
103
103
|
BlockContents uncompressed_block_contents;
|
|
104
104
|
if (type != CompressionType::kNoCompression) {
|
|
105
|
-
assert(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
info, data.data(), data.size(), &uncompressed_block_contents,
|
|
110
|
-
table_options->format_version, *ioptions, alloc);
|
|
105
|
+
assert(decompressor != nullptr);
|
|
106
|
+
Status s =
|
|
107
|
+
DecompressBlockData(data.data(), data.size(), type, *decompressor,
|
|
108
|
+
&uncompressed_block_contents, *ioptions, alloc);
|
|
111
109
|
if (!s.ok()) {
|
|
112
110
|
parsed_out->reset();
|
|
113
111
|
return;
|
|
@@ -130,7 +128,7 @@ struct BlockCreateContext : public Cache::CreateContext {
|
|
|
130
128
|
BlockContents&& block);
|
|
131
129
|
void Create(std::unique_ptr<ParsedFullFilterBlock>* parsed_out,
|
|
132
130
|
BlockContents&& block);
|
|
133
|
-
void Create(std::unique_ptr<
|
|
131
|
+
void Create(std::unique_ptr<DecompressorDict>* parsed_out,
|
|
134
132
|
BlockContents&& block);
|
|
135
133
|
};
|
|
136
134
|
|
|
@@ -39,7 +39,8 @@ void BlockPrefetcher::PrefetchIfNeeded(
|
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
41
|
IOOptions opts;
|
|
42
|
-
|
|
42
|
+
IODebugContext dbg;
|
|
43
|
+
Status s = rep->file->PrepareIOOptions(read_options, opts, &dbg);
|
|
43
44
|
if (!s.ok()) {
|
|
44
45
|
return;
|
|
45
46
|
}
|
|
@@ -58,9 +59,10 @@ void BlockPrefetcher::PrefetchIfNeeded(
|
|
|
58
59
|
// implicit_auto_readahead is set.
|
|
59
60
|
readahead_params.initial_readahead_size = compaction_readahead_size_;
|
|
60
61
|
readahead_params.max_readahead_size = compaction_readahead_size_;
|
|
61
|
-
rep->CreateFilePrefetchBufferIfNotExists(
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
rep->CreateFilePrefetchBufferIfNotExists(
|
|
63
|
+
readahead_params, &prefetch_buffer_,
|
|
64
|
+
/*readaheadsize_cb=*/nullptr,
|
|
65
|
+
/*usage=*/FilePrefetchBufferUsage::kCompactionPrefetch);
|
|
64
66
|
return;
|
|
65
67
|
}
|
|
66
68
|
|
|
@@ -833,6 +833,19 @@ class BlockPerKVChecksumTest : public DBTestBase {
|
|
|
833
833
|
}
|
|
834
834
|
};
|
|
835
835
|
|
|
836
|
+
namespace {
|
|
837
|
+
const BlockBasedTableOptions *kTableOptions() {
|
|
838
|
+
static BlockBasedTableOptions opts{};
|
|
839
|
+
return &opts;
|
|
840
|
+
}
|
|
841
|
+
Decompressor *kDecompressor() {
|
|
842
|
+
static auto mgr = GetBuiltinCompressionManager(
|
|
843
|
+
GetCompressFormatForVersion(kTableOptions()->format_version));
|
|
844
|
+
static auto decomp = mgr->GetDecompressor();
|
|
845
|
+
return decomp.get();
|
|
846
|
+
}
|
|
847
|
+
} // namespace
|
|
848
|
+
|
|
836
849
|
TEST_F(BlockPerKVChecksumTest, EmptyBlock) {
|
|
837
850
|
// Tests that empty block code path is not broken by per kv checksum.
|
|
838
851
|
BlockBuilder builder(
|
|
@@ -845,14 +858,11 @@ TEST_F(BlockPerKVChecksumTest, EmptyBlock) {
|
|
|
845
858
|
|
|
846
859
|
std::unique_ptr<Block_kData> data_block;
|
|
847
860
|
Options options = Options();
|
|
848
|
-
BlockBasedTableOptions tbo;
|
|
849
861
|
uint8_t protection_bytes_per_key = 8;
|
|
850
|
-
BlockCreateContext create_context{
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
protection_bytes_per_key,
|
|
855
|
-
options.comparator};
|
|
862
|
+
BlockCreateContext create_context{
|
|
863
|
+
kTableOptions(), nullptr,
|
|
864
|
+
nullptr /* statistics */, kDecompressor(),
|
|
865
|
+
protection_bytes_per_key, options.comparator};
|
|
856
866
|
create_context.Create(&data_block, std::move(contents));
|
|
857
867
|
std::unique_ptr<DataBlockIter> biter{data_block->NewDataIterator(
|
|
858
868
|
options.comparator, kDisableGlobalSequenceNumber)};
|
|
@@ -885,14 +895,10 @@ TEST_F(BlockPerKVChecksumTest, InitializeProtectionInfo) {
|
|
|
885
895
|
// Make sure that the checksum construction code path does not break
|
|
886
896
|
// when the block is itself already corrupted.
|
|
887
897
|
Options options = Options();
|
|
888
|
-
BlockBasedTableOptions tbo;
|
|
889
898
|
uint8_t protection_bytes_per_key = 8;
|
|
890
|
-
BlockCreateContext create_context{
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
false /* using_zstd */,
|
|
894
|
-
protection_bytes_per_key,
|
|
895
|
-
options.comparator};
|
|
899
|
+
BlockCreateContext create_context{
|
|
900
|
+
kTableOptions(), nullptr /* ioptions */, nullptr /* statistics */,
|
|
901
|
+
kDecompressor(), protection_bytes_per_key, options.comparator};
|
|
896
902
|
|
|
897
903
|
{
|
|
898
904
|
std::string invalid_content = "1";
|
|
@@ -950,20 +956,19 @@ TEST_F(BlockPerKVChecksumTest, ApproximateMemory) {
|
|
|
950
956
|
};
|
|
951
957
|
|
|
952
958
|
Options options = Options();
|
|
953
|
-
BlockBasedTableOptions tbo;
|
|
954
959
|
uint8_t protection_bytes_per_key = 8;
|
|
955
960
|
BlockCreateContext with_checksum_create_context{
|
|
956
|
-
|
|
961
|
+
kTableOptions(),
|
|
957
962
|
nullptr /* ioptions */,
|
|
958
963
|
nullptr /* statistics */,
|
|
959
|
-
|
|
964
|
+
kDecompressor(),
|
|
960
965
|
protection_bytes_per_key,
|
|
961
966
|
options.comparator,
|
|
962
967
|
true /* index_value_is_full */};
|
|
963
|
-
BlockCreateContext create_context{
|
|
968
|
+
BlockCreateContext create_context{kTableOptions(),
|
|
964
969
|
nullptr /* ioptions */,
|
|
965
970
|
nullptr /* statistics */,
|
|
966
|
-
|
|
971
|
+
kDecompressor(),
|
|
967
972
|
0,
|
|
968
973
|
options.comparator,
|
|
969
974
|
true /* index_value_is_full */};
|
|
@@ -1054,13 +1059,9 @@ class DataBlockKVChecksumTest
|
|
|
1054
1059
|
std::unique_ptr<Block_kData> GenerateDataBlock(
|
|
1055
1060
|
std::vector<std::string> &keys, std::vector<std::string> &values,
|
|
1056
1061
|
int num_record) {
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
nullptr /* ioptions */,
|
|
1061
|
-
false /* using_zstd */,
|
|
1062
|
-
GetChecksumLen(),
|
|
1063
|
-
Options().comparator};
|
|
1062
|
+
BlockCreateContext create_context{
|
|
1063
|
+
kTableOptions(), nullptr /* statistics */, nullptr /* ioptions */,
|
|
1064
|
+
kDecompressor(), GetChecksumLen(), Options().comparator};
|
|
1064
1065
|
builder_ = std::make_unique<BlockBuilder>(
|
|
1065
1066
|
static_cast<int>(GetRestartInterval()),
|
|
1066
1067
|
GetUseDeltaEncoding() /* use_delta_encoding */,
|
|
@@ -1181,13 +1182,12 @@ class IndexBlockKVChecksumTest
|
|
|
1181
1182
|
std::vector<BlockHandle> &block_handles,
|
|
1182
1183
|
std::vector<std::string> &first_keys, int num_record) {
|
|
1183
1184
|
Options options = Options();
|
|
1184
|
-
BlockBasedTableOptions tbo;
|
|
1185
1185
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1186
1186
|
BlockCreateContext create_context{
|
|
1187
|
-
|
|
1187
|
+
kTableOptions(),
|
|
1188
1188
|
nullptr /* ioptions */,
|
|
1189
1189
|
nullptr /* statistics */,
|
|
1190
|
-
|
|
1190
|
+
kDecompressor(),
|
|
1191
1191
|
protection_bytes_per_key,
|
|
1192
1192
|
options.comparator,
|
|
1193
1193
|
!UseValueDeltaEncoding() /* value_is_full */,
|
|
@@ -1324,14 +1324,10 @@ class MetaIndexBlockKVChecksumTest
|
|
|
1324
1324
|
std::vector<std::string> &keys, std::vector<std::string> &values,
|
|
1325
1325
|
int num_record) {
|
|
1326
1326
|
Options options = Options();
|
|
1327
|
-
BlockBasedTableOptions tbo;
|
|
1328
1327
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1329
|
-
BlockCreateContext create_context{
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
false /* using_zstd */,
|
|
1333
|
-
protection_bytes_per_key,
|
|
1334
|
-
options.comparator};
|
|
1328
|
+
BlockCreateContext create_context{
|
|
1329
|
+
kTableOptions(), nullptr /* ioptions */, nullptr /* statistics */,
|
|
1330
|
+
kDecompressor(), protection_bytes_per_key, options.comparator};
|
|
1335
1331
|
builder_ =
|
|
1336
1332
|
std::make_unique<BlockBuilder>(static_cast<int>(GetRestartInterval()));
|
|
1337
1333
|
// add a bunch of records to a block
|
|
@@ -1359,14 +1355,10 @@ INSTANTIATE_TEST_CASE_P(P, MetaIndexBlockKVChecksumTest,
|
|
|
1359
1355
|
|
|
1360
1356
|
TEST_P(MetaIndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
|
|
1361
1357
|
Options options = Options();
|
|
1362
|
-
BlockBasedTableOptions tbo;
|
|
1363
1358
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1364
|
-
BlockCreateContext create_context{
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
false /* using_zstd */,
|
|
1368
|
-
protection_bytes_per_key,
|
|
1369
|
-
options.comparator};
|
|
1359
|
+
BlockCreateContext create_context{
|
|
1360
|
+
kTableOptions(), nullptr /* ioptions */, nullptr /* statistics */,
|
|
1361
|
+
kDecompressor(), protection_bytes_per_key, options.comparator};
|
|
1370
1362
|
std::vector<int> num_restart_intervals = {1, 16};
|
|
1371
1363
|
for (const auto num_restart_interval : num_restart_intervals) {
|
|
1372
1364
|
const int kNumRecords = num_restart_interval * GetRestartInterval();
|
|
@@ -582,7 +582,8 @@ void TestBoundary(InternalKey& ik1, std::string& v1, InternalKey& ik2,
|
|
|
582
582
|
const bool kSkipFilters = true;
|
|
583
583
|
const bool kImmortal = true;
|
|
584
584
|
ASSERT_OK(moptions.table_factory->NewTableReader(
|
|
585
|
-
TableReaderOptions(ioptions, moptions.prefix_extractor,
|
|
585
|
+
TableReaderOptions(ioptions, moptions.prefix_extractor,
|
|
586
|
+
nullptr /* compression_manager */, soptions,
|
|
586
587
|
internal_comparator,
|
|
587
588
|
0 /* block_protection_bytes_per_key */, !kSkipFilters,
|
|
588
589
|
!kImmortal, level_),
|
|
@@ -64,7 +64,7 @@ class FilterBlockBuilder {
|
|
|
64
64
|
virtual void AddWithPrevKey(const Slice& key_without_ts,
|
|
65
65
|
const Slice& /*prev_key_without_ts*/) = 0;
|
|
66
66
|
|
|
67
|
-
virtual bool IsEmpty() const = 0;
|
|
67
|
+
virtual bool IsEmpty() const = 0; // Empty == none added
|
|
68
68
|
// For reporting stats on how many entries the builder considered unique
|
|
69
69
|
virtual size_t EstimateEntriesAdded() = 0;
|
|
70
70
|
|
|
@@ -30,8 +30,7 @@ Status FilterBlockReaderCommon<TBlocklike>::ReadFilterBlock(
|
|
|
30
30
|
|
|
31
31
|
const Status s = table->RetrieveBlock(
|
|
32
32
|
prefetch_buffer, read_options, rep->filter_handle,
|
|
33
|
-
|
|
34
|
-
lookup_context,
|
|
33
|
+
/* decomp */ nullptr, filter_block, get_context, lookup_context,
|
|
35
34
|
/* for_compaction */ false, use_cache,
|
|
36
35
|
/* async_read */ false, /* use_block_cache_for_lookup */ true);
|
|
37
36
|
|
|
@@ -1410,10 +1410,6 @@ bool BuiltinFilterPolicy::IsInstanceOf(const std::string& name) const {
|
|
|
1410
1410
|
|
|
1411
1411
|
static const char* kBuiltinFilterMetadataName = "rocksdb.BuiltinBloomFilter";
|
|
1412
1412
|
|
|
1413
|
-
const char* BuiltinFilterPolicy::kCompatibilityName() {
|
|
1414
|
-
return kBuiltinFilterMetadataName;
|
|
1415
|
-
}
|
|
1416
|
-
|
|
1417
1413
|
const char* BuiltinFilterPolicy::CompatibilityName() const {
|
|
1418
1414
|
return kBuiltinFilterMetadataName;
|
|
1419
1415
|
}
|
|
@@ -149,7 +149,6 @@ class BuiltinFilterPolicy : public FilterPolicy {
|
|
|
149
149
|
bool IsInstanceOf(const std::string& id) const override;
|
|
150
150
|
// All variants of BuiltinFilterPolicy can read each others filters.
|
|
151
151
|
const char* CompatibilityName() const override;
|
|
152
|
-
static const char* kCompatibilityName();
|
|
153
152
|
|
|
154
153
|
public: // new
|
|
155
154
|
// An internal function for the implementation of
|