@nxtedition/rocksdb 15.4.1 → 16.0.0
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 +70 -23
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/index.js +70 -10
- package/iterator.js +25 -3
- package/max_rev_operator.h +9 -5
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -5,12 +5,156 @@
|
|
|
5
5
|
|
|
6
6
|
#include "util/compression.h"
|
|
7
7
|
|
|
8
|
+
#ifdef BZIP2
|
|
9
|
+
#include <bzlib.h>
|
|
10
|
+
#endif // BZIP2
|
|
11
|
+
|
|
12
|
+
#include <limits>
|
|
13
|
+
|
|
14
|
+
#ifdef LZ4
|
|
15
|
+
#include <lz4.h>
|
|
16
|
+
#include <lz4hc.h>
|
|
17
|
+
#if LZ4_VERSION_NUMBER < 10700 // < r129
|
|
18
|
+
#error "LZ4 support requires version >= 1.7.0 (lz4-devel)"
|
|
19
|
+
#endif // LZ4_VERSION_NUMBER < 10700
|
|
20
|
+
#endif // LZ4
|
|
21
|
+
|
|
22
|
+
#ifdef SNAPPY
|
|
23
|
+
#include <snappy-sinksource.h>
|
|
24
|
+
#include <snappy.h>
|
|
25
|
+
#endif // SNAPPY
|
|
26
|
+
|
|
27
|
+
#ifdef ZLIB
|
|
28
|
+
#include <zlib.h>
|
|
29
|
+
#endif // ZLIB
|
|
30
|
+
|
|
8
31
|
#include "options/options_helper.h"
|
|
32
|
+
#include "port/likely.h"
|
|
9
33
|
#include "rocksdb/convenience.h"
|
|
10
34
|
#include "rocksdb/utilities/object_registry.h"
|
|
35
|
+
#include "test_util/sync_point.h"
|
|
36
|
+
#include "util/cast_util.h"
|
|
37
|
+
#include "util/string_util.h"
|
|
11
38
|
|
|
12
39
|
namespace ROCKSDB_NAMESPACE {
|
|
13
40
|
|
|
41
|
+
// WART: does not match OptionsHelper::compression_type_string_map
|
|
42
|
+
std::string CompressionTypeToString(CompressionType compression_type) {
|
|
43
|
+
switch (compression_type) {
|
|
44
|
+
case kNoCompression:
|
|
45
|
+
return "NoCompression";
|
|
46
|
+
case kSnappyCompression:
|
|
47
|
+
return "Snappy";
|
|
48
|
+
case kZlibCompression:
|
|
49
|
+
return "Zlib";
|
|
50
|
+
case kBZip2Compression:
|
|
51
|
+
return "BZip2";
|
|
52
|
+
case kLZ4Compression:
|
|
53
|
+
return "LZ4";
|
|
54
|
+
case kLZ4HCCompression:
|
|
55
|
+
return "LZ4HC";
|
|
56
|
+
case kXpressCompression:
|
|
57
|
+
return "Xpress";
|
|
58
|
+
case kZSTD:
|
|
59
|
+
return "ZSTD";
|
|
60
|
+
case kDisableCompressionOption:
|
|
61
|
+
return "DisableOption";
|
|
62
|
+
default: {
|
|
63
|
+
bool is_custom = compression_type >= kFirstCustomCompression &&
|
|
64
|
+
compression_type <= kLastCustomCompression;
|
|
65
|
+
unsigned char c = lossless_cast<unsigned char>(compression_type);
|
|
66
|
+
return (is_custom ? "Custom" : "Reserved") +
|
|
67
|
+
ToBaseCharsString<16>(2, c, /*uppercase=*/true);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// WART: does not match OptionsHelper::compression_type_string_map
|
|
73
|
+
CompressionType CompressionTypeFromString(std::string compression_type_str) {
|
|
74
|
+
if (!compression_type_str.empty()) {
|
|
75
|
+
switch (compression_type_str[0]) {
|
|
76
|
+
case 'N':
|
|
77
|
+
if (compression_type_str == "NoCompression") {
|
|
78
|
+
return kNoCompression;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
case 'S':
|
|
82
|
+
if (compression_type_str == "Snappy") {
|
|
83
|
+
return kSnappyCompression;
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
case 'Z':
|
|
87
|
+
if (compression_type_str == "ZSTD") {
|
|
88
|
+
return kZSTD;
|
|
89
|
+
}
|
|
90
|
+
if (compression_type_str == "Zlib") {
|
|
91
|
+
return kZlibCompression;
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
case 'B':
|
|
95
|
+
if (compression_type_str == "BZip2") {
|
|
96
|
+
return kBZip2Compression;
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
case 'L':
|
|
100
|
+
if (compression_type_str == "LZ4") {
|
|
101
|
+
return kLZ4Compression;
|
|
102
|
+
}
|
|
103
|
+
if (compression_type_str == "LZ4HC") {
|
|
104
|
+
return kLZ4HCCompression;
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
case 'X':
|
|
108
|
+
if (compression_type_str == "Xpress") {
|
|
109
|
+
return kXpressCompression;
|
|
110
|
+
}
|
|
111
|
+
break;
|
|
112
|
+
default:;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// unrecognized
|
|
116
|
+
return kDisableCompressionOption;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
std::string CompressionOptionsToString(
|
|
120
|
+
const CompressionOptions& compression_options) {
|
|
121
|
+
std::string result;
|
|
122
|
+
result.reserve(512);
|
|
123
|
+
result.append("window_bits=")
|
|
124
|
+
.append(std::to_string(compression_options.window_bits))
|
|
125
|
+
.append("; ");
|
|
126
|
+
result.append("level=")
|
|
127
|
+
.append(std::to_string(compression_options.level))
|
|
128
|
+
.append("; ");
|
|
129
|
+
result.append("strategy=")
|
|
130
|
+
.append(std::to_string(compression_options.strategy))
|
|
131
|
+
.append("; ");
|
|
132
|
+
result.append("max_dict_bytes=")
|
|
133
|
+
.append(std::to_string(compression_options.max_dict_bytes))
|
|
134
|
+
.append("; ");
|
|
135
|
+
result.append("zstd_max_train_bytes=")
|
|
136
|
+
.append(std::to_string(compression_options.zstd_max_train_bytes))
|
|
137
|
+
.append("; ");
|
|
138
|
+
// NOTE: parallel_threads is skipped because it doesn't really affect the file
|
|
139
|
+
// contents written, arguably doesn't belong in CompressionOptions
|
|
140
|
+
result.append("enabled=")
|
|
141
|
+
.append(std::to_string(compression_options.enabled))
|
|
142
|
+
.append("; ");
|
|
143
|
+
result.append("max_dict_buffer_bytes=")
|
|
144
|
+
.append(std::to_string(compression_options.max_dict_buffer_bytes))
|
|
145
|
+
.append("; ");
|
|
146
|
+
result.append("use_zstd_dict_trainer=")
|
|
147
|
+
.append(std::to_string(compression_options.use_zstd_dict_trainer))
|
|
148
|
+
.append("; ");
|
|
149
|
+
result.append("max_compressed_bytes_per_kb=")
|
|
150
|
+
.append(std::to_string(compression_options.max_compressed_bytes_per_kb))
|
|
151
|
+
.append("; ");
|
|
152
|
+
result.append("checksum=")
|
|
153
|
+
.append(std::to_string(compression_options.checksum))
|
|
154
|
+
.append("; ");
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
|
|
14
158
|
StreamingCompress* StreamingCompress::Create(CompressionType compression_type,
|
|
15
159
|
const CompressionOptions& opts,
|
|
16
160
|
uint32_t compress_format_version,
|
|
@@ -123,6 +267,123 @@ void ZSTDStreamingUncompress::Reset() {
|
|
|
123
267
|
#endif
|
|
124
268
|
}
|
|
125
269
|
|
|
270
|
+
void DecompressorDict::Populate(Decompressor& from_decompressor, Slice dict) {
|
|
271
|
+
if (UNLIKELY(dict.empty())) {
|
|
272
|
+
dict_str_ = {};
|
|
273
|
+
dict_allocation_ = {};
|
|
274
|
+
// Appropriately reject bad files with empty dictionary block.
|
|
275
|
+
// It is longstanding not to write an empty dictionary block:
|
|
276
|
+
// https://github.com/facebook/rocksdb/blame/10.2.fb/table/block_based/block_based_table_builder.cc#L1841
|
|
277
|
+
decompressor_ = std::make_unique<FailureDecompressor>(
|
|
278
|
+
Status::Corruption("Decompression dictionary is empty"));
|
|
279
|
+
} else {
|
|
280
|
+
Status s = from_decompressor.MaybeCloneForDict(dict, &decompressor_);
|
|
281
|
+
if (decompressor_ == nullptr) {
|
|
282
|
+
dict_str_ = {};
|
|
283
|
+
dict_allocation_ = {};
|
|
284
|
+
assert(!s.ok());
|
|
285
|
+
decompressor_ = std::make_unique<FailureDecompressor>(std::move(s));
|
|
286
|
+
} else {
|
|
287
|
+
assert(s.ok());
|
|
288
|
+
assert(decompressor_->GetSerializedDict() == dict);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
memory_usage_ = sizeof(struct DecompressorDict);
|
|
293
|
+
memory_usage_ += dict_str_.size();
|
|
294
|
+
if (dict_allocation_) {
|
|
295
|
+
auto allocator = dict_allocation_.get_deleter().allocator;
|
|
296
|
+
if (allocator) {
|
|
297
|
+
memory_usage_ +=
|
|
298
|
+
allocator->UsableSize(dict_allocation_.get(), GetRawDict().size());
|
|
299
|
+
} else {
|
|
300
|
+
memory_usage_ += GetRawDict().size();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
memory_usage_ += decompressor_->ApproximateOwnedMemoryUsage();
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// ZSTD dictionary training implementations
|
|
307
|
+
std::string ZSTD_TrainDictionary(const std::string& samples,
|
|
308
|
+
const std::vector<size_t>& sample_lens,
|
|
309
|
+
size_t max_dict_bytes) {
|
|
310
|
+
#ifdef ZSTD
|
|
311
|
+
assert(samples.empty() == sample_lens.empty());
|
|
312
|
+
if (samples.empty()) {
|
|
313
|
+
return "";
|
|
314
|
+
}
|
|
315
|
+
std::string dict_data(max_dict_bytes, '\0');
|
|
316
|
+
size_t dict_len = ZDICT_trainFromBuffer(
|
|
317
|
+
&dict_data[0], max_dict_bytes, &samples[0], &sample_lens[0],
|
|
318
|
+
static_cast<unsigned>(sample_lens.size()));
|
|
319
|
+
if (ZDICT_isError(dict_len)) {
|
|
320
|
+
return "";
|
|
321
|
+
}
|
|
322
|
+
assert(dict_len <= max_dict_bytes);
|
|
323
|
+
dict_data.resize(dict_len);
|
|
324
|
+
return dict_data;
|
|
325
|
+
#else
|
|
326
|
+
assert(false);
|
|
327
|
+
(void)samples;
|
|
328
|
+
(void)sample_lens;
|
|
329
|
+
(void)max_dict_bytes;
|
|
330
|
+
return "";
|
|
331
|
+
#endif // ZSTD
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
std::string ZSTD_TrainDictionary(const std::string& samples,
|
|
335
|
+
size_t sample_len_shift,
|
|
336
|
+
size_t max_dict_bytes) {
|
|
337
|
+
#ifdef ZSTD
|
|
338
|
+
// skips potential partial sample at the end of "samples"
|
|
339
|
+
size_t num_samples = samples.size() >> sample_len_shift;
|
|
340
|
+
std::vector<size_t> sample_lens(num_samples, size_t(1) << sample_len_shift);
|
|
341
|
+
return ZSTD_TrainDictionary(samples, sample_lens, max_dict_bytes);
|
|
342
|
+
#else
|
|
343
|
+
assert(false);
|
|
344
|
+
(void)samples;
|
|
345
|
+
(void)sample_len_shift;
|
|
346
|
+
(void)max_dict_bytes;
|
|
347
|
+
return "";
|
|
348
|
+
#endif // ZSTD
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
std::string ZSTD_FinalizeDictionary(const std::string& samples,
|
|
352
|
+
const std::vector<size_t>& sample_lens,
|
|
353
|
+
size_t max_dict_bytes, int level) {
|
|
354
|
+
#ifdef ROCKSDB_ZDICT_FINALIZE
|
|
355
|
+
assert(samples.empty() == sample_lens.empty());
|
|
356
|
+
if (samples.empty()) {
|
|
357
|
+
return "";
|
|
358
|
+
}
|
|
359
|
+
if (level == CompressionOptions::kDefaultCompressionLevel) {
|
|
360
|
+
// NB: ZSTD_CLEVEL_DEFAULT is historically == 3
|
|
361
|
+
level = ZSTD_CLEVEL_DEFAULT;
|
|
362
|
+
}
|
|
363
|
+
std::string dict_data(max_dict_bytes, '\0');
|
|
364
|
+
size_t dict_len = ZDICT_finalizeDictionary(
|
|
365
|
+
dict_data.data(), max_dict_bytes, samples.data(),
|
|
366
|
+
std::min(static_cast<size_t>(samples.size()), max_dict_bytes),
|
|
367
|
+
samples.data(), sample_lens.data(),
|
|
368
|
+
static_cast<unsigned>(sample_lens.size()),
|
|
369
|
+
{level, 0 /* notificationLevel */, 0 /* dictID */});
|
|
370
|
+
if (ZDICT_isError(dict_len)) {
|
|
371
|
+
return "";
|
|
372
|
+
} else {
|
|
373
|
+
assert(dict_len <= max_dict_bytes);
|
|
374
|
+
dict_data.resize(dict_len);
|
|
375
|
+
return dict_data;
|
|
376
|
+
}
|
|
377
|
+
#else
|
|
378
|
+
assert(false);
|
|
379
|
+
(void)samples;
|
|
380
|
+
(void)sample_lens;
|
|
381
|
+
(void)max_dict_bytes;
|
|
382
|
+
(void)level;
|
|
383
|
+
return "";
|
|
384
|
+
#endif // ROCKSDB_ZDICT_FINALIZE
|
|
385
|
+
}
|
|
386
|
+
|
|
126
387
|
// ***********************************************************************
|
|
127
388
|
// BEGIN built-in implementation of customization interface
|
|
128
389
|
// ***********************************************************************
|
|
@@ -162,69 +423,17 @@ class CompressorBase : public Compressor {
|
|
|
162
423
|
CompressionOptions opts_;
|
|
163
424
|
};
|
|
164
425
|
|
|
165
|
-
class BuiltinCompressorV1 final : public CompressorBase {
|
|
166
|
-
public:
|
|
167
|
-
const char* Name() const override { return "BuiltinCompressorV1"; }
|
|
168
|
-
|
|
169
|
-
explicit BuiltinCompressorV1(const CompressionOptions& opts,
|
|
170
|
-
CompressionType type)
|
|
171
|
-
: CompressorBase(opts), type_(type) {
|
|
172
|
-
assert(type != kNoCompression);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
CompressionType GetPreferredCompressionType() const override { return type_; }
|
|
176
|
-
|
|
177
|
-
std::unique_ptr<Compressor> Clone() const override {
|
|
178
|
-
return std::make_unique<BuiltinCompressorV1>(opts_, type_);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
Status CompressBlock(Slice uncompressed_data, char* compressed_output,
|
|
182
|
-
size_t* compressed_output_size,
|
|
183
|
-
CompressionType* out_compression_type,
|
|
184
|
-
ManagedWorkingArea* wa) override {
|
|
185
|
-
std::optional<CompressionContext> tmp_ctx;
|
|
186
|
-
CompressionContext* ctx = nullptr;
|
|
187
|
-
if (wa != nullptr && wa->owner() == this) {
|
|
188
|
-
ctx = static_cast<CompressionContext*>(wa->get());
|
|
189
|
-
}
|
|
190
|
-
if (ctx == nullptr) {
|
|
191
|
-
tmp_ctx.emplace(type_, opts_);
|
|
192
|
-
ctx = &*tmp_ctx;
|
|
193
|
-
}
|
|
194
|
-
CompressionInfo info(opts_, *ctx, CompressionDict::GetEmptyDict(), type_);
|
|
195
|
-
std::string str_output;
|
|
196
|
-
str_output.reserve(uncompressed_data.size());
|
|
197
|
-
if (!OLD_CompressData(uncompressed_data, info,
|
|
198
|
-
1 /*compress_format_version*/, &str_output)) {
|
|
199
|
-
// Maybe rejected or bypassed
|
|
200
|
-
*compressed_output_size = str_output.size();
|
|
201
|
-
*out_compression_type = kNoCompression;
|
|
202
|
-
return Status::OK();
|
|
203
|
-
}
|
|
204
|
-
if (str_output.size() > *compressed_output_size) {
|
|
205
|
-
// Compression rejected
|
|
206
|
-
*out_compression_type = kNoCompression;
|
|
207
|
-
return Status::OK();
|
|
208
|
-
}
|
|
209
|
-
std::memcpy(compressed_output, str_output.data(), str_output.size());
|
|
210
|
-
*compressed_output_size = str_output.size();
|
|
211
|
-
*out_compression_type = type_;
|
|
212
|
-
return Status::OK();
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
protected:
|
|
216
|
-
const CompressionType type_;
|
|
217
|
-
};
|
|
218
|
-
|
|
219
426
|
class CompressorWithSimpleDictBase : public CompressorBase {
|
|
220
427
|
public:
|
|
221
428
|
explicit CompressorWithSimpleDictBase(const CompressionOptions& opts,
|
|
222
429
|
std::string&& dict_data = {})
|
|
223
430
|
: CompressorBase(opts), dict_data_(std::move(dict_data)) {}
|
|
224
431
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
432
|
+
DictConfig GetDictGuidance(CacheEntryRole /*block_type*/) const override {
|
|
433
|
+
if (opts_.max_dict_bytes == 0) {
|
|
434
|
+
return DictDisabled{};
|
|
435
|
+
}
|
|
436
|
+
return DictSampling{opts_.max_dict_bytes};
|
|
228
437
|
}
|
|
229
438
|
|
|
230
439
|
// NOTE: empty dict is equivalent to no dict
|
|
@@ -236,13 +445,21 @@ class CompressorWithSimpleDictBase : public CompressorBase {
|
|
|
236
445
|
|
|
237
446
|
std::unique_ptr<Compressor> MaybeCloneSpecialized(
|
|
238
447
|
CacheEntryRole /*block_type*/,
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
448
|
+
DictConfigArgs&& dict_config) const final override {
|
|
449
|
+
if (auto* samples = std::get_if<DictSamples>(&dict_config)) {
|
|
450
|
+
assert(samples->Verify());
|
|
451
|
+
if (samples->empty()) {
|
|
452
|
+
return nullptr;
|
|
453
|
+
}
|
|
454
|
+
return CloneForDict(std::move(samples->sample_data));
|
|
455
|
+
} else if (auto* predef = std::get_if<DictPreDefined>(&dict_config)) {
|
|
456
|
+
if (predef->dict_data.empty()) {
|
|
457
|
+
return nullptr;
|
|
458
|
+
}
|
|
459
|
+
return CloneForDict(std::move(predef->dict_data));
|
|
244
460
|
} else {
|
|
245
|
-
|
|
461
|
+
assert(std::holds_alternative<DictDisabled>(dict_config));
|
|
462
|
+
return nullptr;
|
|
246
463
|
}
|
|
247
464
|
}
|
|
248
465
|
|
|
@@ -858,14 +1075,15 @@ class BuiltinZSTDCompressorV2 final : public CompressorBase {
|
|
|
858
1075
|
std::move(dict_copy));
|
|
859
1076
|
}
|
|
860
1077
|
|
|
861
|
-
|
|
862
|
-
CacheEntryRole /*block_type*/) const override {
|
|
1078
|
+
DictConfig GetDictGuidance(CacheEntryRole /*block_type*/) const override {
|
|
863
1079
|
if (opts_.max_dict_bytes == 0) {
|
|
864
1080
|
// Dictionary compression disabled
|
|
865
|
-
return
|
|
1081
|
+
return DictDisabled{};
|
|
866
1082
|
} else {
|
|
867
|
-
|
|
868
|
-
|
|
1083
|
+
size_t max_sample_bytes = opts_.zstd_max_train_bytes > 0
|
|
1084
|
+
? opts_.zstd_max_train_bytes
|
|
1085
|
+
: opts_.max_dict_bytes;
|
|
1086
|
+
return DictSampling{max_sample_bytes};
|
|
869
1087
|
}
|
|
870
1088
|
}
|
|
871
1089
|
|
|
@@ -974,129 +1192,57 @@ class BuiltinZSTDCompressorV2 final : public CompressorBase {
|
|
|
974
1192
|
|
|
975
1193
|
std::unique_ptr<Compressor> MaybeCloneSpecialized(
|
|
976
1194
|
CacheEntryRole /*block_type*/,
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1195
|
+
DictConfigArgs&& dict_config) const override {
|
|
1196
|
+
// Handle DictDisabled
|
|
1197
|
+
// TODO: use holds_alternative
|
|
1198
|
+
if (auto* disabled = std::get_if<DictDisabled>(&dict_config)) {
|
|
1199
|
+
(void)disabled;
|
|
981
1200
|
return nullptr;
|
|
982
1201
|
}
|
|
983
|
-
std::string dict_data;
|
|
984
|
-
// Migrated from BlockBasedTableBuilder::EnterUnbuffered()
|
|
985
|
-
if (opts_.zstd_max_train_bytes > 0) {
|
|
986
|
-
assert(dict_samples.sample_data.size() <= opts_.zstd_max_train_bytes);
|
|
987
|
-
if (opts_.use_zstd_dict_trainer) {
|
|
988
|
-
dict_data = ZSTD_TrainDictionary(dict_samples.sample_data,
|
|
989
|
-
dict_samples.sample_lens,
|
|
990
|
-
opts_.max_dict_bytes);
|
|
991
|
-
} else {
|
|
992
|
-
dict_data = ZSTD_FinalizeDictionary(dict_samples.sample_data,
|
|
993
|
-
dict_samples.sample_lens,
|
|
994
|
-
opts_.max_dict_bytes, opts_.level);
|
|
995
|
-
}
|
|
996
|
-
} else {
|
|
997
|
-
assert(dict_samples.sample_data.size() <= opts_.max_dict_bytes);
|
|
998
|
-
// ZSTD "raw content dictionary" - "Any buffer is a valid raw content
|
|
999
|
-
// dictionary." Or similar for other compressions.
|
|
1000
|
-
dict_data = std::move(dict_samples.sample_data);
|
|
1001
|
-
}
|
|
1002
|
-
CompressionDict dict{std::move(dict_data), kZSTD, opts_.level};
|
|
1003
|
-
return std::make_unique<BuiltinZSTDCompressorV2>(opts_, std::move(dict));
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
std::shared_ptr<Decompressor> GetOptimizedDecompressor() const override;
|
|
1007
|
-
|
|
1008
|
-
protected:
|
|
1009
|
-
const CompressionDict dict_;
|
|
1010
|
-
};
|
|
1011
1202
|
|
|
1012
|
-
|
|
1013
|
-
// and NOT EFFICIENT because this is an old/deprecated format.
|
|
1014
|
-
class BuiltinDecompressorV1 final : public Decompressor {
|
|
1015
|
-
public:
|
|
1016
|
-
const char* Name() const override { return "BuiltinDecompressorV1"; }
|
|
1017
|
-
|
|
1018
|
-
Status ExtractUncompressedSize(Args& args) override {
|
|
1019
|
-
CacheAllocationPtr throw_away_output;
|
|
1020
|
-
return DoUncompress(args, &throw_away_output, &args.uncompressed_size);
|
|
1021
|
-
}
|
|
1203
|
+
std::string dict_data;
|
|
1022
1204
|
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
}
|
|
1030
|
-
if (s.ok()) {
|
|
1031
|
-
// NOTE: simple but inefficient
|
|
1032
|
-
memcpy(uncompressed_output, output.get(), args.uncompressed_size);
|
|
1205
|
+
// Handle DictPreDefined - use the pre-defined dictionary directly
|
|
1206
|
+
if (auto* predef = std::get_if<DictPreDefined>(&dict_config)) {
|
|
1207
|
+
if (predef->dict_data.empty()) {
|
|
1208
|
+
return nullptr;
|
|
1209
|
+
}
|
|
1210
|
+
dict_data = std::move(predef->dict_data);
|
|
1033
1211
|
}
|
|
1034
|
-
return s;
|
|
1035
|
-
}
|
|
1036
1212
|
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
if (error_message != nullptr) {
|
|
1055
|
-
return Status::Corruption(error_message);
|
|
1213
|
+
// Handle DictSamples - train dictionary from samples
|
|
1214
|
+
if (auto* samples = std::get_if<DictSamples>(&dict_config)) {
|
|
1215
|
+
assert(samples->Verify());
|
|
1216
|
+
if (samples->empty()) {
|
|
1217
|
+
return nullptr;
|
|
1218
|
+
}
|
|
1219
|
+
// Migrated from BlockBasedTableBuilder::EnterUnbuffered()
|
|
1220
|
+
if (opts_.zstd_max_train_bytes > 0) {
|
|
1221
|
+
assert(samples->sample_data.size() <= opts_.zstd_max_train_bytes);
|
|
1222
|
+
if (opts_.use_zstd_dict_trainer) {
|
|
1223
|
+
dict_data = ZSTD_TrainDictionary(
|
|
1224
|
+
samples->sample_data, samples->sample_lens, opts_.max_dict_bytes);
|
|
1225
|
+
} else {
|
|
1226
|
+
dict_data = ZSTD_FinalizeDictionary(
|
|
1227
|
+
samples->sample_data, samples->sample_lens, opts_.max_dict_bytes,
|
|
1228
|
+
opts_.level);
|
|
1229
|
+
}
|
|
1056
1230
|
} else {
|
|
1057
|
-
|
|
1231
|
+
assert(samples->sample_data.size() <= opts_.max_dict_bytes);
|
|
1232
|
+
// ZSTD "raw content dictionary" - "Any buffer is a valid raw content
|
|
1233
|
+
// dictionary." Or similar for other compressions.
|
|
1234
|
+
dict_data = std::move(samples->sample_data);
|
|
1058
1235
|
}
|
|
1059
1236
|
}
|
|
1060
|
-
*out_uncompressed_size = size_t_uncompressed_size;
|
|
1061
|
-
assert(*out_uncompressed_size > 0);
|
|
1062
|
-
return Status::OK();
|
|
1063
|
-
}
|
|
1064
|
-
};
|
|
1065
|
-
|
|
1066
|
-
class BuiltinCompressionManagerV1 final : public CompressionManager {
|
|
1067
|
-
public:
|
|
1068
|
-
BuiltinCompressionManagerV1() = default;
|
|
1069
|
-
~BuiltinCompressionManagerV1() override = default;
|
|
1070
|
-
|
|
1071
|
-
const char* Name() const override { return "BuiltinCompressionManagerV1"; }
|
|
1072
|
-
|
|
1073
|
-
const char* CompatibilityName() const override { return "BuiltinV1"; }
|
|
1074
|
-
|
|
1075
|
-
std::unique_ptr<Compressor> GetCompressor(const CompressionOptions& opts,
|
|
1076
|
-
CompressionType type) override {
|
|
1077
|
-
// At the time of deprecating the writing of new format_version=1 files,
|
|
1078
|
-
// ZSTD was the last supported built-in compression type.
|
|
1079
|
-
if (type > kZSTD) {
|
|
1080
|
-
// Unrecognized; fall back on default compression
|
|
1081
|
-
type = ColumnFamilyOptions{}.compression;
|
|
1082
|
-
}
|
|
1083
|
-
if (type == kNoCompression) {
|
|
1084
|
-
return nullptr;
|
|
1085
|
-
} else {
|
|
1086
|
-
return std::make_unique<BuiltinCompressorV1>(opts, type);
|
|
1087
|
-
}
|
|
1088
|
-
}
|
|
1089
1237
|
|
|
1090
|
-
|
|
1091
|
-
return std::
|
|
1238
|
+
CompressionDict dict{std::move(dict_data), kZSTD, opts_.level};
|
|
1239
|
+
return std::make_unique<BuiltinZSTDCompressorV2>(opts_, std::move(dict));
|
|
1092
1240
|
}
|
|
1093
1241
|
|
|
1094
|
-
|
|
1095
|
-
return CompressionTypeSupported(type);
|
|
1096
|
-
}
|
|
1242
|
+
std::shared_ptr<Decompressor> GetOptimizedDecompressor() const override;
|
|
1097
1243
|
|
|
1098
1244
|
protected:
|
|
1099
|
-
|
|
1245
|
+
const CompressionDict dict_;
|
|
1100
1246
|
};
|
|
1101
1247
|
|
|
1102
1248
|
// Subroutines for BuiltinDecompressorV2
|
|
@@ -1632,10 +1778,13 @@ class BuiltinCompressionManagerV2 final : public CompressionManager {
|
|
|
1632
1778
|
return nullptr;
|
|
1633
1779
|
} else if (types_begin + 1 == types_end &&
|
|
1634
1780
|
*types_begin == kSnappyCompression) {
|
|
1781
|
+
// Exclusively Snappy
|
|
1635
1782
|
return GetSnappyDecompressor();
|
|
1636
|
-
} else if (std::find(types_begin, types_end, kZSTD)) {
|
|
1783
|
+
} else if (std::find(types_begin, types_end, kZSTD) != types_end) {
|
|
1784
|
+
// Includes ZSTD
|
|
1637
1785
|
return GetZstdDecompressor();
|
|
1638
1786
|
} else {
|
|
1787
|
+
// Everything else
|
|
1639
1788
|
return GetGeneralDecompressor();
|
|
1640
1789
|
}
|
|
1641
1790
|
}
|
|
@@ -1665,9 +1814,6 @@ class BuiltinCompressionManagerV2 final : public CompressionManager {
|
|
|
1665
1814
|
}
|
|
1666
1815
|
};
|
|
1667
1816
|
|
|
1668
|
-
const std::shared_ptr<BuiltinCompressionManagerV1>
|
|
1669
|
-
kBuiltinCompressionManagerV1 =
|
|
1670
|
-
std::make_shared<BuiltinCompressionManagerV1>();
|
|
1671
1817
|
const std::shared_ptr<BuiltinCompressionManagerV2>
|
|
1672
1818
|
kBuiltinCompressionManagerV2 =
|
|
1673
1819
|
std::make_shared<BuiltinCompressionManagerV2>();
|
|
@@ -1696,14 +1842,6 @@ Status CompressionManager::CreateFromString(
|
|
|
1696
1842
|
std::call_once(loaded, [&]() {
|
|
1697
1843
|
auto& library = *ObjectLibrary::Default();
|
|
1698
1844
|
// TODO: try to enhance ObjectLibrary to support singletons
|
|
1699
|
-
library.AddFactory<CompressionManager>(
|
|
1700
|
-
kBuiltinCompressionManagerV1->CompatibilityName(),
|
|
1701
|
-
[](const std::string& /*uri*/,
|
|
1702
|
-
std::unique_ptr<CompressionManager>* guard,
|
|
1703
|
-
std::string* /*errmsg*/) {
|
|
1704
|
-
*guard = std::make_unique<BuiltinCompressionManagerV1>();
|
|
1705
|
-
return guard->get();
|
|
1706
|
-
});
|
|
1707
1845
|
library.AddFactory<CompressionManager>(
|
|
1708
1846
|
kBuiltinCompressionManagerV2->CompatibilityName(),
|
|
1709
1847
|
[](const std::string& /*uri*/,
|
|
@@ -1750,30 +1888,50 @@ CompressionManager::FindCompatibleCompressionManager(Slice compatibility_name) {
|
|
|
1750
1888
|
}
|
|
1751
1889
|
}
|
|
1752
1890
|
|
|
1753
|
-
const std::shared_ptr<CompressionManager>&
|
|
1754
|
-
int compression_format_version) {
|
|
1755
|
-
static const std::shared_ptr<CompressionManager> v1_as_base =
|
|
1756
|
-
kBuiltinCompressionManagerV1;
|
|
1891
|
+
const std::shared_ptr<CompressionManager>& GetBuiltinV2CompressionManager() {
|
|
1757
1892
|
static const std::shared_ptr<CompressionManager> v2_as_base =
|
|
1758
1893
|
kBuiltinCompressionManagerV2;
|
|
1759
|
-
|
|
1760
|
-
if (compression_format_version == 1) {
|
|
1761
|
-
return v1_as_base;
|
|
1762
|
-
} else if (compression_format_version == 2) {
|
|
1763
|
-
return v2_as_base;
|
|
1764
|
-
} else {
|
|
1765
|
-
// Unrecognized. In some cases this is unexpected and the caller can
|
|
1766
|
-
// rightfully crash.
|
|
1767
|
-
return none;
|
|
1768
|
-
}
|
|
1769
|
-
}
|
|
1770
|
-
|
|
1771
|
-
const std::shared_ptr<CompressionManager>& GetBuiltinV2CompressionManager() {
|
|
1772
|
-
return GetBuiltinCompressionManager(2);
|
|
1894
|
+
return v2_as_base;
|
|
1773
1895
|
}
|
|
1774
1896
|
|
|
1775
1897
|
// ***********************************************************************
|
|
1776
1898
|
// END built-in implementation of customization interface
|
|
1777
1899
|
// ***********************************************************************
|
|
1778
1900
|
|
|
1901
|
+
Status LegacyForceBuiltinCompression(
|
|
1902
|
+
Compressor& builtin_compressor,
|
|
1903
|
+
Compressor::ManagedWorkingArea* working_area, Slice from,
|
|
1904
|
+
GrowableBuffer* to) {
|
|
1905
|
+
// For legacy cases that store compressed data even when it's larger than the
|
|
1906
|
+
// uncompressed data (!!!), we need a reliable upper bound on the compressed
|
|
1907
|
+
// size. This is based on consulting various algorithms documentation etc.
|
|
1908
|
+
// and adding ~4 bytes for encoded uncompressed size. (Snappy is the worst
|
|
1909
|
+
// case for multiplicative overhead at n + n/6, bounded by 19*n/16 to avoid
|
|
1910
|
+
// costly division. Bzip2 is the worst case for additive overhead at 600
|
|
1911
|
+
// bytes.)
|
|
1912
|
+
size_t n = from.size();
|
|
1913
|
+
size_t upper_bound = ((19 * n) >> 4) + 604;
|
|
1914
|
+
// The upper bound has only been established considering built-in compression
|
|
1915
|
+
// types through kZSTD. (Might need updating if this fails.)
|
|
1916
|
+
assert(builtin_compressor.GetPreferredCompressionType() <= kZSTD);
|
|
1917
|
+
|
|
1918
|
+
to->ResetForSize(upper_bound);
|
|
1919
|
+
CompressionType actual_type = kNoCompression;
|
|
1920
|
+
Status s = builtin_compressor.CompressBlock(
|
|
1921
|
+
from, to->data(), &to->MutableSize(), &actual_type, working_area);
|
|
1922
|
+
TEST_SYNC_POINT_CALLBACK("LegacyForceBuiltinCompression:TamperWithStatus",
|
|
1923
|
+
&s);
|
|
1924
|
+
|
|
1925
|
+
if (!s.ok()) {
|
|
1926
|
+
return s;
|
|
1927
|
+
}
|
|
1928
|
+
if (actual_type == kNoCompression) {
|
|
1929
|
+
// abort in debug builds
|
|
1930
|
+
assert(actual_type != kNoCompression);
|
|
1931
|
+
return Status::Corruption("Compression unexpectedly declined or aborted");
|
|
1932
|
+
}
|
|
1933
|
+
assert(actual_type == builtin_compressor.GetPreferredCompressionType());
|
|
1934
|
+
return Status::OK();
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1779
1937
|
} // namespace ROCKSDB_NAMESPACE
|