@nxtedition/rocksdb 13.5.8 → 13.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +209 -2
- package/deps/rocksdb/rocksdb/BUCK +12 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
- package/deps/rocksdb/rocksdb/Makefile +28 -23
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
- package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
- package/deps/rocksdb/rocksdb/db/builder.h +5 -4
- package/deps/rocksdb/rocksdb/db/c.cc +556 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
- package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
- package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
- package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
- package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
- package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
- package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
- package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
- package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
- package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
- package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
- package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
- package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
- package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
- package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
- package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
- package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
- package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
- package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
- package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
- package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
- package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
- package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
- package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
- package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
- package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
- package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
- package/deps/rocksdb/rocksdb/env/env.cc +32 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
- package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
- package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
- package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
- package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
- package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
- package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
- package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
- package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
- package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
- package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
- package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
- package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
- package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
- package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
- package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
- package/deps/rocksdb/rocksdb/options/options.cc +296 -305
- package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
- package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
- package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
- package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
- package/deps/rocksdb/rocksdb/port/lang.h +2 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
- package/deps/rocksdb/rocksdb/src.mk +17 -11
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
- package/deps/rocksdb/rocksdb/table/format.cc +62 -44
- package/deps/rocksdb/rocksdb/table/format.h +35 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
- package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
- package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
- package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
- package/deps/rocksdb/rocksdb/util/compression.h +348 -232
- package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
- package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
- package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
- package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
- package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
- package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
- package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
- package/deps/rocksdb/rocksdb.gyp +5 -0
- package/index.js +47 -2
- package/package.json +8 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
//
|
|
6
|
+
// Testing the features of auto skip compression manager
|
|
7
|
+
//
|
|
8
|
+
// ***********************************************************************
|
|
9
|
+
// EXPERIMENTAL - subject to change while under development
|
|
10
|
+
// ***********************************************************************
|
|
11
|
+
|
|
12
|
+
#include <cstdlib>
|
|
13
|
+
#include <memory>
|
|
14
|
+
|
|
15
|
+
#include "db/db_test_util.h"
|
|
16
|
+
#include "port/stack_trace.h"
|
|
17
|
+
#include "rocksdb/flush_block_policy.h"
|
|
18
|
+
#include "table/block_based/block_builder.h"
|
|
19
|
+
#include "test_util/testutil.h"
|
|
20
|
+
#include "util/random.h"
|
|
21
|
+
|
|
22
|
+
namespace ROCKSDB_NAMESPACE {
|
|
23
|
+
|
|
24
|
+
class AutoSkipTestFlushBlockPolicy : public FlushBlockPolicy {
|
|
25
|
+
public:
|
|
26
|
+
explicit AutoSkipTestFlushBlockPolicy(const int window,
|
|
27
|
+
const BlockBuilder& data_block_builder,
|
|
28
|
+
std::shared_ptr<Statistics> statistics)
|
|
29
|
+
: window_(window),
|
|
30
|
+
num_keys_(0),
|
|
31
|
+
data_block_builder_(data_block_builder),
|
|
32
|
+
statistics_(statistics) {}
|
|
33
|
+
|
|
34
|
+
bool Update(const Slice& /*key*/, const Slice& /*value*/) override {
|
|
35
|
+
auto nth_window = num_keys_ / window_;
|
|
36
|
+
if (data_block_builder_.empty()) {
|
|
37
|
+
// First key in this block
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
// Check every window
|
|
41
|
+
if (num_keys_ % window_ == 0) {
|
|
42
|
+
auto set_exploration = [&](void* arg) {
|
|
43
|
+
bool* exploration = static_cast<bool*>(arg);
|
|
44
|
+
*exploration = true;
|
|
45
|
+
};
|
|
46
|
+
auto unset_exploration = [&](void* arg) {
|
|
47
|
+
bool* exploration = static_cast<bool*>(arg);
|
|
48
|
+
*exploration = false;
|
|
49
|
+
};
|
|
50
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
51
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
52
|
+
// We force exploration to set the predicted rejection ratio for odd
|
|
53
|
+
// window and then test that the prediction is exploited in the even
|
|
54
|
+
// window
|
|
55
|
+
if (nth_window % 2 == 0) {
|
|
56
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
57
|
+
"AutoSkipCompressorWrapper::CompressBlock::exploitOrExplore",
|
|
58
|
+
set_exploration);
|
|
59
|
+
} else {
|
|
60
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
61
|
+
"AutoSkipCompressorWrapper::CompressBlock::exploitOrExplore",
|
|
62
|
+
unset_exploration);
|
|
63
|
+
}
|
|
64
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
65
|
+
|
|
66
|
+
auto compressed_count = PopStat(NUMBER_BLOCK_COMPRESSED);
|
|
67
|
+
auto bypassed_count = PopStat(NUMBER_BLOCK_COMPRESSION_BYPASSED);
|
|
68
|
+
auto rejected_count = PopStat(NUMBER_BLOCK_COMPRESSION_REJECTED);
|
|
69
|
+
auto total = compressed_count + rejected_count + bypassed_count;
|
|
70
|
+
int rejection_percentage, bypassed_percentage, compressed_percentage;
|
|
71
|
+
if (total != 0) {
|
|
72
|
+
rejection_percentage = static_cast<int>(rejected_count * 100 / total);
|
|
73
|
+
bypassed_percentage = static_cast<int>(bypassed_count * 100 / total);
|
|
74
|
+
compressed_percentage =
|
|
75
|
+
static_cast<int>(compressed_count * 100 / total);
|
|
76
|
+
// use nth window to detect test cases and set the expected
|
|
77
|
+
switch (nth_window) {
|
|
78
|
+
case 1:
|
|
79
|
+
// In first window we only explore and thus here we verify that the
|
|
80
|
+
// correct prediction has been made by the end of the window
|
|
81
|
+
// Since 6 of 10 blocks are compression unfriendly, the predicted
|
|
82
|
+
// rejection ratio should be 60%
|
|
83
|
+
EXPECT_EQ(rejection_percentage, 60);
|
|
84
|
+
EXPECT_EQ(bypassed_percentage, 0);
|
|
85
|
+
EXPECT_EQ(compressed_percentage, 40);
|
|
86
|
+
break;
|
|
87
|
+
case 2:
|
|
88
|
+
// With the rejection ratio set to 0.6 all the blocks should be
|
|
89
|
+
// bypassed in next window
|
|
90
|
+
EXPECT_EQ(rejection_percentage, 0);
|
|
91
|
+
EXPECT_EQ(bypassed_percentage, 100);
|
|
92
|
+
EXPECT_EQ(compressed_percentage, 0);
|
|
93
|
+
break;
|
|
94
|
+
case 3:
|
|
95
|
+
// In third window we only explore and verify that the correct
|
|
96
|
+
// prediction has been made by the end of the window
|
|
97
|
+
// since 4 of 10 blocks are compression ufriendly, the predicted
|
|
98
|
+
// rejection ratio should be 40%
|
|
99
|
+
EXPECT_EQ(rejection_percentage, 40);
|
|
100
|
+
EXPECT_EQ(bypassed_percentage, 0);
|
|
101
|
+
EXPECT_EQ(compressed_percentage, 60);
|
|
102
|
+
break;
|
|
103
|
+
case 4:
|
|
104
|
+
// With the rejection ratio set to 0.4 all the blocks should be
|
|
105
|
+
// attempted to be compressed
|
|
106
|
+
// 6 of 10 blocks are compression unfriendly and thus should be
|
|
107
|
+
// rejected 4 of 10 blocks are compression friendly and thus should
|
|
108
|
+
// be compressed
|
|
109
|
+
EXPECT_EQ(rejection_percentage, 60);
|
|
110
|
+
EXPECT_EQ(bypassed_percentage, 0);
|
|
111
|
+
EXPECT_EQ(compressed_percentage, 40);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
num_keys_++;
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
uint64_t PopStat(Tickers t) { return statistics_->getAndResetTickerCount(t); }
|
|
119
|
+
|
|
120
|
+
private:
|
|
121
|
+
int window_;
|
|
122
|
+
int num_keys_;
|
|
123
|
+
const BlockBuilder& data_block_builder_;
|
|
124
|
+
std::shared_ptr<Statistics> statistics_;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
class AutoSkipTestFlushBlockPolicyFactory : public FlushBlockPolicyFactory {
|
|
128
|
+
public:
|
|
129
|
+
explicit AutoSkipTestFlushBlockPolicyFactory(
|
|
130
|
+
const int window, std::shared_ptr<Statistics> statistics)
|
|
131
|
+
: window_(window), statistics_(statistics) {}
|
|
132
|
+
|
|
133
|
+
virtual const char* Name() const override {
|
|
134
|
+
return "AutoSkipTestFlushBlockPolicyFactory";
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
virtual FlushBlockPolicy* NewFlushBlockPolicy(
|
|
138
|
+
const BlockBasedTableOptions& /*table_options*/,
|
|
139
|
+
const BlockBuilder& data_block_builder) const override {
|
|
140
|
+
(void)data_block_builder;
|
|
141
|
+
return new AutoSkipTestFlushBlockPolicy(window_, data_block_builder,
|
|
142
|
+
statistics_);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
private:
|
|
146
|
+
int window_;
|
|
147
|
+
std::shared_ptr<Statistics> statistics_;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
class DBAutoSkip : public DBTestBase {
|
|
151
|
+
public:
|
|
152
|
+
Options options;
|
|
153
|
+
Random rnd_;
|
|
154
|
+
int key_index_;
|
|
155
|
+
DBAutoSkip()
|
|
156
|
+
: DBTestBase("db_auto_skip", /*env_do_fsync=*/true),
|
|
157
|
+
options(CurrentOptions()),
|
|
158
|
+
rnd_(231),
|
|
159
|
+
key_index_(0) {
|
|
160
|
+
options.compression_manager =
|
|
161
|
+
CreateAutoSkipCompressionManager(GetBuiltinV2CompressionManager());
|
|
162
|
+
auto statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
|
|
163
|
+
options.statistics = statistics;
|
|
164
|
+
options.statistics->set_stats_level(StatsLevel::kExceptTimeForMutex);
|
|
165
|
+
BlockBasedTableOptions bbto;
|
|
166
|
+
bbto.enable_index_compression = false;
|
|
167
|
+
bbto.flush_block_policy_factory.reset(
|
|
168
|
+
new AutoSkipTestFlushBlockPolicyFactory(10, statistics));
|
|
169
|
+
options.table_factory.reset(NewBlockBasedTableFactory(bbto));
|
|
170
|
+
DestroyAndReopen(options);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
bool CompressionFriendlyPut(const int no_of_kvs, const int size_of_value) {
|
|
174
|
+
auto value = std::string(size_of_value, 'A');
|
|
175
|
+
for (int i = 0; i < no_of_kvs; ++i) {
|
|
176
|
+
auto status = Put(Key(key_index_), value);
|
|
177
|
+
EXPECT_EQ(status.ok(), true);
|
|
178
|
+
key_index_++;
|
|
179
|
+
}
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
bool CompressionUnfriendlyPut(const int no_of_kvs, const int size_of_value) {
|
|
183
|
+
auto value = rnd_.RandomBinaryString(size_of_value);
|
|
184
|
+
for (int i = 0; i < no_of_kvs; ++i) {
|
|
185
|
+
auto status = Put(Key(key_index_), value);
|
|
186
|
+
EXPECT_EQ(status.ok(), true);
|
|
187
|
+
key_index_++;
|
|
188
|
+
}
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
// FIXME: the test is failing the assertion in auto_skip_compressor.cc
|
|
194
|
+
// when run on nightly build in build-linux-arm-test-full mode [1].
|
|
195
|
+
//
|
|
196
|
+
// [1]
|
|
197
|
+
// auto_skip_compressor.cc:101: Assertion `preferred != kNoCompression' failed.
|
|
198
|
+
TEST_F(DBAutoSkip, DISABLED_AutoSkipCompressionManager) {
|
|
199
|
+
if (GetSupportedCompressions().size() > 1) {
|
|
200
|
+
const int kValueSize = 20000;
|
|
201
|
+
// This will set the rejection ratio to 60%
|
|
202
|
+
CompressionUnfriendlyPut(6, kValueSize);
|
|
203
|
+
CompressionFriendlyPut(4, kValueSize);
|
|
204
|
+
// This will verify all the data block compressions are bypassed based on
|
|
205
|
+
// previous prediction
|
|
206
|
+
CompressionUnfriendlyPut(6, kValueSize);
|
|
207
|
+
CompressionFriendlyPut(4, kValueSize);
|
|
208
|
+
// This will set the rejection ratio to 40%
|
|
209
|
+
CompressionUnfriendlyPut(4, kValueSize);
|
|
210
|
+
CompressionFriendlyPut(6, kValueSize);
|
|
211
|
+
// This will verify all the data block compression are attempted based on
|
|
212
|
+
// previous prediction
|
|
213
|
+
// Compression will be rejected for 6 compression unfriendly blocks
|
|
214
|
+
// Compression will be accepted for 4 compression friendly blocks
|
|
215
|
+
CompressionUnfriendlyPut(6, kValueSize);
|
|
216
|
+
CompressionFriendlyPut(4, kValueSize);
|
|
217
|
+
// Extra block write to ensure that the all above cases are checked
|
|
218
|
+
CompressionFriendlyPut(6, kValueSize);
|
|
219
|
+
CompressionFriendlyPut(4, kValueSize);
|
|
220
|
+
ASSERT_OK(Flush());
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
224
|
+
int main(int argc, char** argv) {
|
|
225
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
226
|
+
::testing::InitGoogleTest(&argc, argv);
|
|
227
|
+
RegisterCustomObjects(argc, argv);
|
|
228
|
+
return RUN_ALL_TESTS();
|
|
229
|
+
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#if defined(__linux__)
|
|
11
11
|
#include <asm/hwcap.h>
|
|
12
12
|
#endif
|
|
13
|
-
#
|
|
13
|
+
#if defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT)
|
|
14
14
|
#include <sys/auxv.h>
|
|
15
15
|
#endif
|
|
16
16
|
#ifndef HWCAP_CRC32
|
|
@@ -37,15 +37,15 @@
|
|
|
37
37
|
crc0 = crc32c_u64(crc0, *(buf64 + (ITR)));
|
|
38
38
|
|
|
39
39
|
/* unfolding to compute 24 * 7 = 168 bytes parallelly */
|
|
40
|
-
#define CRC32C7X24BYTES(ITR)
|
|
41
|
-
do {
|
|
42
|
-
CRC32C24BYTES((ITR)*7 + 0) \
|
|
43
|
-
CRC32C24BYTES((ITR)*7 + 1) \
|
|
44
|
-
CRC32C24BYTES((ITR)*7 + 2) \
|
|
45
|
-
CRC32C24BYTES((ITR)*7 + 3) \
|
|
46
|
-
CRC32C24BYTES((ITR)*7 + 4) \
|
|
47
|
-
CRC32C24BYTES((ITR)*7 + 5) \
|
|
48
|
-
CRC32C24BYTES((ITR)*7 + 6) \
|
|
40
|
+
#define CRC32C7X24BYTES(ITR) \
|
|
41
|
+
do { \
|
|
42
|
+
CRC32C24BYTES((ITR) * 7 + 0) \
|
|
43
|
+
CRC32C24BYTES((ITR) * 7 + 1) \
|
|
44
|
+
CRC32C24BYTES((ITR) * 7 + 2) \
|
|
45
|
+
CRC32C24BYTES((ITR) * 7 + 3) \
|
|
46
|
+
CRC32C24BYTES((ITR) * 7 + 4) \
|
|
47
|
+
CRC32C24BYTES((ITR) * 7 + 5) \
|
|
48
|
+
CRC32C24BYTES((ITR) * 7 + 6) \
|
|
49
49
|
} while (0)
|
|
50
50
|
#endif
|
|
51
51
|
|
|
@@ -205,9 +205,7 @@ TEST_F(WritableFileWriterTest, IncrementalBuffer) {
|
|
|
205
205
|
env_options.writable_file_max_buffer_size =
|
|
206
206
|
(attempt < kNumAttempts / 2) ? 512 * 1024 : 700 * 1024;
|
|
207
207
|
std::string actual;
|
|
208
|
-
std::unique_ptr<FakeWF> wf(new FakeWF(&actual,
|
|
209
|
-
attempt % 2 == 1,
|
|
210
|
-
no_flush));
|
|
208
|
+
std::unique_ptr<FakeWF> wf(new FakeWF(&actual, attempt % 2 == 1, no_flush));
|
|
211
209
|
std::unique_ptr<WritableFileWriter> writer(new WritableFileWriter(
|
|
212
210
|
std::move(wf), "" /* don't care */, env_options));
|
|
213
211
|
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
|
-
#define __PPC_RA(a) (((a)&0x1f) << 16)
|
|
11
|
-
#define __PPC_RB(b) (((b)&0x1f) << 11)
|
|
12
|
-
#define __PPC_XA(a) ((((a)&0x1f) << 16) | (((a)&0x20) >> 3))
|
|
13
|
-
#define __PPC_XB(b) ((((b)&0x1f) << 11) | (((b)&0x20) >> 4))
|
|
14
|
-
#define __PPC_XS(s) ((((s)&0x1f) << 21) | (((s)&0x20) >> 5))
|
|
10
|
+
#define __PPC_RA(a) (((a) & 0x1f) << 16)
|
|
11
|
+
#define __PPC_RB(b) (((b) & 0x1f) << 11)
|
|
12
|
+
#define __PPC_XA(a) ((((a) & 0x1f) << 16) | (((a) & 0x20) >> 3))
|
|
13
|
+
#define __PPC_XB(b) ((((b) & 0x1f) << 11) | (((b) & 0x20) >> 4))
|
|
14
|
+
#define __PPC_XS(s) ((((s) & 0x1f) << 21) | (((s) & 0x20) >> 5))
|
|
15
15
|
#define __PPC_XT(s) __PPC_XS(s)
|
|
16
16
|
#define VSX_XX3(t, a, b) (__PPC_XT(t) | __PPC_XA(a) | __PPC_XB(b))
|
|
17
17
|
#define VSX_XX1(s, a, b) (__PPC_XS(s) | __PPC_RA(a) | __PPC_RB(b))
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
//
|
|
6
|
+
// Creates mixed compressor wrapper which uses multiple compression algorithm
|
|
7
|
+
// within same SST file.
|
|
8
|
+
|
|
9
|
+
#include "simple_mixed_compressor.h"
|
|
10
|
+
|
|
11
|
+
#include <options/options_helper.h>
|
|
12
|
+
|
|
13
|
+
#include "random.h"
|
|
14
|
+
#include "rocksdb/advanced_compression.h"
|
|
15
|
+
namespace ROCKSDB_NAMESPACE {
|
|
16
|
+
|
|
17
|
+
// MultiCompressorWrapper implementation
|
|
18
|
+
MultiCompressorWrapper::MultiCompressorWrapper(const CompressionOptions& opts,
|
|
19
|
+
CompressionDict&& dict) {
|
|
20
|
+
// TODO: make the compression manager a field
|
|
21
|
+
auto builtInManager = GetBuiltinV2CompressionManager();
|
|
22
|
+
const auto& compressions = GetSupportedCompressions();
|
|
23
|
+
for (auto type : compressions) {
|
|
24
|
+
if (type == kNoCompression) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
compressors_.push_back(builtInManager->GetCompressor(opts, type));
|
|
28
|
+
}
|
|
29
|
+
(void)dict;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
size_t MultiCompressorWrapper::GetMaxSampleSizeIfWantDict(
|
|
33
|
+
CacheEntryRole block_type) const {
|
|
34
|
+
return compressors_.back()->GetMaxSampleSizeIfWantDict(block_type);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
Slice MultiCompressorWrapper::GetSerializedDict() const {
|
|
38
|
+
return compressors_.back()->GetSerializedDict();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
CompressionType MultiCompressorWrapper::GetPreferredCompressionType() const {
|
|
42
|
+
return compressors_.back()->GetPreferredCompressionType();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
Compressor::ManagedWorkingArea MultiCompressorWrapper::ObtainWorkingArea() {
|
|
46
|
+
return compressors_.back()->ObtainWorkingArea();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
std::unique_ptr<Compressor> MultiCompressorWrapper::MaybeCloneSpecialized(
|
|
50
|
+
CacheEntryRole block_type, DictSampleArgs&& dict_samples) {
|
|
51
|
+
// TODO: full dictionary compression support. Currently this just falls
|
|
52
|
+
// back on a non-multi compressor when asked to use a dictionary.
|
|
53
|
+
return compressors_.back()->MaybeCloneSpecialized(block_type,
|
|
54
|
+
std::move(dict_samples));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// RandomMixedCompressor implementation
|
|
58
|
+
const char* RandomMixedCompressor::Name() const {
|
|
59
|
+
return "RandomMixedCompressor";
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
Status RandomMixedCompressor::CompressBlock(
|
|
63
|
+
Slice uncompressed_data, std::string* compressed_output,
|
|
64
|
+
CompressionType* out_compression_type, ManagedWorkingArea* wa) {
|
|
65
|
+
auto selected =
|
|
66
|
+
Random::GetTLSInstance()->Uniform(static_cast<int>(compressors_.size()));
|
|
67
|
+
auto& compressor = compressors_[selected];
|
|
68
|
+
return compressor->CompressBlock(uncompressed_data, compressed_output,
|
|
69
|
+
out_compression_type, wa);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const char* RandomMixedCompressionManager::Name() const {
|
|
73
|
+
return "RandomMixedCompressionManager";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
std::unique_ptr<Compressor> RandomMixedCompressionManager::GetCompressorForSST(
|
|
77
|
+
const FilterBuildingContext& /*context*/, const CompressionOptions& opts,
|
|
78
|
+
CompressionType /*preferred*/) {
|
|
79
|
+
return std::make_unique<RandomMixedCompressor>(opts);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// RoundRobinCompressor implementation
|
|
83
|
+
const char* RoundRobinCompressor::Name() const {
|
|
84
|
+
return "RoundRobinCompressor";
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
Status RoundRobinCompressor::CompressBlock(
|
|
88
|
+
Slice uncompressed_data, std::string* compressed_output,
|
|
89
|
+
CompressionType* out_compression_type, ManagedWorkingArea* wa) {
|
|
90
|
+
auto counter = block_counter.FetchAddRelaxed(1);
|
|
91
|
+
auto sel_idx = counter % (compressors_.size());
|
|
92
|
+
auto& compressor = compressors_[sel_idx];
|
|
93
|
+
return compressor->CompressBlock(uncompressed_data, compressed_output,
|
|
94
|
+
out_compression_type, wa);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
RelaxedAtomic<uint64_t> RoundRobinCompressor::block_counter{0};
|
|
98
|
+
|
|
99
|
+
// RoundRobinManager implementation
|
|
100
|
+
const char* RoundRobinManager::Name() const { return "RoundRobinManager"; }
|
|
101
|
+
|
|
102
|
+
std::unique_ptr<Compressor> RoundRobinManager::GetCompressorForSST(
|
|
103
|
+
const FilterBuildingContext& /*context*/, const CompressionOptions& opts,
|
|
104
|
+
CompressionType /*preferred*/) {
|
|
105
|
+
return std::make_unique<RoundRobinCompressor>(opts);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
//
|
|
6
|
+
// Creates mixed compressor wrapper which uses multiple compression algorithm
|
|
7
|
+
// within same SST file.
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
#include <memory>
|
|
11
|
+
#include <vector>
|
|
12
|
+
|
|
13
|
+
#include "compression.h"
|
|
14
|
+
#include "rocksdb/advanced_compression.h"
|
|
15
|
+
|
|
16
|
+
namespace ROCKSDB_NAMESPACE {
|
|
17
|
+
|
|
18
|
+
class MultiCompressorWrapper : public Compressor {
|
|
19
|
+
public:
|
|
20
|
+
explicit MultiCompressorWrapper(const CompressionOptions& opts,
|
|
21
|
+
CompressionDict&& dict = {});
|
|
22
|
+
|
|
23
|
+
size_t GetMaxSampleSizeIfWantDict(CacheEntryRole block_type) const override;
|
|
24
|
+
Slice GetSerializedDict() const override;
|
|
25
|
+
CompressionType GetPreferredCompressionType() const override;
|
|
26
|
+
ManagedWorkingArea ObtainWorkingArea() override;
|
|
27
|
+
std::unique_ptr<Compressor> MaybeCloneSpecialized(
|
|
28
|
+
CacheEntryRole block_type, DictSampleArgs&& dict_samples) override;
|
|
29
|
+
|
|
30
|
+
protected:
|
|
31
|
+
std::vector<std::unique_ptr<Compressor>> compressors_;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
struct RandomMixedCompressor : public MultiCompressorWrapper {
|
|
35
|
+
using MultiCompressorWrapper::MultiCompressorWrapper;
|
|
36
|
+
const char* Name() const override;
|
|
37
|
+
Status CompressBlock(Slice uncompressed_data, std::string* compressed_output,
|
|
38
|
+
CompressionType* out_compression_type,
|
|
39
|
+
ManagedWorkingArea* wa) override;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
class RandomMixedCompressionManager : public CompressionManagerWrapper {
|
|
43
|
+
using CompressionManagerWrapper::CompressionManagerWrapper;
|
|
44
|
+
const char* Name() const override;
|
|
45
|
+
std::unique_ptr<Compressor> GetCompressorForSST(
|
|
46
|
+
const FilterBuildingContext& context, const CompressionOptions& opts,
|
|
47
|
+
CompressionType preferred) override;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
struct RoundRobinCompressor : public MultiCompressorWrapper {
|
|
51
|
+
using MultiCompressorWrapper::MultiCompressorWrapper;
|
|
52
|
+
const char* Name() const override;
|
|
53
|
+
Status CompressBlock(Slice uncompressed_data, std::string* compressed_output,
|
|
54
|
+
CompressionType* out_compression_type,
|
|
55
|
+
ManagedWorkingArea* wa) override;
|
|
56
|
+
static RelaxedAtomic<uint64_t> block_counter;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
class RoundRobinManager : public CompressionManagerWrapper {
|
|
60
|
+
using CompressionManagerWrapper::CompressionManagerWrapper;
|
|
61
|
+
const char* Name() const override;
|
|
62
|
+
std::unique_ptr<Compressor> GetCompressorForSST(
|
|
63
|
+
const FilterBuildingContext& context, const CompressionOptions& opts,
|
|
64
|
+
CompressionType preferred) override;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#include "test_util/testharness.h"
|
|
15
15
|
#include "test_util/testutil.h"
|
|
16
16
|
#include "util/cast_util.h"
|
|
17
|
+
#include "util/string_util.h"
|
|
17
18
|
|
|
18
19
|
namespace ROCKSDB_NAMESPACE {
|
|
19
20
|
|
|
@@ -177,18 +178,23 @@ class SmallEnumSetTest : public testing::Test {
|
|
|
177
178
|
TEST_F(SmallEnumSetTest, SmallEnumSetTest1) {
|
|
178
179
|
FileTypeSet fs; // based on a legacy enum type
|
|
179
180
|
ASSERT_TRUE(fs.empty());
|
|
181
|
+
ASSERT_EQ(fs.count(), 0U);
|
|
180
182
|
ASSERT_TRUE(fs.Add(FileType::kIdentityFile));
|
|
181
183
|
ASSERT_FALSE(fs.empty());
|
|
184
|
+
ASSERT_EQ(fs.count(), 1U);
|
|
182
185
|
ASSERT_FALSE(fs.Add(FileType::kIdentityFile));
|
|
183
186
|
ASSERT_TRUE(fs.Add(FileType::kInfoLogFile));
|
|
184
187
|
ASSERT_TRUE(fs.Contains(FileType::kIdentityFile));
|
|
185
188
|
ASSERT_FALSE(fs.Contains(FileType::kDBLockFile));
|
|
186
189
|
ASSERT_FALSE(fs.empty());
|
|
190
|
+
ASSERT_EQ(fs.count(), 2U);
|
|
187
191
|
ASSERT_FALSE(fs.Remove(FileType::kDBLockFile));
|
|
188
192
|
ASSERT_TRUE(fs.Remove(FileType::kIdentityFile));
|
|
189
193
|
ASSERT_FALSE(fs.empty());
|
|
194
|
+
ASSERT_EQ(fs.count(), 1U);
|
|
190
195
|
ASSERT_TRUE(fs.Remove(FileType::kInfoLogFile));
|
|
191
196
|
ASSERT_TRUE(fs.empty());
|
|
197
|
+
ASSERT_EQ(fs.count(), 0U);
|
|
192
198
|
}
|
|
193
199
|
|
|
194
200
|
namespace {
|
|
@@ -224,12 +230,16 @@ TEST_F(SmallEnumSetTest, SmallEnumSetTest2) {
|
|
|
224
230
|
ASSERT_NE(cs, MyEnumClassSet{MyEnumClass::B});
|
|
225
231
|
ASSERT_NE(cs, MyEnumClassSet::All());
|
|
226
232
|
|
|
233
|
+
ASSERT_EQ(MyEnumClassSet{}.count(), 0U);
|
|
234
|
+
ASSERT_EQ(MyEnumClassSet::All().count(), 3U);
|
|
235
|
+
|
|
227
236
|
int count = 0;
|
|
228
237
|
for (MyEnumClass e : cs) {
|
|
229
238
|
ASSERT_EQ(e, MyEnumClass::A);
|
|
230
239
|
++count;
|
|
231
240
|
}
|
|
232
241
|
ASSERT_EQ(count, 1);
|
|
242
|
+
ASSERT_EQ(cs.count(), 1U);
|
|
233
243
|
|
|
234
244
|
count = 0;
|
|
235
245
|
for (MyEnumClass e : MyEnumClassSet::All().Without(MyEnumClass::B)) {
|
|
@@ -244,6 +254,68 @@ TEST_F(SmallEnumSetTest, SmallEnumSetTest2) {
|
|
|
244
254
|
}
|
|
245
255
|
}
|
|
246
256
|
|
|
257
|
+
template <typename ENUM_TYPE, ENUM_TYPE MAX_ENUMERATOR>
|
|
258
|
+
void TestBiggerEnumSet() {
|
|
259
|
+
using MySet = SmallEnumSet<ENUM_TYPE, MAX_ENUMERATOR>;
|
|
260
|
+
constexpr int kMaxValue = static_cast<int>(MAX_ENUMERATOR);
|
|
261
|
+
SCOPED_TRACE("kMaxValue = " + std::to_string(kMaxValue));
|
|
262
|
+
|
|
263
|
+
ASSERT_EQ(sizeof(MySet), (kMaxValue + 1 + 63) / 64 * 8);
|
|
264
|
+
|
|
265
|
+
MySet s;
|
|
266
|
+
ASSERT_TRUE(s.empty());
|
|
267
|
+
ASSERT_EQ(s.count(), 0U);
|
|
268
|
+
ASSERT_TRUE(s.Add(ENUM_TYPE(0)));
|
|
269
|
+
ASSERT_FALSE(s.empty());
|
|
270
|
+
ASSERT_EQ(s.count(), 1U);
|
|
271
|
+
ASSERT_TRUE(s.Add(ENUM_TYPE(kMaxValue - 1)));
|
|
272
|
+
ASSERT_FALSE(s.empty());
|
|
273
|
+
ASSERT_EQ(s.count(), 2U);
|
|
274
|
+
ASSERT_TRUE(s.Add(ENUM_TYPE(kMaxValue)));
|
|
275
|
+
ASSERT_FALSE(s.empty());
|
|
276
|
+
ASSERT_EQ(s.count(), 3U);
|
|
277
|
+
|
|
278
|
+
int count = 0;
|
|
279
|
+
for (ENUM_TYPE e : s) {
|
|
280
|
+
ASSERT_TRUE(e == ENUM_TYPE(0) || e == ENUM_TYPE(kMaxValue - 1) ||
|
|
281
|
+
e == ENUM_TYPE(kMaxValue));
|
|
282
|
+
++count;
|
|
283
|
+
}
|
|
284
|
+
ASSERT_EQ(count, 3);
|
|
285
|
+
|
|
286
|
+
ASSERT_TRUE(s.Remove(ENUM_TYPE(0)));
|
|
287
|
+
ASSERT_TRUE(s.Remove(ENUM_TYPE(kMaxValue)));
|
|
288
|
+
ASSERT_FALSE(s.empty());
|
|
289
|
+
ASSERT_EQ(s.count(), 1U);
|
|
290
|
+
|
|
291
|
+
count = 0;
|
|
292
|
+
for (ENUM_TYPE e : s) {
|
|
293
|
+
ASSERT_EQ(e, ENUM_TYPE(kMaxValue - 1));
|
|
294
|
+
++count;
|
|
295
|
+
}
|
|
296
|
+
ASSERT_EQ(count, 1);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
TEST_F(SmallEnumSetTest, BiggerEnumClasses) {
|
|
300
|
+
enum class BiggerEnumClass63 { A, B, C = 63 };
|
|
301
|
+
enum class BiggerEnumClass64 { A, B, C = 64 };
|
|
302
|
+
enum class BiggerEnumClass65 { A, B, C = 65 };
|
|
303
|
+
enum class BiggerEnumClass127 { A, B, C = 127 };
|
|
304
|
+
enum class BiggerEnumClass128 { A, B, C = 128 };
|
|
305
|
+
enum class BiggerEnumClass129 { A, B, C = 129 };
|
|
306
|
+
enum class BiggerEnumClass150 { A, B, C = 150 };
|
|
307
|
+
enum class BiggerEnumClass255 { A, B, C = 255 };
|
|
308
|
+
|
|
309
|
+
TestBiggerEnumSet<BiggerEnumClass63, BiggerEnumClass63::C>();
|
|
310
|
+
TestBiggerEnumSet<BiggerEnumClass64, BiggerEnumClass64::C>();
|
|
311
|
+
TestBiggerEnumSet<BiggerEnumClass65, BiggerEnumClass65::C>();
|
|
312
|
+
TestBiggerEnumSet<BiggerEnumClass127, BiggerEnumClass127::C>();
|
|
313
|
+
TestBiggerEnumSet<BiggerEnumClass128, BiggerEnumClass128::C>();
|
|
314
|
+
TestBiggerEnumSet<BiggerEnumClass129, BiggerEnumClass129::C>();
|
|
315
|
+
TestBiggerEnumSet<BiggerEnumClass150, BiggerEnumClass150::C>();
|
|
316
|
+
TestBiggerEnumSet<BiggerEnumClass255, BiggerEnumClass255::C>();
|
|
317
|
+
}
|
|
318
|
+
|
|
247
319
|
// ***************************************************************** //
|
|
248
320
|
// Unit test for Status
|
|
249
321
|
TEST(StatusTest, Update) {
|
|
@@ -339,6 +411,17 @@ TEST(UnownedPtrTest, Tests) {
|
|
|
339
411
|
}
|
|
340
412
|
}
|
|
341
413
|
|
|
414
|
+
TEST(ToBaseCharsStringTest, Tests) {
|
|
415
|
+
using ROCKSDB_NAMESPACE::ToBaseCharsString;
|
|
416
|
+
// Base 16
|
|
417
|
+
ASSERT_EQ(ToBaseCharsString<16>(5, 0, true), "00000");
|
|
418
|
+
ASSERT_EQ(ToBaseCharsString<16>(5, 42, true), "0002A");
|
|
419
|
+
ASSERT_EQ(ToBaseCharsString<16>(5, 42, false), "0002a");
|
|
420
|
+
ASSERT_EQ(ToBaseCharsString<16>(2, 255, false), "ff");
|
|
421
|
+
// Base 32
|
|
422
|
+
ASSERT_EQ(ToBaseCharsString<32>(2, 255, false), "7v");
|
|
423
|
+
}
|
|
424
|
+
|
|
342
425
|
} // namespace ROCKSDB_NAMESPACE
|
|
343
426
|
|
|
344
427
|
int main(int argc, char** argv) {
|
|
@@ -296,7 +296,6 @@ bool StartsWith(const std::string& string, const std::string& pattern) {
|
|
|
296
296
|
return string.compare(0, pattern.size(), pattern) == 0;
|
|
297
297
|
}
|
|
298
298
|
|
|
299
|
-
|
|
300
299
|
bool ParseBoolean(const std::string& type, const std::string& value) {
|
|
301
300
|
if (value == "true" || value == "1") {
|
|
302
301
|
return true;
|
|
@@ -334,7 +333,6 @@ int32_t ParseInt32(const std::string& value) {
|
|
|
334
333
|
}
|
|
335
334
|
}
|
|
336
335
|
|
|
337
|
-
|
|
338
336
|
uint64_t ParseUint64(const std::string& value) {
|
|
339
337
|
size_t endchar;
|
|
340
338
|
#ifndef CYGWIN
|
|
@@ -40,6 +40,16 @@ inline void PutBaseChars(char** buf, size_t n, uint64_t v, bool uppercase) {
|
|
|
40
40
|
*buf += n;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
// Construct a string of n digits from v in base kBase
|
|
44
|
+
template <size_t kBase>
|
|
45
|
+
inline std::string ToBaseCharsString(size_t n, uint64_t v, bool uppercase) {
|
|
46
|
+
std::string result;
|
|
47
|
+
result.resize(n);
|
|
48
|
+
char* buf = &result[0];
|
|
49
|
+
PutBaseChars<kBase>(&buf, n, v, uppercase);
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
|
|
43
53
|
// Parse n digits from *buf in base kBase to *v and advance *buf to the
|
|
44
54
|
// position after what was read. On success, true is returned. On failure,
|
|
45
55
|
// false is returned, *buf is placed at the first bad character, and *v
|
|
@@ -47,7 +47,8 @@ static OperationInfo global_operation_table[] = {
|
|
|
47
47
|
{ThreadStatus::OP_VERIFY_FILE_CHECKSUMS, "VerifyFileChecksums"},
|
|
48
48
|
{ThreadStatus::OP_GETENTITY, "GetEntity"},
|
|
49
49
|
{ThreadStatus::OP_MULTIGETENTITY, "MultiGetEntity"},
|
|
50
|
-
{ThreadStatus::
|
|
50
|
+
{ThreadStatus::OP_GET_FILE_CHECKSUMS_FROM_CURRENT_MANIFEST,
|
|
51
|
+
"GetFileChecksumsFromCurrentManifest"},
|
|
51
52
|
|
|
52
53
|
};
|
|
53
54
|
|