@nxtedition/rocksdb 5.2.21 → 5.2.26
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 +216 -252
- package/binding.gyp +78 -72
- package/deps/rocksdb/build_version.cc +70 -4
- package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
- package/deps/rocksdb/rocksdb/Makefile +459 -469
- package/deps/rocksdb/rocksdb/README.md +4 -4
- package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
- package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
- package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
- package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
- package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
- package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
- package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
- package/deps/rocksdb/rocksdb/db/builder.h +16 -37
- package/deps/rocksdb/rocksdb/db/c.cc +413 -208
- package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
- package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
- package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
- package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
- package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
- package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
- package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
- package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
- package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
- package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
- package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
- package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
- package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
- package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
- package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
- package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
- package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
- package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
- package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
- package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
- package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
- package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
- package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
- package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
- package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
- package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
- package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
- package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
- package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
- package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
- package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
- package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
- package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
- package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
- package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
- package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
- package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
- package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
- package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
- package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
- package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
- package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
- package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
- package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
- package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
- package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
- package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
- package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
- package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
- package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
- package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
- package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
- package/deps/rocksdb/rocksdb/env/env.cc +632 -42
- package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
- package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
- package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
- package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
- package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
- package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
- package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
- package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
- package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
- package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
- package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
- package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
- package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
- package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
- package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
- package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
- package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
- package/deps/rocksdb/rocksdb/file/filename.h +13 -8
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
- package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
- package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
- package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
- package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
- package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
- package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
- package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
- package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
- package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
- package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
- package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
- package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
- package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
- package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
- package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
- package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
- package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
- package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
- package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
- package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
- package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
- package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
- package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
- package/deps/rocksdb/rocksdb/options/options.cc +49 -17
- package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
- package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
- package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
- package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
- package/deps/rocksdb/rocksdb/port/lang.h +52 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
- package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
- package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
- package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
- package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
- package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
- package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
- package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
- package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
- package/deps/rocksdb/rocksdb/python.mk +9 -0
- package/deps/rocksdb/rocksdb/src.mk +82 -34
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
- package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
- package/deps/rocksdb/rocksdb/table/format.cc +258 -104
- package/deps/rocksdb/rocksdb/table/format.h +120 -109
- package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
- package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
- package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
- package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
- package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
- package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
- package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
- package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
- package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
- package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
- package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
- package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
- package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
- package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
- package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
- package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
- package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
- package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
- package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
- package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
- package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
- package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
- package/deps/rocksdb/rocksdb/util/channel.h +2 -0
- package/deps/rocksdb/rocksdb/util/coding.h +1 -33
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
- package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
- package/deps/rocksdb/rocksdb/util/compression.h +212 -7
- package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
- package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
- package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
- package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
- package/deps/rocksdb/rocksdb/util/defer.h +30 -1
- package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
- package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
- package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
- package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
- package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
- package/deps/rocksdb/rocksdb/util/hash.h +31 -1
- package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
- package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
- package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
- package/deps/rocksdb/rocksdb/util/heap.h +6 -1
- package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
- package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/util/math.h +74 -7
- package/deps/rocksdb/rocksdb/util/math128.h +13 -1
- package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
- package/deps/rocksdb/rocksdb/util/random.cc +9 -0
- package/deps/rocksdb/rocksdb/util/random.h +6 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
- package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
- package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
- package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
- package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
- package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
- package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
- package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
- package/deps/rocksdb/rocksdb/util/status.cc +32 -29
- package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
- package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
- package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
- package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
- package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
- package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
- package/deps/rocksdb/rocksdb/util/timer.h +55 -46
- package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
- package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
- package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
- package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
- package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
- package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
- package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
- package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
- package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
- package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
- package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
- package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
- package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
- package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
- package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
- package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
- package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
- package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
- package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
- package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
- package/deps/rocksdb/rocksdb.gyp +425 -446
- package/package.json +8 -8
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x86/node.napi.node +0 -0
- package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
- package/deps/rocksdb/rocksdb/hdfs/README +0 -23
- package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
- package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
- package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
- package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
- package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
- package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
- package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
- package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
- package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
- package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
- package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
- package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
- package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
- package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
- package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
- package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
- package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
- package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
- package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
- package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
- package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
|
@@ -50,6 +50,9 @@
|
|
|
50
50
|
#if ZSTD_VERSION_NUMBER >= 10103 // v1.1.3+
|
|
51
51
|
#include <zdict.h>
|
|
52
52
|
#endif // ZSTD_VERSION_NUMBER >= 10103
|
|
53
|
+
#if ZSTD_VERSION_NUMBER >= 10400 // v1.4.0+
|
|
54
|
+
#define ZSTD_STREAMING
|
|
55
|
+
#endif // ZSTD_VERSION_NUMBER >= 10400
|
|
53
56
|
namespace ROCKSDB_NAMESPACE {
|
|
54
57
|
// Need this for the context allocation override
|
|
55
58
|
// On windows we need to do this explicitly
|
|
@@ -514,6 +517,26 @@ inline bool ZSTDNotFinal_Supported() {
|
|
|
514
517
|
#endif
|
|
515
518
|
}
|
|
516
519
|
|
|
520
|
+
inline bool ZSTD_Streaming_Supported() {
|
|
521
|
+
#if defined(ZSTD) && defined(ZSTD_STREAMING)
|
|
522
|
+
return true;
|
|
523
|
+
#else
|
|
524
|
+
return false;
|
|
525
|
+
#endif
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
inline bool StreamingCompressionTypeSupported(
|
|
529
|
+
CompressionType compression_type) {
|
|
530
|
+
switch (compression_type) {
|
|
531
|
+
case kNoCompression:
|
|
532
|
+
return true;
|
|
533
|
+
case kZSTD:
|
|
534
|
+
return ZSTD_Streaming_Supported();
|
|
535
|
+
default:
|
|
536
|
+
return false;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
517
540
|
inline bool CompressionTypeSupported(CompressionType compression_type) {
|
|
518
541
|
switch (compression_type) {
|
|
519
542
|
case kNoCompression:
|
|
@@ -627,6 +650,9 @@ inline std::string CompressionOptionsToString(
|
|
|
627
650
|
result.append("enabled=")
|
|
628
651
|
.append(ToString(compression_options.enabled))
|
|
629
652
|
.append("; ");
|
|
653
|
+
result.append("max_dict_buffer_bytes=")
|
|
654
|
+
.append(ToString(compression_options.max_dict_buffer_bytes))
|
|
655
|
+
.append("; ");
|
|
630
656
|
return result;
|
|
631
657
|
}
|
|
632
658
|
|
|
@@ -721,9 +747,6 @@ inline bool Zlib_Compress(const CompressionInfo& info,
|
|
|
721
747
|
output_header_len = compression::PutDecompressedSizeInfo(
|
|
722
748
|
output, static_cast<uint32_t>(length));
|
|
723
749
|
}
|
|
724
|
-
// Resize output to be the plain data length.
|
|
725
|
-
// This may not be big enough if the compression actually expands data.
|
|
726
|
-
output->resize(output_header_len + length);
|
|
727
750
|
|
|
728
751
|
// The memLevel parameter specifies how much memory should be allocated for
|
|
729
752
|
// the internal compression state.
|
|
@@ -757,12 +780,17 @@ inline bool Zlib_Compress(const CompressionInfo& info,
|
|
|
757
780
|
}
|
|
758
781
|
}
|
|
759
782
|
|
|
783
|
+
// Get an upper bound on the compressed size.
|
|
784
|
+
size_t upper_bound =
|
|
785
|
+
deflateBound(&_stream, static_cast<unsigned long>(length));
|
|
786
|
+
output->resize(output_header_len + upper_bound);
|
|
787
|
+
|
|
760
788
|
// Compress the input, and put compressed data in output.
|
|
761
789
|
_stream.next_in = (Bytef*)input;
|
|
762
790
|
_stream.avail_in = static_cast<unsigned int>(length);
|
|
763
791
|
|
|
764
792
|
// Initialize the output size.
|
|
765
|
-
_stream.avail_out = static_cast<unsigned int>(
|
|
793
|
+
_stream.avail_out = static_cast<unsigned int>(upper_bound);
|
|
766
794
|
_stream.next_out = reinterpret_cast<Bytef*>(&(*output)[output_header_len]);
|
|
767
795
|
|
|
768
796
|
bool compressed = false;
|
|
@@ -1133,7 +1161,11 @@ inline CacheAllocationPtr LZ4_Uncompress(const UncompressionInfo& info,
|
|
|
1133
1161
|
if (input_length < 8) {
|
|
1134
1162
|
return nullptr;
|
|
1135
1163
|
}
|
|
1136
|
-
|
|
1164
|
+
if (port::kLittleEndian) {
|
|
1165
|
+
memcpy(&output_len, input_data, sizeof(output_len));
|
|
1166
|
+
} else {
|
|
1167
|
+
memcpy(&output_len, input_data + 4, sizeof(output_len));
|
|
1168
|
+
}
|
|
1137
1169
|
input_length -= 8;
|
|
1138
1170
|
input_data += 8;
|
|
1139
1171
|
}
|
|
@@ -1221,8 +1253,10 @@ inline bool LZ4HC_Compress(const CompressionInfo& info,
|
|
|
1221
1253
|
const char* compression_dict_data =
|
|
1222
1254
|
compression_dict.size() > 0 ? compression_dict.data() : nullptr;
|
|
1223
1255
|
size_t compression_dict_size = compression_dict.size();
|
|
1224
|
-
|
|
1225
|
-
|
|
1256
|
+
if (compression_dict_data != nullptr) {
|
|
1257
|
+
LZ4_loadDictHC(stream, compression_dict_data,
|
|
1258
|
+
static_cast<int>(compression_dict_size));
|
|
1259
|
+
}
|
|
1226
1260
|
|
|
1227
1261
|
#if LZ4_VERSION_NUMBER >= 10700 // r129+
|
|
1228
1262
|
outlen =
|
|
@@ -1526,4 +1560,175 @@ inline CacheAllocationPtr UncompressData(
|
|
|
1526
1560
|
}
|
|
1527
1561
|
}
|
|
1528
1562
|
|
|
1563
|
+
// Records the compression type for subsequent WAL records.
|
|
1564
|
+
class CompressionTypeRecord {
|
|
1565
|
+
public:
|
|
1566
|
+
explicit CompressionTypeRecord(CompressionType compression_type)
|
|
1567
|
+
: compression_type_(compression_type) {}
|
|
1568
|
+
|
|
1569
|
+
CompressionType GetCompressionType() const { return compression_type_; }
|
|
1570
|
+
|
|
1571
|
+
inline void EncodeTo(std::string* dst) const {
|
|
1572
|
+
assert(dst != nullptr);
|
|
1573
|
+
PutFixed32(dst, compression_type_);
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
inline Status DecodeFrom(Slice* src) {
|
|
1577
|
+
constexpr char class_name[] = "CompressionTypeRecord";
|
|
1578
|
+
|
|
1579
|
+
uint32_t val;
|
|
1580
|
+
if (!GetFixed32(src, &val)) {
|
|
1581
|
+
return Status::Corruption(class_name,
|
|
1582
|
+
"Error decoding WAL compression type");
|
|
1583
|
+
}
|
|
1584
|
+
CompressionType compression_type = static_cast<CompressionType>(val);
|
|
1585
|
+
if (!StreamingCompressionTypeSupported(compression_type)) {
|
|
1586
|
+
return Status::Corruption(class_name,
|
|
1587
|
+
"WAL compression type not supported");
|
|
1588
|
+
}
|
|
1589
|
+
compression_type_ = compression_type;
|
|
1590
|
+
return Status::OK();
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
inline std::string DebugString() const {
|
|
1594
|
+
return "compression_type: " + CompressionTypeToString(compression_type_);
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
private:
|
|
1598
|
+
CompressionType compression_type_;
|
|
1599
|
+
};
|
|
1600
|
+
|
|
1601
|
+
// Base class to implement compression for a stream of buffers.
|
|
1602
|
+
// Instantiate an implementation of the class using Create() with the
|
|
1603
|
+
// compression type and use Compress() repeatedly.
|
|
1604
|
+
// The output buffer needs to be at least max_output_len.
|
|
1605
|
+
// Call Reset() in between frame boundaries or in case of an error.
|
|
1606
|
+
// NOTE: This class is not thread safe.
|
|
1607
|
+
class StreamingCompress {
|
|
1608
|
+
public:
|
|
1609
|
+
StreamingCompress(CompressionType compression_type,
|
|
1610
|
+
const CompressionOptions& opts,
|
|
1611
|
+
uint32_t compress_format_version, size_t max_output_len)
|
|
1612
|
+
: compression_type_(compression_type),
|
|
1613
|
+
opts_(opts),
|
|
1614
|
+
compress_format_version_(compress_format_version),
|
|
1615
|
+
max_output_len_(max_output_len) {}
|
|
1616
|
+
virtual ~StreamingCompress() = default;
|
|
1617
|
+
// compress should be called repeatedly with the same input till the method
|
|
1618
|
+
// returns 0
|
|
1619
|
+
// Parameters:
|
|
1620
|
+
// input - buffer to compress
|
|
1621
|
+
// input_size - size of input buffer
|
|
1622
|
+
// output - compressed buffer allocated by caller, should be at least
|
|
1623
|
+
// max_output_len
|
|
1624
|
+
// output_size - size of the output buffer
|
|
1625
|
+
// Returns -1 for errors, the remaining size of the input buffer that needs to
|
|
1626
|
+
// be compressed
|
|
1627
|
+
virtual int Compress(const char* input, size_t input_size, char* output,
|
|
1628
|
+
size_t* output_pos) = 0;
|
|
1629
|
+
// static method to create object of a class inherited from StreamingCompress
|
|
1630
|
+
// based on the actual compression type.
|
|
1631
|
+
static StreamingCompress* Create(CompressionType compression_type,
|
|
1632
|
+
const CompressionOptions& opts,
|
|
1633
|
+
uint32_t compress_format_version,
|
|
1634
|
+
size_t max_output_len);
|
|
1635
|
+
virtual void Reset() = 0;
|
|
1636
|
+
|
|
1637
|
+
protected:
|
|
1638
|
+
const CompressionType compression_type_;
|
|
1639
|
+
const CompressionOptions opts_;
|
|
1640
|
+
const uint32_t compress_format_version_;
|
|
1641
|
+
const size_t max_output_len_;
|
|
1642
|
+
};
|
|
1643
|
+
|
|
1644
|
+
// Base class to uncompress a stream of compressed buffers.
|
|
1645
|
+
// Instantiate an implementation of the class using Create() with the
|
|
1646
|
+
// compression type and use Uncompress() repeatedly.
|
|
1647
|
+
// The output buffer needs to be at least max_output_len.
|
|
1648
|
+
// Call Reset() in between frame boundaries or in case of an error.
|
|
1649
|
+
// NOTE: This class is not thread safe.
|
|
1650
|
+
class StreamingUncompress {
|
|
1651
|
+
public:
|
|
1652
|
+
StreamingUncompress(CompressionType compression_type,
|
|
1653
|
+
uint32_t compress_format_version, size_t max_output_len)
|
|
1654
|
+
: compression_type_(compression_type),
|
|
1655
|
+
compress_format_version_(compress_format_version),
|
|
1656
|
+
max_output_len_(max_output_len) {}
|
|
1657
|
+
virtual ~StreamingUncompress() = default;
|
|
1658
|
+
// uncompress should be called again with the same input if output_size is
|
|
1659
|
+
// equal to max_output_len or with the next input fragment.
|
|
1660
|
+
// Parameters:
|
|
1661
|
+
// input - buffer to uncompress
|
|
1662
|
+
// input_size - size of input buffer
|
|
1663
|
+
// output - uncompressed buffer allocated by caller, should be at least
|
|
1664
|
+
// max_output_len
|
|
1665
|
+
// output_size - size of the output buffer
|
|
1666
|
+
// Returns -1 for errors, remaining input to be processed otherwise.
|
|
1667
|
+
virtual int Uncompress(const char* input, size_t input_size, char* output,
|
|
1668
|
+
size_t* output_pos) = 0;
|
|
1669
|
+
static StreamingUncompress* Create(CompressionType compression_type,
|
|
1670
|
+
uint32_t compress_format_version,
|
|
1671
|
+
size_t max_output_len);
|
|
1672
|
+
virtual void Reset() = 0;
|
|
1673
|
+
|
|
1674
|
+
protected:
|
|
1675
|
+
CompressionType compression_type_;
|
|
1676
|
+
uint32_t compress_format_version_;
|
|
1677
|
+
size_t max_output_len_;
|
|
1678
|
+
};
|
|
1679
|
+
|
|
1680
|
+
class ZSTDStreamingCompress final : public StreamingCompress {
|
|
1681
|
+
public:
|
|
1682
|
+
explicit ZSTDStreamingCompress(const CompressionOptions& opts,
|
|
1683
|
+
uint32_t compress_format_version,
|
|
1684
|
+
size_t max_output_len)
|
|
1685
|
+
: StreamingCompress(kZSTD, opts, compress_format_version,
|
|
1686
|
+
max_output_len) {
|
|
1687
|
+
#ifdef ZSTD_STREAMING
|
|
1688
|
+
cctx_ = ZSTD_createCCtx();
|
|
1689
|
+
assert(cctx_ != nullptr);
|
|
1690
|
+
input_buffer_ = {/*src=*/nullptr, /*size=*/0, /*pos=*/0};
|
|
1691
|
+
#endif
|
|
1692
|
+
}
|
|
1693
|
+
~ZSTDStreamingCompress() override {
|
|
1694
|
+
#ifdef ZSTD_STREAMING
|
|
1695
|
+
ZSTD_freeCCtx(cctx_);
|
|
1696
|
+
#endif
|
|
1697
|
+
}
|
|
1698
|
+
int Compress(const char* input, size_t input_size, char* output,
|
|
1699
|
+
size_t* output_pos) override;
|
|
1700
|
+
void Reset() override;
|
|
1701
|
+
#ifdef ZSTD_STREAMING
|
|
1702
|
+
ZSTD_CCtx* cctx_;
|
|
1703
|
+
ZSTD_inBuffer input_buffer_;
|
|
1704
|
+
#endif
|
|
1705
|
+
};
|
|
1706
|
+
|
|
1707
|
+
class ZSTDStreamingUncompress final : public StreamingUncompress {
|
|
1708
|
+
public:
|
|
1709
|
+
explicit ZSTDStreamingUncompress(uint32_t compress_format_version,
|
|
1710
|
+
size_t max_output_len)
|
|
1711
|
+
: StreamingUncompress(kZSTD, compress_format_version, max_output_len) {
|
|
1712
|
+
#ifdef ZSTD_STREAMING
|
|
1713
|
+
dctx_ = ZSTD_createDCtx();
|
|
1714
|
+
assert(dctx_ != nullptr);
|
|
1715
|
+
input_buffer_ = {/*src=*/nullptr, /*size=*/0, /*pos=*/0};
|
|
1716
|
+
#endif
|
|
1717
|
+
}
|
|
1718
|
+
~ZSTDStreamingUncompress() override {
|
|
1719
|
+
#ifdef ZSTD_STREAMING
|
|
1720
|
+
ZSTD_freeDCtx(dctx_);
|
|
1721
|
+
#endif
|
|
1722
|
+
}
|
|
1723
|
+
int Uncompress(const char* input, size_t input_size, char* output,
|
|
1724
|
+
size_t* output_size) override;
|
|
1725
|
+
void Reset() override;
|
|
1726
|
+
|
|
1727
|
+
private:
|
|
1728
|
+
#ifdef ZSTD_STREAMING
|
|
1729
|
+
ZSTD_DCtx* dctx_;
|
|
1730
|
+
ZSTD_inBuffer input_buffer_;
|
|
1731
|
+
#endif
|
|
1732
|
+
};
|
|
1733
|
+
|
|
1529
1734
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -65,8 +65,6 @@ static_assert(sizeof(ZSTDCachedData) % CACHE_LINE_SIZE == 0,
|
|
|
65
65
|
"Expected CACHE_LINE_SIZE alignment");
|
|
66
66
|
} // namespace compression_cache
|
|
67
67
|
|
|
68
|
-
using namespace compression_cache;
|
|
69
|
-
|
|
70
68
|
class CompressionContextCache::Rep {
|
|
71
69
|
public:
|
|
72
70
|
Rep() {}
|
|
@@ -82,7 +80,7 @@ class CompressionContextCache::Rep {
|
|
|
82
80
|
}
|
|
83
81
|
|
|
84
82
|
private:
|
|
85
|
-
CoreLocalArray<ZSTDCachedData> per_core_uncompr_;
|
|
83
|
+
CoreLocalArray<compression_cache::ZSTDCachedData> per_core_uncompr_;
|
|
86
84
|
};
|
|
87
85
|
|
|
88
86
|
CompressionContextCache::CompressionContextCache() : rep_(new Rep()) {}
|
|
@@ -10,15 +10,20 @@
|
|
|
10
10
|
// A portable implementation of crc32c, optimized to handle
|
|
11
11
|
// four bytes at a time.
|
|
12
12
|
#include "util/crc32c.h"
|
|
13
|
+
|
|
13
14
|
#include <stdint.h>
|
|
15
|
+
|
|
16
|
+
#include <array>
|
|
17
|
+
#include <utility>
|
|
14
18
|
#ifdef HAVE_SSE42
|
|
15
19
|
#include <nmmintrin.h>
|
|
16
20
|
#include <wmmintrin.h>
|
|
17
21
|
#endif
|
|
22
|
+
|
|
18
23
|
#include "port/lang.h"
|
|
19
24
|
#include "util/coding.h"
|
|
20
|
-
|
|
21
25
|
#include "util/crc32c_arm64.h"
|
|
26
|
+
#include "util/math.h"
|
|
22
27
|
|
|
23
28
|
#ifdef __powerpc64__
|
|
24
29
|
#include "util/crc32c_ppc.h"
|
|
@@ -454,7 +459,7 @@ static bool isPCLMULQDQ() {
|
|
|
454
459
|
#endif // HAVE_POWER8
|
|
455
460
|
#endif // HAVE_ARM64_CRC
|
|
456
461
|
|
|
457
|
-
|
|
462
|
+
using Function = uint32_t (*)(uint32_t, const char*, size_t);
|
|
458
463
|
|
|
459
464
|
#if defined(HAVE_POWER8) && defined(HAS_ALTIVEC)
|
|
460
465
|
uint32_t ExtendPPCImpl(uint32_t crc, const char *buf, size_t size) {
|
|
@@ -1278,6 +1283,164 @@ uint32_t Extend(uint32_t crc, const char* buf, size_t size) {
|
|
|
1278
1283
|
return ChosenExtend(crc, buf, size);
|
|
1279
1284
|
}
|
|
1280
1285
|
|
|
1286
|
+
// The code for crc32c combine, copied with permission from folly
|
|
1287
|
+
|
|
1288
|
+
// Standard galois-field multiply. The only modification is that a,
|
|
1289
|
+
// b, m, and p are all bit-reflected.
|
|
1290
|
+
//
|
|
1291
|
+
// https://en.wikipedia.org/wiki/Finite_field_arithmetic
|
|
1292
|
+
static constexpr uint32_t gf_multiply_sw_1(
|
|
1293
|
+
size_t i, uint32_t p, uint32_t a, uint32_t b, uint32_t m) {
|
|
1294
|
+
// clang-format off
|
|
1295
|
+
return i == 32 ? p : gf_multiply_sw_1(
|
|
1296
|
+
/* i = */ i + 1,
|
|
1297
|
+
/* p = */ p ^ ((0u-((b >> 31) & 1)) & a),
|
|
1298
|
+
/* a = */ (a >> 1) ^ ((0u-(a & 1)) & m),
|
|
1299
|
+
/* b = */ b << 1,
|
|
1300
|
+
/* m = */ m);
|
|
1301
|
+
// clang-format on
|
|
1302
|
+
}
|
|
1303
|
+
static constexpr uint32_t gf_multiply_sw(uint32_t a, uint32_t b, uint32_t m) {
|
|
1304
|
+
return gf_multiply_sw_1(/* i = */ 0, /* p = */ 0, a, b, m);
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
static constexpr uint32_t gf_square_sw(uint32_t a, uint32_t m) {
|
|
1308
|
+
return gf_multiply_sw(a, a, m);
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
template <size_t i, uint32_t m>
|
|
1312
|
+
struct gf_powers_memo {
|
|
1313
|
+
static constexpr uint32_t value =
|
|
1314
|
+
gf_square_sw(gf_powers_memo<i - 1, m>::value, m);
|
|
1315
|
+
};
|
|
1316
|
+
template <uint32_t m>
|
|
1317
|
+
struct gf_powers_memo<0, m> {
|
|
1318
|
+
static constexpr uint32_t value = m;
|
|
1319
|
+
};
|
|
1320
|
+
|
|
1321
|
+
template <typename T, T... Ints>
|
|
1322
|
+
struct integer_sequence {
|
|
1323
|
+
using value_type = T;
|
|
1324
|
+
static constexpr size_t size() { return sizeof...(Ints); }
|
|
1325
|
+
};
|
|
1326
|
+
|
|
1327
|
+
template <typename T, std::size_t N, T... Is>
|
|
1328
|
+
struct make_integer_sequence : make_integer_sequence<T, N - 1, N - 1, Is...> {};
|
|
1329
|
+
|
|
1330
|
+
template <typename T, T... Is>
|
|
1331
|
+
struct make_integer_sequence<T, 0, Is...> : integer_sequence<T, Is...> {};
|
|
1332
|
+
|
|
1333
|
+
template <std::size_t N>
|
|
1334
|
+
using make_index_sequence = make_integer_sequence<std::size_t, N>;
|
|
1335
|
+
|
|
1336
|
+
template <uint32_t m>
|
|
1337
|
+
struct gf_powers_make {
|
|
1338
|
+
template <size_t... i>
|
|
1339
|
+
using index_sequence = integer_sequence<size_t, i...>;
|
|
1340
|
+
template <size_t... i>
|
|
1341
|
+
constexpr std::array<uint32_t, sizeof...(i)> operator()(
|
|
1342
|
+
index_sequence<i...>) const {
|
|
1343
|
+
return std::array<uint32_t, sizeof...(i)>{{gf_powers_memo<i, m>::value...}};
|
|
1344
|
+
}
|
|
1345
|
+
};
|
|
1346
|
+
|
|
1347
|
+
static constexpr uint32_t crc32c_m = 0x82f63b78;
|
|
1348
|
+
|
|
1349
|
+
static constexpr std::array<uint32_t, 62> const crc32c_powers =
|
|
1350
|
+
gf_powers_make<crc32c_m>{}(make_index_sequence<62>{});
|
|
1351
|
+
|
|
1352
|
+
// Expects a "pure" crc (see Crc32cCombine)
|
|
1353
|
+
static uint32_t Crc32AppendZeroes(
|
|
1354
|
+
uint32_t crc, size_t len_over_4, uint32_t polynomial,
|
|
1355
|
+
std::array<uint32_t, 62> const& powers_array) {
|
|
1356
|
+
auto powers = powers_array.data();
|
|
1357
|
+
// Append by multiplying by consecutive powers of two of the zeroes
|
|
1358
|
+
// array
|
|
1359
|
+
size_t len_bits = len_over_4;
|
|
1360
|
+
|
|
1361
|
+
while (len_bits) {
|
|
1362
|
+
// Advance directly to next bit set.
|
|
1363
|
+
auto r = CountTrailingZeroBits(len_bits);
|
|
1364
|
+
len_bits >>= r;
|
|
1365
|
+
powers += r;
|
|
1366
|
+
|
|
1367
|
+
crc = gf_multiply_sw(crc, *powers, polynomial);
|
|
1368
|
+
|
|
1369
|
+
len_bits >>= 1;
|
|
1370
|
+
powers++;
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
return crc;
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
static inline uint32_t InvertedToPure(uint32_t crc) { return ~crc; }
|
|
1377
|
+
|
|
1378
|
+
static inline uint32_t PureToInverted(uint32_t crc) { return ~crc; }
|
|
1379
|
+
|
|
1380
|
+
static inline uint32_t PureExtend(uint32_t crc, const char* buf, size_t size) {
|
|
1381
|
+
return InvertedToPure(Extend(PureToInverted(crc), buf, size));
|
|
1382
|
+
}
|
|
1383
|
+
|
|
1384
|
+
// Background:
|
|
1385
|
+
// RocksDB uses two kinds of crc32c values: masked and unmasked. Neither is
|
|
1386
|
+
// a "pure" CRC because a pure CRC satisfies (^ for xor)
|
|
1387
|
+
// crc(a ^ b) = crc(a) ^ crc(b)
|
|
1388
|
+
// The unmasked is closest, and this function takes unmasked crc32c values.
|
|
1389
|
+
// The unmasked values are impure in two ways:
|
|
1390
|
+
// * The initial setting at the start of CRC computation is all 1 bits
|
|
1391
|
+
// (like -1) instead of zero.
|
|
1392
|
+
// * The result has all bits invered.
|
|
1393
|
+
// Note that together, these result in the empty string having a crc32c of
|
|
1394
|
+
// zero. See
|
|
1395
|
+
// https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#CRC_variants
|
|
1396
|
+
//
|
|
1397
|
+
// Simplified version of strategy, using xor through pure CRCs (+ for concat):
|
|
1398
|
+
//
|
|
1399
|
+
// pure_crc(str1 + str2) = pure_crc(str1 + zeros(len(str2))) ^
|
|
1400
|
+
// pure_crc(zeros(len(str1)) + str2)
|
|
1401
|
+
//
|
|
1402
|
+
// because the xor of these two zero-padded strings is str1 + str2. For pure
|
|
1403
|
+
// CRC, leading zeros don't affect the result, so we only need
|
|
1404
|
+
//
|
|
1405
|
+
// pure_crc(str1 + str2) = pure_crc(str1 + zeros(len(str2))) ^
|
|
1406
|
+
// pure_crc(str2)
|
|
1407
|
+
//
|
|
1408
|
+
// Considering we aren't working with pure CRCs, what is actually in the input?
|
|
1409
|
+
//
|
|
1410
|
+
// crc1 = PureToInverted(PureExtendCrc32c(-1, zeros, crc1len) ^
|
|
1411
|
+
// PureCrc32c(str1, crc1len))
|
|
1412
|
+
// crc2 = PureToInverted(PureExtendCrc32c(-1, zeros, crc2len) ^
|
|
1413
|
+
// PureCrc32c(str2, crc2len))
|
|
1414
|
+
//
|
|
1415
|
+
// The result we want to compute is
|
|
1416
|
+
// combined = PureToInverted(PureExtendCrc32c(PureExtendCrc32c(-1, zeros,
|
|
1417
|
+
// crc1len) ^
|
|
1418
|
+
// PureCrc32c(str1, crc1len),
|
|
1419
|
+
// zeros, crc2len) ^
|
|
1420
|
+
// PureCrc32c(str2, crc2len))
|
|
1421
|
+
//
|
|
1422
|
+
// Thus, in addition to extending crc1 over the length of str2 in (virtual)
|
|
1423
|
+
// zeros, we need to cancel out the -1 initializer that was used in computing
|
|
1424
|
+
// crc2. To cancel it out, we also need to extend it over crc2len in zeros.
|
|
1425
|
+
// To simplify, since the end of str1 and that -1 initializer for crc2 are at
|
|
1426
|
+
// the same logical position, we can combine them before we extend over the
|
|
1427
|
+
// zeros.
|
|
1428
|
+
uint32_t Crc32cCombine(uint32_t crc1, uint32_t crc2, size_t crc2len) {
|
|
1429
|
+
uint32_t pure_crc1_with_init = InvertedToPure(crc1);
|
|
1430
|
+
uint32_t pure_crc2_with_init = InvertedToPure(crc2);
|
|
1431
|
+
uint32_t pure_crc2_init = static_cast<uint32_t>(-1);
|
|
1432
|
+
|
|
1433
|
+
// Append up to 32 bits of zeroes in the normal way
|
|
1434
|
+
char zeros[4] = {0, 0, 0, 0};
|
|
1435
|
+
auto len = crc2len & 3;
|
|
1436
|
+
uint32_t tmp = pure_crc1_with_init ^ pure_crc2_init;
|
|
1437
|
+
if (len) {
|
|
1438
|
+
tmp = PureExtend(tmp, zeros, len);
|
|
1439
|
+
}
|
|
1440
|
+
return PureToInverted(
|
|
1441
|
+
Crc32AppendZeroes(tmp, crc2len / 4, crc32c_m, crc32c_powers) ^
|
|
1442
|
+
pure_crc2_with_init);
|
|
1443
|
+
}
|
|
1281
1444
|
|
|
1282
1445
|
} // namespace crc32c
|
|
1283
1446
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -24,6 +24,12 @@ extern std::string IsFastCrc32Supported();
|
|
|
24
24
|
// crc32c of a stream of data.
|
|
25
25
|
extern uint32_t Extend(uint32_t init_crc, const char* data, size_t n);
|
|
26
26
|
|
|
27
|
+
// Takes two unmasked crc32c values, and the length of the string from
|
|
28
|
+
// which `crc2` was computed, and computes a crc32c value for the
|
|
29
|
+
// concatenation of the original two input strings. Running time is
|
|
30
|
+
// ~ log(crc2len).
|
|
31
|
+
extern uint32_t Crc32cCombine(uint32_t crc1, uint32_t crc2, size_t crc2len);
|
|
32
|
+
|
|
27
33
|
// Return the crc32c of data[0,n-1]
|
|
28
34
|
inline uint32_t Value(const char* data, size_t n) {
|
|
29
35
|
return Extend(0, data, n);
|
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
#ifndef HWCAP_PMULL
|
|
20
20
|
#define HWCAP_PMULL (1 << 4)
|
|
21
21
|
#endif
|
|
22
|
+
#if defined(__APPLE__)
|
|
23
|
+
#include <sys/sysctl.h>
|
|
24
|
+
#endif
|
|
22
25
|
|
|
23
26
|
#ifdef HAVE_ARM64_CRYPTO
|
|
24
27
|
/* unfolding to compute 8 * 3 = 24 bytes parallelly */
|
|
@@ -43,6 +46,7 @@
|
|
|
43
46
|
extern bool pmull_runtime_flag;
|
|
44
47
|
|
|
45
48
|
uint32_t crc32c_runtime_check(void) {
|
|
49
|
+
#if !defined(__APPLE__)
|
|
46
50
|
uint64_t auxv = 0;
|
|
47
51
|
#if defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT)
|
|
48
52
|
auxv = getauxval(AT_HWCAP);
|
|
@@ -50,9 +54,16 @@ uint32_t crc32c_runtime_check(void) {
|
|
|
50
54
|
elf_aux_info(AT_HWCAP, &auxv, sizeof(auxv));
|
|
51
55
|
#endif
|
|
52
56
|
return (auxv & HWCAP_CRC32) != 0;
|
|
57
|
+
#else
|
|
58
|
+
int r;
|
|
59
|
+
size_t l = sizeof(r);
|
|
60
|
+
if (sysctlbyname("hw.optional.armv8_crc32", &r, &l, NULL, 0) == -1) return 0;
|
|
61
|
+
return r == 1;
|
|
62
|
+
#endif
|
|
53
63
|
}
|
|
54
64
|
|
|
55
65
|
bool crc32c_pmull_runtime_check(void) {
|
|
66
|
+
#if !defined(__APPLE__)
|
|
56
67
|
uint64_t auxv = 0;
|
|
57
68
|
#if defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT)
|
|
58
69
|
auxv = getauxval(AT_HWCAP);
|
|
@@ -60,6 +71,9 @@ bool crc32c_pmull_runtime_check(void) {
|
|
|
60
71
|
elf_aux_info(AT_HWCAP, &auxv, sizeof(auxv));
|
|
61
72
|
#endif
|
|
62
73
|
return (auxv & HWCAP_PMULL) != 0;
|
|
74
|
+
#else
|
|
75
|
+
return true;
|
|
76
|
+
#endif
|
|
63
77
|
}
|
|
64
78
|
|
|
65
79
|
#ifdef ROCKSDB_UBSAN_RUN
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
// Use of this source code is governed by a BSD-style license that can be
|
|
8
8
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
9
|
#include "util/crc32c.h"
|
|
10
|
+
|
|
10
11
|
#include "test_util/testharness.h"
|
|
11
12
|
#include "util/coding.h"
|
|
13
|
+
#include "util/random.h"
|
|
12
14
|
|
|
13
15
|
namespace ROCKSDB_NAMESPACE {
|
|
14
16
|
namespace crc32c {
|
|
@@ -137,6 +139,51 @@ TEST(CRC, Mask) {
|
|
|
137
139
|
ASSERT_EQ(crc, Unmask(Unmask(Mask(Mask(crc)))));
|
|
138
140
|
}
|
|
139
141
|
|
|
142
|
+
TEST(CRC, Crc32cCombineBasicTest) {
|
|
143
|
+
uint32_t crc1 = Value("hello ", 6);
|
|
144
|
+
uint32_t crc2 = Value("world", 5);
|
|
145
|
+
uint32_t crc3 = Value("hello world", 11);
|
|
146
|
+
uint32_t crc1_2_combine = Crc32cCombine(crc1, crc2, 5);
|
|
147
|
+
ASSERT_EQ(crc3, crc1_2_combine);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
TEST(CRC, Crc32cCombineOrderMattersTest) {
|
|
151
|
+
uint32_t crc1 = Value("hello ", 6);
|
|
152
|
+
uint32_t crc2 = Value("world", 5);
|
|
153
|
+
uint32_t crc3 = Value("hello world", 11);
|
|
154
|
+
uint32_t crc2_1_combine = Crc32cCombine(crc2, crc1, 6);
|
|
155
|
+
ASSERT_NE(crc3, crc2_1_combine);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
TEST(CRC, Crc32cCombineFullCoverTest) {
|
|
159
|
+
int scale = 4 * 1024;
|
|
160
|
+
Random rnd(test::RandomSeed());
|
|
161
|
+
int size_1 = 1024 * 1024;
|
|
162
|
+
std::string s1 = rnd.RandomBinaryString(size_1);
|
|
163
|
+
uint32_t crc1 = Value(s1.data(), size_1);
|
|
164
|
+
for (int i = 0; i < scale; i++) {
|
|
165
|
+
int size_2 = i;
|
|
166
|
+
std::string s2 = rnd.RandomBinaryString(size_2);
|
|
167
|
+
uint32_t crc2 = Value(s2.data(), s2.size());
|
|
168
|
+
uint32_t crc1_2 = Extend(crc1, s2.data(), s2.size());
|
|
169
|
+
uint32_t crc1_2_combine = Crc32cCombine(crc1, crc2, size_2);
|
|
170
|
+
ASSERT_EQ(crc1_2, crc1_2_combine);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
TEST(CRC, Crc32cCombineBigSizeTest) {
|
|
175
|
+
Random rnd(test::RandomSeed());
|
|
176
|
+
int size_1 = 1024 * 1024;
|
|
177
|
+
std::string s1 = rnd.RandomBinaryString(size_1);
|
|
178
|
+
uint32_t crc1 = Value(s1.data(), size_1);
|
|
179
|
+
int size_2 = 16 * 1024 * 1024 - 1;
|
|
180
|
+
std::string s2 = rnd.RandomBinaryString(size_2);
|
|
181
|
+
uint32_t crc2 = Value(s2.data(), s2.size());
|
|
182
|
+
uint32_t crc1_2 = Extend(crc1, s2.data(), s2.size());
|
|
183
|
+
uint32_t crc1_2_combine = Crc32cCombine(crc1, crc2, size_2);
|
|
184
|
+
ASSERT_EQ(crc1_2, crc1_2_combine);
|
|
185
|
+
}
|
|
186
|
+
|
|
140
187
|
} // namespace crc32c
|
|
141
188
|
} // namespace ROCKSDB_NAMESPACE
|
|
142
189
|
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
#include <functional>
|
|
9
9
|
|
|
10
|
+
#include "rocksdb/rocksdb_namespace.h"
|
|
11
|
+
|
|
10
12
|
namespace ROCKSDB_NAMESPACE {
|
|
11
13
|
|
|
12
14
|
// Defers the execution of the provided function until the Defer
|
|
@@ -38,7 +40,7 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
38
40
|
// lambda passed to Defer, and you can return immediately on failure when necessary.
|
|
39
41
|
class Defer final {
|
|
40
42
|
public:
|
|
41
|
-
Defer(std::function<void()>&& fn) : fn_(std::move(fn)) {}
|
|
43
|
+
explicit Defer(std::function<void()>&& fn) : fn_(std::move(fn)) {}
|
|
42
44
|
~Defer() { fn_(); }
|
|
43
45
|
|
|
44
46
|
// Disallow copy.
|
|
@@ -49,4 +51,31 @@ class Defer final {
|
|
|
49
51
|
std::function<void()> fn_;
|
|
50
52
|
};
|
|
51
53
|
|
|
54
|
+
// An RAII utility object that saves the current value of an object so that
|
|
55
|
+
// it can be overwritten, and restores it to the saved value when the
|
|
56
|
+
// SaveAndRestore object goes out of scope.
|
|
57
|
+
template <typename T>
|
|
58
|
+
class SaveAndRestore {
|
|
59
|
+
public:
|
|
60
|
+
// obj is non-null pointer to value to be saved and later restored.
|
|
61
|
+
explicit SaveAndRestore(T* obj) : obj_(obj), saved_(*obj) {}
|
|
62
|
+
// new_value is stored in *obj
|
|
63
|
+
SaveAndRestore(T* obj, const T& new_value)
|
|
64
|
+
: obj_(obj), saved_(std::move(*obj)) {
|
|
65
|
+
*obj = new_value;
|
|
66
|
+
}
|
|
67
|
+
SaveAndRestore(T* obj, T&& new_value) : obj_(obj), saved_(std::move(*obj)) {
|
|
68
|
+
*obj = std::move(new_value);
|
|
69
|
+
}
|
|
70
|
+
~SaveAndRestore() { *obj_ = std::move(saved_); }
|
|
71
|
+
|
|
72
|
+
// No copies
|
|
73
|
+
SaveAndRestore(const SaveAndRestore&) = delete;
|
|
74
|
+
SaveAndRestore& operator=(const SaveAndRestore&) = delete;
|
|
75
|
+
|
|
76
|
+
private:
|
|
77
|
+
T* const obj_;
|
|
78
|
+
T saved_;
|
|
79
|
+
};
|
|
80
|
+
|
|
52
81
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -30,6 +30,17 @@ TEST(DeferTest, FunctionScope) {
|
|
|
30
30
|
ASSERT_EQ(4, v);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
TEST(SaveAndRestoreTest, BlockScope) {
|
|
34
|
+
int v = 1;
|
|
35
|
+
{
|
|
36
|
+
SaveAndRestore<int> sr(&v);
|
|
37
|
+
ASSERT_EQ(v, 1);
|
|
38
|
+
v = 2;
|
|
39
|
+
ASSERT_EQ(v, 2);
|
|
40
|
+
}
|
|
41
|
+
ASSERT_EQ(v, 1);
|
|
42
|
+
}
|
|
43
|
+
|
|
33
44
|
} // namespace ROCKSDB_NAMESPACE
|
|
34
45
|
|
|
35
46
|
int main(int argc, char** argv) {
|