@nxtedition/rocksdb 6.0.1 → 7.0.0-alpha.1
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/BUILDING.md +12 -4
- package/binding.cc +421 -40
- package/deps/rocksdb/build_version.cc +4 -10
- package/deps/rocksdb/rocksdb/CMakeLists.txt +26 -3
- package/deps/rocksdb/rocksdb/Makefile +73 -91
- package/deps/rocksdb/rocksdb/TARGETS +27 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +29 -17
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +511 -0
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +299 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +3 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/common.mk +30 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +3 -3
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -3
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/builder.cc +22 -7
- package/deps/rocksdb/rocksdb/db/c.cc +71 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +28 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +12 -5
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +36 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +54 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +14 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +85 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +23 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +151 -32
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +209 -38
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +404 -32
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -25
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +85 -138
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +68 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +38 -13
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +11 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +15 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +12 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +42 -10
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +54 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +14 -4
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +26 -18
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +8 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +28 -12
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +16 -15
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +6 -4
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +331 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +11 -6
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +68 -7
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +60 -42
- package/deps/rocksdb/rocksdb/db/db_test2.cc +244 -111
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +101 -19
- package/deps/rocksdb/rocksdb/db/db_test_util.h +52 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +5 -175
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_test_util.h +126 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -8
- package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +91 -12
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +2 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/file_indexer.h +1 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +28 -15
- package/deps/rocksdb/rocksdb/db/flush_job.h +4 -0
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +98 -30
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +14 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +12 -12
- package/deps/rocksdb/rocksdb/db/listener_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +2 -2
- package/deps/rocksdb/rocksdb/db/memtable_list.h +1 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -25
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +18 -18
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +13 -2
- package/deps/rocksdb/rocksdb/db/repair_test.cc +37 -15
- package/deps/rocksdb/rocksdb/db/snapshot_checker.h +1 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +3 -1
- package/deps/rocksdb/rocksdb/db/table_cache.cc +20 -130
- package/deps/rocksdb/rocksdb/db/table_cache.h +3 -2
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +140 -0
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +133 -133
- package/deps/rocksdb/rocksdb/db/version_edit.cc +22 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +13 -4
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +14 -14
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -214
- package/deps/rocksdb/rocksdb/db/version_set.h +14 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +154 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -9
- package/deps/rocksdb/rocksdb/db/wal_edit.h +2 -1
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +2 -3
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +178 -30
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +4 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +44 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +0 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +45 -42
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +374 -275
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +53 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +13 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +276 -109
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +63 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +45 -54
- package/deps/rocksdb/rocksdb/env/composite_env.cc +87 -14
- package/deps/rocksdb/rocksdb/env/env.cc +0 -60
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +9 -0
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +1 -1
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -5
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +17 -12
- package/deps/rocksdb/rocksdb/env/io_posix.cc +39 -37
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +9 -9
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +159 -65
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +44 -22
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +142 -17
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +5 -2
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +7 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +60 -40
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +49 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +59 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -44
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +45 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +4 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +91 -40
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +22 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +25 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +378 -103
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +18 -4
- package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +1 -5
- package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +1 -5
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +6 -8
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +5 -3
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +266 -45
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +1 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +4 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +7 -8
- package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +1 -5
- package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +1 -5
- package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +3 -3
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +47 -38
- package/deps/rocksdb/rocksdb/options/configurable.cc +9 -27
- package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/customizable.cc +3 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +379 -318
- package/deps/rocksdb/rocksdb/options/db_options.cc +46 -17
- package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +86 -39
- package/deps/rocksdb/rocksdb/options/options_parser.cc +10 -10
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +12 -7
- package/deps/rocksdb/rocksdb/options/options_test.cc +222 -68
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -15
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +5 -4
- package/deps/rocksdb/rocksdb/port/win/env_win.h +2 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.h +0 -31
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +11 -0
- package/deps/rocksdb/rocksdb/src.mk +6 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +21 -25
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +23 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +52 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +81 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +94 -726
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +21 -15
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +9 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +754 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -73
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +15 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +2 -11
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +59 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +18 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +33 -17
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +0 -61
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +0 -13
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +8 -4
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +65 -7
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +2 -0
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +113 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +1 -1
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +22 -20
- package/deps/rocksdb/rocksdb/table/iterator.cc +1 -81
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +39 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/multiget_context.h +60 -13
- package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +0 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +12 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -4
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +2 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_properties.cc +3 -5
- package/deps/rocksdb/rocksdb/table/table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +202 -78
- package/deps/rocksdb/rocksdb/table/unique_id.cc +84 -25
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +37 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +11 -8
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +8 -4
- package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +17 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +11 -9
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +277 -105
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +186 -42
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +75 -49
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +9 -8
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +26 -4
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +72 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +144 -0
- package/deps/rocksdb/rocksdb/util/autovector_test.cc +4 -4
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -6
- package/deps/rocksdb/rocksdb/util/cleanable.cc +180 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +5 -3
- package/deps/rocksdb/rocksdb/util/compression.h +56 -7
- package/deps/rocksdb/rocksdb/util/coro_utils.h +111 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +148 -0
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +12 -4
- package/deps/rocksdb/rocksdb/util/heap.h +5 -3
- package/deps/rocksdb/rocksdb/util/random.cc +1 -5
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +12 -9
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1 -1
- package/deps/rocksdb/rocksdb/util/ribbon_test.cc +2 -4
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +55 -0
- package/deps/rocksdb/rocksdb/util/slice.cc +8 -9
- package/deps/rocksdb/rocksdb/util/string_util.cc +3 -2
- package/deps/rocksdb/rocksdb/util/string_util.h +0 -13
- package/deps/rocksdb/rocksdb/util/thread_local.cc +4 -23
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +99 -22
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +102 -59
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +38 -36
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +28 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +71 -0
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +5 -5
- package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +10 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +4 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +17 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +7 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +8 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +21 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +69 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +22 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +26 -5
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +17 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +19 -16
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +7 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +20 -13
- package/index.js +187 -3
- package/iterator.js +1 -0
- package/package-lock.json +23687 -0
- package/package.json +2 -30
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/snapshot.js +23 -0
- package/deps/liburing/liburing/README +0 -46
- package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
- package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
- package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
- package/deps/liburing/liburing/test/Makefile +0 -312
- package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
- package/deps/liburing/liburing/test/accept-link.c +0 -251
- package/deps/liburing/liburing/test/accept-reuse.c +0 -164
- package/deps/liburing/liburing/test/accept-test.c +0 -79
- package/deps/liburing/liburing/test/accept.c +0 -476
- package/deps/liburing/liburing/test/across-fork.c +0 -283
- package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
- package/deps/liburing/liburing/test/close-opath.c +0 -122
- package/deps/liburing/liburing/test/config +0 -10
- package/deps/liburing/liburing/test/connect.c +0 -398
- package/deps/liburing/liburing/test/cq-full.c +0 -96
- package/deps/liburing/liburing/test/cq-overflow.c +0 -294
- package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
- package/deps/liburing/liburing/test/cq-ready.c +0 -94
- package/deps/liburing/liburing/test/cq-size.c +0 -58
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
- package/deps/liburing/liburing/test/defer.c +0 -307
- package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
- package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
- package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
- package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
- package/deps/liburing/liburing/test/eventfd.c +0 -112
- package/deps/liburing/liburing/test/fadvise.c +0 -202
- package/deps/liburing/liburing/test/fallocate.c +0 -249
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
- package/deps/liburing/liburing/test/file-register.c +0 -843
- package/deps/liburing/liburing/test/file-update.c +0 -173
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
- package/deps/liburing/liburing/test/fixed-link.c +0 -90
- package/deps/liburing/liburing/test/fsync.c +0 -224
- package/deps/liburing/liburing/test/hardlink.c +0 -136
- package/deps/liburing/liburing/test/helpers.c +0 -135
- package/deps/liburing/liburing/test/helpers.h +0 -67
- package/deps/liburing/liburing/test/io-cancel.c +0 -537
- package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
- package/deps/liburing/liburing/test/io_uring_register.c +0 -664
- package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
- package/deps/liburing/liburing/test/iopoll.c +0 -366
- package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
- package/deps/liburing/liburing/test/lfs-openat.c +0 -273
- package/deps/liburing/liburing/test/link-timeout.c +0 -1107
- package/deps/liburing/liburing/test/link.c +0 -496
- package/deps/liburing/liburing/test/link_drain.c +0 -229
- package/deps/liburing/liburing/test/madvise.c +0 -195
- package/deps/liburing/liburing/test/mkdir.c +0 -108
- package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
- package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
- package/deps/liburing/liburing/test/nop.c +0 -115
- package/deps/liburing/liburing/test/open-close.c +0 -146
- package/deps/liburing/liburing/test/openat2.c +0 -240
- package/deps/liburing/liburing/test/personality.c +0 -204
- package/deps/liburing/liburing/test/pipe-eof.c +0 -81
- package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
- package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
- package/deps/liburing/liburing/test/poll-cancel.c +0 -135
- package/deps/liburing/liburing/test/poll-link.c +0 -227
- package/deps/liburing/liburing/test/poll-many.c +0 -208
- package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
- package/deps/liburing/liburing/test/poll-ring.c +0 -48
- package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
- package/deps/liburing/liburing/test/poll.c +0 -109
- package/deps/liburing/liburing/test/probe.c +0 -137
- package/deps/liburing/liburing/test/read-write.c +0 -876
- package/deps/liburing/liburing/test/register-restrictions.c +0 -633
- package/deps/liburing/liburing/test/rename.c +0 -134
- package/deps/liburing/liburing/test/ring-leak.c +0 -173
- package/deps/liburing/liburing/test/ring-leak2.c +0 -249
- package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
- package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
- package/deps/liburing/liburing/test/runtests.sh +0 -170
- package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
- package/deps/liburing/liburing/test/self.c +0 -91
- package/deps/liburing/liburing/test/send_recv.c +0 -291
- package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
- package/deps/liburing/liburing/test/shared-wq.c +0 -84
- package/deps/liburing/liburing/test/short-read.c +0 -75
- package/deps/liburing/liburing/test/shutdown.c +0 -163
- package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
- package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
- package/deps/liburing/liburing/test/socket-rw.c +0 -147
- package/deps/liburing/liburing/test/splice.c +0 -511
- package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
- package/deps/liburing/liburing/test/sq-full.c +0 -45
- package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
- package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
- package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
- package/deps/liburing/liburing/test/sq-space_left.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
- package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
- package/deps/liburing/liburing/test/statx.c +0 -172
- package/deps/liburing/liburing/test/stdout.c +0 -232
- package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
- package/deps/liburing/liburing/test/submit-reuse.c +0 -239
- package/deps/liburing/liburing/test/symlink.c +0 -116
- package/deps/liburing/liburing/test/teardowns.c +0 -58
- package/deps/liburing/liburing/test/thread-exit.c +0 -131
- package/deps/liburing/liburing/test/timeout-new.c +0 -246
- package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
- package/deps/liburing/liburing/test/timeout.c +0 -1354
- package/deps/liburing/liburing/test/unlink.c +0 -111
- package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/python.mk +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -593,9 +593,9 @@ TEST_F(DBPropertiesTest, AggregatedTablePropertiesAtLevel) {
|
|
|
593
593
|
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
594
594
|
ResetTableProperties(&sum_tp);
|
|
595
595
|
for (int level = 0; level < kMaxLevel; ++level) {
|
|
596
|
-
db_->GetProperty(
|
|
597
|
-
|
|
598
|
-
|
|
596
|
+
db_->GetProperty(DB::Properties::kAggregatedTablePropertiesAtLevel +
|
|
597
|
+
std::to_string(level),
|
|
598
|
+
&level_tp_strings[level]);
|
|
599
599
|
ParseTablePropertiesString(level_tp_strings[level], &level_tps[level]);
|
|
600
600
|
sum_tp.data_size += level_tps[level].data_size;
|
|
601
601
|
sum_tp.index_size += level_tps[level].index_size;
|
|
@@ -1091,7 +1091,7 @@ TEST_F(DBPropertiesTest, EstimateCompressionRatio) {
|
|
|
1091
1091
|
for (int j = 0; j < kNumEntriesPerFile; ++j) {
|
|
1092
1092
|
// Put common data ("key") at end to prevent delta encoding from
|
|
1093
1093
|
// compressing the key effectively
|
|
1094
|
-
std::string key =
|
|
1094
|
+
std::string key = std::to_string(i) + std::to_string(j) + "key";
|
|
1095
1095
|
ASSERT_OK(dbfull()->Put(WriteOptions(), key, kVal));
|
|
1096
1096
|
}
|
|
1097
1097
|
ASSERT_OK(Flush());
|
|
@@ -1185,7 +1185,7 @@ class CountingDeleteTabPropCollector : public TablePropertiesCollector {
|
|
|
1185
1185
|
|
|
1186
1186
|
Status Finish(UserCollectedProperties* properties) override {
|
|
1187
1187
|
*properties =
|
|
1188
|
-
UserCollectedProperties{{"num_delete",
|
|
1188
|
+
UserCollectedProperties{{"num_delete", std::to_string(num_deletes_)}};
|
|
1189
1189
|
return Status::OK();
|
|
1190
1190
|
}
|
|
1191
1191
|
|
|
@@ -1215,7 +1215,7 @@ class BlockCountingTablePropertiesCollector : public TablePropertiesCollector {
|
|
|
1215
1215
|
|
|
1216
1216
|
Status Finish(UserCollectedProperties* properties) override {
|
|
1217
1217
|
(*properties)[kNumSampledBlocksPropertyName] =
|
|
1218
|
-
|
|
1218
|
+
std::to_string(num_sampled_blocks_);
|
|
1219
1219
|
return Status::OK();
|
|
1220
1220
|
}
|
|
1221
1221
|
|
|
@@ -1235,7 +1235,7 @@ class BlockCountingTablePropertiesCollector : public TablePropertiesCollector {
|
|
|
1235
1235
|
|
|
1236
1236
|
UserCollectedProperties GetReadableProperties() const override {
|
|
1237
1237
|
return UserCollectedProperties{
|
|
1238
|
-
{kNumSampledBlocksPropertyName,
|
|
1238
|
+
{kNumSampledBlocksPropertyName, std::to_string(num_sampled_blocks_)},
|
|
1239
1239
|
};
|
|
1240
1240
|
}
|
|
1241
1241
|
|
|
@@ -1272,7 +1272,8 @@ TEST_F(DBPropertiesTest, GetUserDefinedTableProperties) {
|
|
|
1272
1272
|
// Create 4 tables
|
|
1273
1273
|
for (int table = 0; table < 4; ++table) {
|
|
1274
1274
|
for (int i = 0; i < 10 + table; ++i) {
|
|
1275
|
-
ASSERT_OK(
|
|
1275
|
+
ASSERT_OK(
|
|
1276
|
+
db_->Put(WriteOptions(), std::to_string(table * 100 + i), "val"));
|
|
1276
1277
|
}
|
|
1277
1278
|
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
1278
1279
|
}
|
|
@@ -1312,7 +1313,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
|
|
|
1312
1313
|
// Create 2 files
|
|
1313
1314
|
for (int table = 0; table < 2; ++table) {
|
|
1314
1315
|
for (int i = 0; i < 10 + table; ++i) {
|
|
1315
|
-
ASSERT_OK(Put(1,
|
|
1316
|
+
ASSERT_OK(Put(1, std::to_string(table * 100 + i), "val"));
|
|
1316
1317
|
}
|
|
1317
1318
|
ASSERT_OK(Flush(1));
|
|
1318
1319
|
}
|
|
@@ -1322,7 +1323,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
|
|
|
1322
1323
|
// Trigger automatic compactions.
|
|
1323
1324
|
for (int table = 0; table < 3; ++table) {
|
|
1324
1325
|
for (int i = 0; i < 10 + table; ++i) {
|
|
1325
|
-
ASSERT_OK(Put(1,
|
|
1326
|
+
ASSERT_OK(Put(1, std::to_string(table * 100 + i), "val"));
|
|
1326
1327
|
}
|
|
1327
1328
|
ASSERT_OK(Flush(1));
|
|
1328
1329
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
@@ -1339,7 +1340,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
|
|
|
1339
1340
|
// Create 4 tables in default column family
|
|
1340
1341
|
for (int table = 0; table < 2; ++table) {
|
|
1341
1342
|
for (int i = 0; i < 10 + table; ++i) {
|
|
1342
|
-
ASSERT_OK(Put(
|
|
1343
|
+
ASSERT_OK(Put(std::to_string(table * 100 + i), "val"));
|
|
1343
1344
|
}
|
|
1344
1345
|
ASSERT_OK(Flush());
|
|
1345
1346
|
}
|
|
@@ -1349,7 +1350,7 @@ TEST_F(DBPropertiesTest, UserDefinedTablePropertiesContext) {
|
|
|
1349
1350
|
// Trigger automatic compactions.
|
|
1350
1351
|
for (int table = 0; table < 3; ++table) {
|
|
1351
1352
|
for (int i = 0; i < 10 + table; ++i) {
|
|
1352
|
-
ASSERT_OK(Put(
|
|
1353
|
+
ASSERT_OK(Put(std::to_string(table * 100 + i), "val"));
|
|
1353
1354
|
}
|
|
1354
1355
|
ASSERT_OK(Flush());
|
|
1355
1356
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
@@ -1545,7 +1546,7 @@ TEST_F(DBPropertiesTest, BlockAddForCompressionSampling) {
|
|
|
1545
1546
|
user_props.end());
|
|
1546
1547
|
ASSERT_EQ(user_props.at(BlockCountingTablePropertiesCollector::
|
|
1547
1548
|
kNumSampledBlocksPropertyName),
|
|
1548
|
-
|
|
1549
|
+
std::to_string(sample_for_compression ? 1 : 0));
|
|
1549
1550
|
}
|
|
1550
1551
|
}
|
|
1551
1552
|
}
|
|
@@ -1742,11 +1743,11 @@ TEST_F(DBPropertiesTest, SstFilesSize) {
|
|
|
1742
1743
|
Reopen(options);
|
|
1743
1744
|
|
|
1744
1745
|
for (int i = 0; i < 10; i++) {
|
|
1745
|
-
ASSERT_OK(Put("key" +
|
|
1746
|
+
ASSERT_OK(Put("key" + std::to_string(i), std::string(1000, 'v')));
|
|
1746
1747
|
}
|
|
1747
1748
|
ASSERT_OK(Flush());
|
|
1748
1749
|
for (int i = 0; i < 5; i++) {
|
|
1749
|
-
ASSERT_OK(Delete("key" +
|
|
1750
|
+
ASSERT_OK(Delete("key" + std::to_string(i)));
|
|
1750
1751
|
}
|
|
1751
1752
|
ASSERT_OK(Flush());
|
|
1752
1753
|
uint64_t sst_size;
|
|
@@ -190,9 +190,10 @@ TEST_F(DBRangeDelTest, MaxCompactionBytesCutsOutputFiles) {
|
|
|
190
190
|
ASSERT_EQ(0, NumTableFilesAtLevel(0));
|
|
191
191
|
ASSERT_EQ(NumTableFilesAtLevel(2), 2);
|
|
192
192
|
|
|
193
|
-
ASSERT_OK(
|
|
194
|
-
db_->DefaultColumnFamily(),
|
|
195
|
-
|
|
193
|
+
ASSERT_OK(
|
|
194
|
+
db_->SetOptions(db_->DefaultColumnFamily(),
|
|
195
|
+
{{"target_file_size_base",
|
|
196
|
+
std::to_string(100 * opts.max_compaction_bytes)}}));
|
|
196
197
|
|
|
197
198
|
// It spans the whole key-range, thus will be included in all output files
|
|
198
199
|
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
|
|
@@ -500,7 +501,8 @@ TEST_F(DBRangeDelTest, ValidUniversalSubcompactionBoundaries) {
|
|
|
500
501
|
1 /* input_level */, 2 /* output_level */, CompactRangeOptions(),
|
|
501
502
|
nullptr /* begin */, nullptr /* end */, true /* exclusive */,
|
|
502
503
|
true /* disallow_trivial_move */,
|
|
503
|
-
|
|
504
|
+
std::numeric_limits<uint64_t>::max() /* max_file_num_to_ignore */,
|
|
505
|
+
"" /*trim_ts*/));
|
|
504
506
|
}
|
|
505
507
|
#endif // ROCKSDB_LITE
|
|
506
508
|
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
//
|
|
6
|
+
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
7
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
8
|
+
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
9
|
+
|
|
10
|
+
#include "db/db_with_timestamp_test_util.h"
|
|
11
|
+
#include "test_util/testutil.h"
|
|
12
|
+
|
|
13
|
+
namespace ROCKSDB_NAMESPACE {
|
|
14
|
+
class DBReadOnlyTestWithTimestamp : public DBBasicTestWithTimestampBase {
|
|
15
|
+
public:
|
|
16
|
+
DBReadOnlyTestWithTimestamp()
|
|
17
|
+
: DBBasicTestWithTimestampBase("db_readonly_test_with_timestamp") {}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
#ifndef ROCKSDB_LITE
|
|
21
|
+
TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGetReadTimestampSizeMismatch) {
|
|
22
|
+
const int kNumKeysPerFile = 128;
|
|
23
|
+
const uint64_t kMaxKey = 1024;
|
|
24
|
+
Options options = CurrentOptions();
|
|
25
|
+
options.env = env_;
|
|
26
|
+
options.create_if_missing = true;
|
|
27
|
+
const size_t kTimestampSize = Timestamp(0, 0).size();
|
|
28
|
+
TestComparator test_cmp(kTimestampSize);
|
|
29
|
+
options.comparator = &test_cmp;
|
|
30
|
+
options.memtable_factory.reset(
|
|
31
|
+
test::NewSpecialSkipListFactory(kNumKeysPerFile));
|
|
32
|
+
DestroyAndReopen(options);
|
|
33
|
+
const std::string write_timestamp = Timestamp(1, 0);
|
|
34
|
+
WriteOptions write_opts;
|
|
35
|
+
for (uint64_t key = 0; key <= kMaxKey; ++key) {
|
|
36
|
+
Status s = db_->Put(write_opts, Key1(key), write_timestamp,
|
|
37
|
+
"value" + std::to_string(key));
|
|
38
|
+
ASSERT_OK(s);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Reopen the database in read only mode to test its timestamp support.
|
|
42
|
+
Close();
|
|
43
|
+
ASSERT_OK(ReadOnlyReopen(options));
|
|
44
|
+
ReadOptions read_opts;
|
|
45
|
+
std::string different_size_read_timestamp;
|
|
46
|
+
PutFixed32(&different_size_read_timestamp, 2);
|
|
47
|
+
Slice different_size_read_ts = different_size_read_timestamp;
|
|
48
|
+
read_opts.timestamp = &different_size_read_ts;
|
|
49
|
+
{
|
|
50
|
+
std::unique_ptr<Iterator> iter(db_->NewIterator(read_opts));
|
|
51
|
+
ASSERT_FALSE(iter->Valid());
|
|
52
|
+
ASSERT_TRUE(iter->status().IsInvalidArgument());
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
for (uint64_t key = 0; key <= kMaxKey; ++key) {
|
|
56
|
+
std::string value_from_get;
|
|
57
|
+
std::string timestamp;
|
|
58
|
+
ASSERT_TRUE(db_->Get(read_opts, Key1(key), &value_from_get, ×tamp)
|
|
59
|
+
.IsInvalidArgument());
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
Close();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
TEST_F(DBReadOnlyTestWithTimestamp,
|
|
66
|
+
IteratorAndGetReadTimestampSpecifiedWithoutWriteTimestamp) {
|
|
67
|
+
const int kNumKeysPerFile = 128;
|
|
68
|
+
const uint64_t kMaxKey = 1024;
|
|
69
|
+
Options options = CurrentOptions();
|
|
70
|
+
options.env = env_;
|
|
71
|
+
options.create_if_missing = true;
|
|
72
|
+
options.memtable_factory.reset(
|
|
73
|
+
test::NewSpecialSkipListFactory(kNumKeysPerFile));
|
|
74
|
+
DestroyAndReopen(options);
|
|
75
|
+
WriteOptions write_opts;
|
|
76
|
+
for (uint64_t key = 0; key <= kMaxKey; ++key) {
|
|
77
|
+
Status s = db_->Put(write_opts, Key1(key), "value" + std::to_string(key));
|
|
78
|
+
ASSERT_OK(s);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Reopen the database in read only mode to test its timestamp support.
|
|
82
|
+
Close();
|
|
83
|
+
ASSERT_OK(ReadOnlyReopen(options));
|
|
84
|
+
ReadOptions read_opts;
|
|
85
|
+
const std::string read_timestamp = Timestamp(2, 0);
|
|
86
|
+
Slice read_ts = read_timestamp;
|
|
87
|
+
read_opts.timestamp = &read_ts;
|
|
88
|
+
{
|
|
89
|
+
std::unique_ptr<Iterator> iter(db_->NewIterator(read_opts));
|
|
90
|
+
ASSERT_FALSE(iter->Valid());
|
|
91
|
+
ASSERT_TRUE(iter->status().IsInvalidArgument());
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
for (uint64_t key = 0; key <= kMaxKey; ++key) {
|
|
95
|
+
std::string value_from_get;
|
|
96
|
+
std::string timestamp;
|
|
97
|
+
ASSERT_TRUE(db_->Get(read_opts, Key1(key), &value_from_get, ×tamp)
|
|
98
|
+
.IsInvalidArgument());
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
Close();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
TEST_F(DBReadOnlyTestWithTimestamp, IteratorAndGet) {
|
|
105
|
+
const int kNumKeysPerFile = 128;
|
|
106
|
+
const uint64_t kMaxKey = 1024;
|
|
107
|
+
Options options = CurrentOptions();
|
|
108
|
+
options.env = env_;
|
|
109
|
+
options.create_if_missing = true;
|
|
110
|
+
const size_t kTimestampSize = Timestamp(0, 0).size();
|
|
111
|
+
TestComparator test_cmp(kTimestampSize);
|
|
112
|
+
options.comparator = &test_cmp;
|
|
113
|
+
options.memtable_factory.reset(
|
|
114
|
+
test::NewSpecialSkipListFactory(kNumKeysPerFile));
|
|
115
|
+
DestroyAndReopen(options);
|
|
116
|
+
const std::vector<uint64_t> start_keys = {1, 0};
|
|
117
|
+
const std::vector<std::string> write_timestamps = {Timestamp(1, 0),
|
|
118
|
+
Timestamp(3, 0)};
|
|
119
|
+
const std::vector<std::string> read_timestamps = {Timestamp(2, 0),
|
|
120
|
+
Timestamp(4, 0)};
|
|
121
|
+
for (size_t i = 0; i < write_timestamps.size(); ++i) {
|
|
122
|
+
WriteOptions write_opts;
|
|
123
|
+
for (uint64_t key = start_keys[i]; key <= kMaxKey; ++key) {
|
|
124
|
+
Status s = db_->Put(write_opts, Key1(key), write_timestamps[i],
|
|
125
|
+
"value" + std::to_string(i));
|
|
126
|
+
ASSERT_OK(s);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Reopen the database in read only mode to test its timestamp support.
|
|
131
|
+
Close();
|
|
132
|
+
ASSERT_OK(ReadOnlyReopen(options));
|
|
133
|
+
|
|
134
|
+
auto get_value_and_check = [](DB* db, ReadOptions read_opts, Slice key,
|
|
135
|
+
Slice expected_value, std::string expected_ts) {
|
|
136
|
+
std::string value_from_get;
|
|
137
|
+
std::string timestamp;
|
|
138
|
+
ASSERT_OK(db->Get(read_opts, key.ToString(), &value_from_get, ×tamp));
|
|
139
|
+
ASSERT_EQ(expected_value, value_from_get);
|
|
140
|
+
ASSERT_EQ(expected_ts, timestamp);
|
|
141
|
+
};
|
|
142
|
+
for (size_t i = 0; i < read_timestamps.size(); ++i) {
|
|
143
|
+
ReadOptions read_opts;
|
|
144
|
+
Slice read_ts = read_timestamps[i];
|
|
145
|
+
read_opts.timestamp = &read_ts;
|
|
146
|
+
std::unique_ptr<Iterator> it(db_->NewIterator(read_opts));
|
|
147
|
+
int count = 0;
|
|
148
|
+
uint64_t key = 0;
|
|
149
|
+
// Forward iterate.
|
|
150
|
+
for (it->Seek(Key1(0)), key = start_keys[i]; it->Valid();
|
|
151
|
+
it->Next(), ++count, ++key) {
|
|
152
|
+
CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
|
|
153
|
+
"value" + std::to_string(i), write_timestamps[i]);
|
|
154
|
+
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
155
|
+
write_timestamps[i]);
|
|
156
|
+
}
|
|
157
|
+
size_t expected_count = kMaxKey - start_keys[i] + 1;
|
|
158
|
+
ASSERT_EQ(expected_count, count);
|
|
159
|
+
|
|
160
|
+
// Backward iterate.
|
|
161
|
+
count = 0;
|
|
162
|
+
for (it->SeekForPrev(Key1(kMaxKey)), key = kMaxKey; it->Valid();
|
|
163
|
+
it->Prev(), ++count, --key) {
|
|
164
|
+
CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
|
|
165
|
+
"value" + std::to_string(i), write_timestamps[i]);
|
|
166
|
+
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
167
|
+
write_timestamps[i]);
|
|
168
|
+
}
|
|
169
|
+
ASSERT_EQ(static_cast<size_t>(kMaxKey) - start_keys[i] + 1, count);
|
|
170
|
+
|
|
171
|
+
// SeekToFirst()/SeekToLast() with lower/upper bounds.
|
|
172
|
+
// Then iter with lower and upper bounds.
|
|
173
|
+
uint64_t l = 0;
|
|
174
|
+
uint64_t r = kMaxKey + 1;
|
|
175
|
+
while (l < r) {
|
|
176
|
+
std::string lb_str = Key1(l);
|
|
177
|
+
Slice lb = lb_str;
|
|
178
|
+
std::string ub_str = Key1(r);
|
|
179
|
+
Slice ub = ub_str;
|
|
180
|
+
read_opts.iterate_lower_bound = &lb;
|
|
181
|
+
read_opts.iterate_upper_bound = &ub;
|
|
182
|
+
it.reset(db_->NewIterator(read_opts));
|
|
183
|
+
for (it->SeekToFirst(), key = std::max(l, start_keys[i]), count = 0;
|
|
184
|
+
it->Valid(); it->Next(), ++key, ++count) {
|
|
185
|
+
CheckIterUserEntry(it.get(), Key1(key), kTypeValue,
|
|
186
|
+
"value" + std::to_string(i), write_timestamps[i]);
|
|
187
|
+
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
188
|
+
write_timestamps[i]);
|
|
189
|
+
}
|
|
190
|
+
ASSERT_EQ(r - std::max(l, start_keys[i]), count);
|
|
191
|
+
|
|
192
|
+
for (it->SeekToLast(), key = std::min(r, kMaxKey + 1), count = 0;
|
|
193
|
+
it->Valid(); it->Prev(), --key, ++count) {
|
|
194
|
+
CheckIterUserEntry(it.get(), Key1(key - 1), kTypeValue,
|
|
195
|
+
"value" + std::to_string(i), write_timestamps[i]);
|
|
196
|
+
get_value_and_check(db_, read_opts, it->key(), it->value(),
|
|
197
|
+
write_timestamps[i]);
|
|
198
|
+
}
|
|
199
|
+
l += (kMaxKey / 100);
|
|
200
|
+
r -= (kMaxKey / 100);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
Close();
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
TEST_F(DBReadOnlyTestWithTimestamp, Iterators) {
|
|
207
|
+
const int kNumKeysPerFile = 128;
|
|
208
|
+
const uint64_t kMaxKey = 1024;
|
|
209
|
+
Options options = CurrentOptions();
|
|
210
|
+
options.env = env_;
|
|
211
|
+
options.create_if_missing = true;
|
|
212
|
+
const size_t kTimestampSize = Timestamp(0, 0).size();
|
|
213
|
+
TestComparator test_cmp(kTimestampSize);
|
|
214
|
+
options.comparator = &test_cmp;
|
|
215
|
+
options.memtable_factory.reset(
|
|
216
|
+
test::NewSpecialSkipListFactory(kNumKeysPerFile));
|
|
217
|
+
DestroyAndReopen(options);
|
|
218
|
+
const std::string write_timestamp = Timestamp(1, 0);
|
|
219
|
+
const std::string read_timestamp = Timestamp(2, 0);
|
|
220
|
+
WriteOptions write_opts;
|
|
221
|
+
for (uint64_t key = 0; key <= kMaxKey; ++key) {
|
|
222
|
+
Status s = db_->Put(write_opts, Key1(key), write_timestamp,
|
|
223
|
+
"value" + std::to_string(key));
|
|
224
|
+
ASSERT_OK(s);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Reopen the database in read only mode to test its timestamp support.
|
|
228
|
+
Close();
|
|
229
|
+
ASSERT_OK(ReadOnlyReopen(options));
|
|
230
|
+
ReadOptions read_opts;
|
|
231
|
+
Slice read_ts = read_timestamp;
|
|
232
|
+
read_opts.timestamp = &read_ts;
|
|
233
|
+
std::vector<Iterator*> iters;
|
|
234
|
+
ASSERT_OK(db_->NewIterators(read_opts, {db_->DefaultColumnFamily()}, &iters));
|
|
235
|
+
ASSERT_EQ(static_cast<uint64_t>(1), iters.size());
|
|
236
|
+
|
|
237
|
+
int count = 0;
|
|
238
|
+
uint64_t key = 0;
|
|
239
|
+
// Forward iterate.
|
|
240
|
+
for (iters[0]->Seek(Key1(0)), key = 0; iters[0]->Valid();
|
|
241
|
+
iters[0]->Next(), ++count, ++key) {
|
|
242
|
+
CheckIterUserEntry(iters[0], Key1(key), kTypeValue,
|
|
243
|
+
"value" + std::to_string(key), write_timestamp);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
size_t expected_count = kMaxKey - 0 + 1;
|
|
247
|
+
ASSERT_EQ(expected_count, count);
|
|
248
|
+
delete iters[0];
|
|
249
|
+
|
|
250
|
+
Close();
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
TEST_F(DBReadOnlyTestWithTimestamp, IteratorsReadTimestampSizeMismatch) {
|
|
254
|
+
const int kNumKeysPerFile = 128;
|
|
255
|
+
const uint64_t kMaxKey = 1024;
|
|
256
|
+
Options options = CurrentOptions();
|
|
257
|
+
options.env = env_;
|
|
258
|
+
options.create_if_missing = true;
|
|
259
|
+
const size_t kTimestampSize = Timestamp(0, 0).size();
|
|
260
|
+
TestComparator test_cmp(kTimestampSize);
|
|
261
|
+
options.comparator = &test_cmp;
|
|
262
|
+
options.memtable_factory.reset(
|
|
263
|
+
test::NewSpecialSkipListFactory(kNumKeysPerFile));
|
|
264
|
+
DestroyAndReopen(options);
|
|
265
|
+
const std::string write_timestamp = Timestamp(1, 0);
|
|
266
|
+
WriteOptions write_opts;
|
|
267
|
+
for (uint64_t key = 0; key <= kMaxKey; ++key) {
|
|
268
|
+
Status s = db_->Put(write_opts, Key1(key), write_timestamp,
|
|
269
|
+
"value" + std::to_string(key));
|
|
270
|
+
ASSERT_OK(s);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Reopen the database in read only mode to test its timestamp support.
|
|
274
|
+
Close();
|
|
275
|
+
ASSERT_OK(ReadOnlyReopen(options));
|
|
276
|
+
ReadOptions read_opts;
|
|
277
|
+
std::string different_size_read_timestamp;
|
|
278
|
+
PutFixed32(&different_size_read_timestamp, 2);
|
|
279
|
+
Slice different_size_read_ts = different_size_read_timestamp;
|
|
280
|
+
read_opts.timestamp = &different_size_read_ts;
|
|
281
|
+
{
|
|
282
|
+
std::vector<Iterator*> iters;
|
|
283
|
+
ASSERT_TRUE(
|
|
284
|
+
db_->NewIterators(read_opts, {db_->DefaultColumnFamily()}, &iters)
|
|
285
|
+
.IsInvalidArgument());
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
Close();
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
TEST_F(DBReadOnlyTestWithTimestamp,
|
|
292
|
+
IteratorsReadTimestampSpecifiedWithoutWriteTimestamp) {
|
|
293
|
+
const int kNumKeysPerFile = 128;
|
|
294
|
+
const uint64_t kMaxKey = 1024;
|
|
295
|
+
Options options = CurrentOptions();
|
|
296
|
+
options.env = env_;
|
|
297
|
+
options.create_if_missing = true;
|
|
298
|
+
options.memtable_factory.reset(
|
|
299
|
+
test::NewSpecialSkipListFactory(kNumKeysPerFile));
|
|
300
|
+
DestroyAndReopen(options);
|
|
301
|
+
WriteOptions write_opts;
|
|
302
|
+
for (uint64_t key = 0; key <= kMaxKey; ++key) {
|
|
303
|
+
Status s = db_->Put(write_opts, Key1(key), "value" + std::to_string(key));
|
|
304
|
+
ASSERT_OK(s);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// Reopen the database in read only mode to test its timestamp support.
|
|
308
|
+
Close();
|
|
309
|
+
ASSERT_OK(ReadOnlyReopen(options));
|
|
310
|
+
ReadOptions read_opts;
|
|
311
|
+
const std::string read_timestamp = Timestamp(2, 0);
|
|
312
|
+
Slice read_ts = read_timestamp;
|
|
313
|
+
read_opts.timestamp = &read_ts;
|
|
314
|
+
{
|
|
315
|
+
std::vector<Iterator*> iters;
|
|
316
|
+
ASSERT_TRUE(
|
|
317
|
+
db_->NewIterators(read_opts, {db_->DefaultColumnFamily()}, &iters)
|
|
318
|
+
.IsInvalidArgument());
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
Close();
|
|
322
|
+
}
|
|
323
|
+
#endif // !ROCKSDB_LITE
|
|
324
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
325
|
+
|
|
326
|
+
int main(int argc, char** argv) {
|
|
327
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
328
|
+
::testing::InitGoogleTest(&argc, argv);
|
|
329
|
+
RegisterCustomObjects(argc, argv);
|
|
330
|
+
return RUN_ALL_TESTS();
|
|
331
|
+
}
|
|
@@ -181,6 +181,7 @@ TEST_F(DBSecondaryTest, SimpleInternalCompaction) {
|
|
|
181
181
|
ASSERT_EQ(input.input_files.size(), 3);
|
|
182
182
|
|
|
183
183
|
input.output_level = 1;
|
|
184
|
+
ASSERT_OK(db_->GetDbIdentity(input.db_id));
|
|
184
185
|
Close();
|
|
185
186
|
|
|
186
187
|
options.max_open_files = -1;
|
|
@@ -212,20 +213,20 @@ TEST_F(DBSecondaryTest, InternalCompactionMultiLevels) {
|
|
|
212
213
|
const int kRangeL2 = 10;
|
|
213
214
|
const int kRangeL1 = 30;
|
|
214
215
|
for (int i = 0; i < 10; i++) {
|
|
215
|
-
ASSERT_OK(Put(Key(i * kRangeL2), "value" +
|
|
216
|
-
ASSERT_OK(Put(Key((i + 1) * kRangeL2 - 1), "value" +
|
|
216
|
+
ASSERT_OK(Put(Key(i * kRangeL2), "value" + std::to_string(i)));
|
|
217
|
+
ASSERT_OK(Put(Key((i + 1) * kRangeL2 - 1), "value" + std::to_string(i)));
|
|
217
218
|
ASSERT_OK(Flush());
|
|
218
219
|
}
|
|
219
220
|
MoveFilesToLevel(2);
|
|
220
221
|
for (int i = 0; i < 5; i++) {
|
|
221
|
-
ASSERT_OK(Put(Key(i * kRangeL1), "value" +
|
|
222
|
-
ASSERT_OK(Put(Key((i + 1) * kRangeL1 - 1), "value" +
|
|
222
|
+
ASSERT_OK(Put(Key(i * kRangeL1), "value" + std::to_string(i)));
|
|
223
|
+
ASSERT_OK(Put(Key((i + 1) * kRangeL1 - 1), "value" + std::to_string(i)));
|
|
223
224
|
ASSERT_OK(Flush());
|
|
224
225
|
}
|
|
225
226
|
MoveFilesToLevel(1);
|
|
226
227
|
for (int i = 0; i < 4; i++) {
|
|
227
|
-
ASSERT_OK(Put(Key(i * 30), "value" +
|
|
228
|
-
ASSERT_OK(Put(Key(i * 30 + 50), "value" +
|
|
228
|
+
ASSERT_OK(Put(Key(i * 30), "value" + std::to_string(i)));
|
|
229
|
+
ASSERT_OK(Put(Key(i * 30 + 50), "value" + std::to_string(i)));
|
|
229
230
|
ASSERT_OK(Flush());
|
|
230
231
|
}
|
|
231
232
|
|
|
@@ -241,6 +242,7 @@ TEST_F(DBSecondaryTest, InternalCompactionMultiLevels) {
|
|
|
241
242
|
input1.input_files.push_back(meta.levels[1].files[2].name);
|
|
242
243
|
|
|
243
244
|
input1.output_level = 1;
|
|
245
|
+
ASSERT_OK(db_->GetDbIdentity(input1.db_id));
|
|
244
246
|
|
|
245
247
|
options.max_open_files = -1;
|
|
246
248
|
Close();
|
|
@@ -261,6 +263,7 @@ TEST_F(DBSecondaryTest, InternalCompactionMultiLevels) {
|
|
|
261
263
|
}
|
|
262
264
|
|
|
263
265
|
input2.output_level = 2;
|
|
266
|
+
input2.db_id = input1.db_id;
|
|
264
267
|
ASSERT_OK(db_secondary_full()->TEST_CompactWithoutInstallation(
|
|
265
268
|
OpenAndCompactOptions(), cfh, input2, &result));
|
|
266
269
|
ASSERT_OK(result.status);
|
|
@@ -305,6 +308,7 @@ TEST_F(DBSecondaryTest, InternalCompactionCompactedFiles) {
|
|
|
305
308
|
ASSERT_EQ(input.input_files.size(), 3);
|
|
306
309
|
|
|
307
310
|
input.output_level = 1;
|
|
311
|
+
ASSERT_OK(db_->GetDbIdentity(input.db_id));
|
|
308
312
|
|
|
309
313
|
// trigger compaction to delete the files for secondary instance compaction
|
|
310
314
|
ASSERT_OK(Put("foo", "foo_value" + std::to_string(3)));
|
|
@@ -346,6 +350,7 @@ TEST_F(DBSecondaryTest, InternalCompactionMissingFiles) {
|
|
|
346
350
|
ASSERT_EQ(input.input_files.size(), 3);
|
|
347
351
|
|
|
348
352
|
input.output_level = 1;
|
|
353
|
+
ASSERT_OK(db_->GetDbIdentity(input.db_id));
|
|
349
354
|
|
|
350
355
|
Close();
|
|
351
356
|
|
|
@@ -280,6 +280,58 @@ TEST_F(DBSSTTest, DeleteObsoleteFilesPendingOutputs) {
|
|
|
280
280
|
listener->VerifyMatchedCount(1);
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
+
// Test that producing an empty .sst file does not write it out to
|
|
284
|
+
// disk, and that the DeleteFile() env method is not called for
|
|
285
|
+
// removing the non-existing file later.
|
|
286
|
+
TEST_F(DBSSTTest, DeleteFileNotCalledForNotCreatedSSTFile) {
|
|
287
|
+
Options options = CurrentOptions();
|
|
288
|
+
options.env = env_;
|
|
289
|
+
|
|
290
|
+
OnFileDeletionListener* listener = new OnFileDeletionListener();
|
|
291
|
+
options.listeners.emplace_back(listener);
|
|
292
|
+
|
|
293
|
+
Reopen(options);
|
|
294
|
+
|
|
295
|
+
// Flush the empty database.
|
|
296
|
+
ASSERT_OK(Flush());
|
|
297
|
+
ASSERT_EQ("", FilesPerLevel(0));
|
|
298
|
+
|
|
299
|
+
// We expect no .sst files.
|
|
300
|
+
std::vector<LiveFileMetaData> metadata;
|
|
301
|
+
db_->GetLiveFilesMetaData(&metadata);
|
|
302
|
+
ASSERT_EQ(metadata.size(), 0U);
|
|
303
|
+
|
|
304
|
+
// We expect no file deletions.
|
|
305
|
+
listener->VerifyMatchedCount(0);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Test that producing a non-empty .sst file does write it out to
|
|
309
|
+
// disk, and that the DeleteFile() env method is not called for removing
|
|
310
|
+
// the file later.
|
|
311
|
+
TEST_F(DBSSTTest, DeleteFileNotCalledForCreatedSSTFile) {
|
|
312
|
+
Options options = CurrentOptions();
|
|
313
|
+
options.env = env_;
|
|
314
|
+
|
|
315
|
+
OnFileDeletionListener* listener = new OnFileDeletionListener();
|
|
316
|
+
options.listeners.emplace_back(listener);
|
|
317
|
+
|
|
318
|
+
Reopen(options);
|
|
319
|
+
|
|
320
|
+
ASSERT_OK(Put("pika", "choo"));
|
|
321
|
+
|
|
322
|
+
// Flush the non-empty database.
|
|
323
|
+
ASSERT_OK(Flush());
|
|
324
|
+
ASSERT_EQ("1", FilesPerLevel(0));
|
|
325
|
+
|
|
326
|
+
// We expect 1 .sst files.
|
|
327
|
+
std::vector<LiveFileMetaData> metadata;
|
|
328
|
+
db_->GetLiveFilesMetaData(&metadata);
|
|
329
|
+
ASSERT_EQ(metadata.size(), 1U);
|
|
330
|
+
|
|
331
|
+
// We expect no file deletions.
|
|
332
|
+
listener->VerifyMatchedCount(0);
|
|
333
|
+
}
|
|
334
|
+
|
|
283
335
|
TEST_F(DBSSTTest, DBWithSstFileManager) {
|
|
284
336
|
std::shared_ptr<SstFileManager> sst_file_manager(NewSstFileManager(env_));
|
|
285
337
|
auto sfm = static_cast<SstFileManagerImpl*>(sst_file_manager.get());
|
|
@@ -947,7 +999,7 @@ TEST_F(DBSSTTest, DeleteSchedulerMultipleDBPaths) {
|
|
|
947
999
|
|
|
948
1000
|
// Create 4 files in L0
|
|
949
1001
|
for (int i = 0; i < 4; i++) {
|
|
950
|
-
ASSERT_OK(Put("Key" +
|
|
1002
|
+
ASSERT_OK(Put("Key" + std::to_string(i), DummyString(1024, 'A'), wo));
|
|
951
1003
|
ASSERT_OK(Flush());
|
|
952
1004
|
}
|
|
953
1005
|
// We created 4 sst files in L0
|
|
@@ -963,7 +1015,7 @@ TEST_F(DBSSTTest, DeleteSchedulerMultipleDBPaths) {
|
|
|
963
1015
|
|
|
964
1016
|
// Create 4 files in L0
|
|
965
1017
|
for (int i = 4; i < 8; i++) {
|
|
966
|
-
ASSERT_OK(Put("Key" +
|
|
1018
|
+
ASSERT_OK(Put("Key" + std::to_string(i), DummyString(1024, 'B'), wo));
|
|
967
1019
|
ASSERT_OK(Flush());
|
|
968
1020
|
}
|
|
969
1021
|
ASSERT_EQ("4,1", FilesPerLevel(0));
|
|
@@ -1009,7 +1061,7 @@ TEST_F(DBSSTTest, DestroyDBWithRateLimitedDelete) {
|
|
|
1009
1061
|
|
|
1010
1062
|
// Create 4 files in L0
|
|
1011
1063
|
for (int i = 0; i < 4; i++) {
|
|
1012
|
-
ASSERT_OK(Put("Key" +
|
|
1064
|
+
ASSERT_OK(Put("Key" + std::to_string(i), DummyString(1024, 'A')));
|
|
1013
1065
|
ASSERT_OK(Flush());
|
|
1014
1066
|
}
|
|
1015
1067
|
// We created 4 sst files in L0
|
|
@@ -1396,7 +1448,9 @@ TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFiles) {
|
|
|
1396
1448
|
}
|
|
1397
1449
|
|
|
1398
1450
|
TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFilesSubjectToMemoryLimit) {
|
|
1399
|
-
for (
|
|
1451
|
+
for (CacheEntryRoleOptions::Decision charge_table_reader :
|
|
1452
|
+
{CacheEntryRoleOptions::Decision::kEnabled,
|
|
1453
|
+
CacheEntryRoleOptions::Decision::kDisabled}) {
|
|
1400
1454
|
// Open DB with infinite max open files
|
|
1401
1455
|
// - First iteration use 1 thread to open files
|
|
1402
1456
|
// - Second iteration use 5 threads to open files
|
|
@@ -1436,7 +1490,9 @@ TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFilesSubjectToMemoryLimit) {
|
|
|
1436
1490
|
}
|
|
1437
1491
|
Close();
|
|
1438
1492
|
|
|
1439
|
-
table_options.
|
|
1493
|
+
table_options.cache_usage_options.options_overrides.insert(
|
|
1494
|
+
{CacheEntryRole::kBlockBasedTableReader,
|
|
1495
|
+
{/*.charged = */ charge_table_reader}});
|
|
1440
1496
|
table_options.block_cache =
|
|
1441
1497
|
NewLRUCache(1024 /* capacity */, 0 /* num_shard_bits */,
|
|
1442
1498
|
true /* strict_capacity_limit */);
|
|
@@ -1445,8 +1501,13 @@ TEST_F(DBSSTTest, OpenDBWithInfiniteMaxOpenFilesSubjectToMemoryLimit) {
|
|
|
1445
1501
|
// Reopening the DB will try to load all existing files, conditionally
|
|
1446
1502
|
// subject to memory limit
|
|
1447
1503
|
Status s = TryReopen(options);
|
|
1448
|
-
|
|
1504
|
+
|
|
1505
|
+
if (charge_table_reader == CacheEntryRoleOptions::Decision::kEnabled) {
|
|
1449
1506
|
EXPECT_TRUE(s.IsMemoryLimit());
|
|
1507
|
+
EXPECT_TRUE(s.ToString().find(
|
|
1508
|
+
kCacheEntryRoleToCamelString[static_cast<std::uint32_t>(
|
|
1509
|
+
CacheEntryRole::kBlockBasedTableReader)]) !=
|
|
1510
|
+
std::string::npos);
|
|
1450
1511
|
EXPECT_TRUE(s.ToString().find("memory limit based on cache capacity") !=
|
|
1451
1512
|
std::string::npos);
|
|
1452
1513
|
|
|
@@ -1478,7 +1539,7 @@ TEST_F(DBSSTTest, GetTotalSstFilesSize) {
|
|
|
1478
1539
|
// Generate 5 files in L0
|
|
1479
1540
|
for (int i = 0; i < 5; i++) {
|
|
1480
1541
|
for (int j = 0; j < 10; j++) {
|
|
1481
|
-
std::string val = "val_file_" +
|
|
1542
|
+
std::string val = "val_file_" + std::to_string(i);
|
|
1482
1543
|
ASSERT_OK(Put(Key(j), val));
|
|
1483
1544
|
}
|
|
1484
1545
|
ASSERT_OK(Flush());
|