@nxtedition/rocksdb 8.2.8 → 9.0.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/binding.cc +0 -21
- package/deps/rocksdb/rocksdb/CMakeLists.txt +20 -10
- package/deps/rocksdb/rocksdb/Makefile +37 -25
- package/deps/rocksdb/rocksdb/README.md +29 -0
- package/deps/rocksdb/rocksdb/TARGETS +25 -2
- package/deps/rocksdb/rocksdb/cache/cache.cc +35 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +229 -74
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +4 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +58 -95
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -3
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +2683 -496
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +580 -159
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +145 -42
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +20 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +391 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +309 -212
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +0 -32
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +439 -12
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +44 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +11 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -3
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.cc +119 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache.h +155 -0
- package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +711 -0
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +17 -11
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +28 -12
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +20 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +7 -3
- package/deps/rocksdb/rocksdb/db/builder.cc +35 -10
- package/deps/rocksdb/rocksdb/db/c.cc +233 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +140 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +110 -51
- package/deps/rocksdb/rocksdb/db/column_family.h +34 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +314 -7
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +106 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +47 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +10 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +148 -60
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +22 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +33 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +170 -95
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +32 -58
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +46 -10
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +27 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +850 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +275 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +52 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +733 -320
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +155 -66
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +516 -155
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +8 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +100 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +95 -50
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +136 -79
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +6 -95
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +31 -22
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +85 -57
- package/deps/rocksdb/rocksdb/db/db_iter.h +11 -2
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +29 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +276 -21
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +193 -7
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +294 -26
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +364 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +13 -3
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +52 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +74 -1
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +22 -4
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +282 -167
- package/deps/rocksdb/rocksdb/db/db_test.cc +180 -49
- package/deps/rocksdb/rocksdb/db/db_test2.cc +84 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +25 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +45 -2
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +14 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +245 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +480 -1
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/error_handler.cc +67 -34
- package/deps/rocksdb/rocksdb/db/error_handler.h +13 -9
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +144 -4
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
- package/deps/rocksdb/rocksdb/db/flush_job.cc +105 -17
- package/deps/rocksdb/rocksdb/db/flush_job.h +27 -4
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +90 -12
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
- package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
- package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
- package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +70 -83
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +45 -11
- package/deps/rocksdb/rocksdb/db/memtable_list.h +43 -2
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +91 -5
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +330 -115
- package/deps/rocksdb/rocksdb/db/merge_helper.h +100 -12
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +82 -0
- package/deps/rocksdb/rocksdb/db/merge_test.cc +267 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +4 -4
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +4 -0
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +4 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +25 -7
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +459 -74
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +105 -69
- package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +83 -46
- package/deps/rocksdb/rocksdb/db/table_cache.cc +76 -54
- package/deps/rocksdb/rocksdb/db/table_cache.h +18 -12
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
- package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
- package/deps/rocksdb/rocksdb/db/version_edit.h +58 -10
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +207 -110
- package/deps/rocksdb/rocksdb/db/version_set.h +36 -15
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -26
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +525 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +6 -22
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +0 -20
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +0 -29
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.cc +46 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper.h +40 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_columns_helper_test.cc +39 -0
- package/deps/rocksdb/rocksdb/db/write_batch.cc +55 -20
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +4 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +88 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +37 -13
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +110 -58
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +68 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +34 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +8 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +429 -237
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +13 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +21 -14
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.cc +51 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_wide_merge_operator.h +27 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +3 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +29 -38
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +302 -101
- package/deps/rocksdb/rocksdb/env/env.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
- package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
- package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
- package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +79 -0
- package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +100 -70
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +64 -18
- package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
- package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1225 -97
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +72 -33
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
- package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +40 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +163 -91
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +112 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +108 -16
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +11 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +92 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +34 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +91 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +8 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +10 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +55 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +130 -22
- package/deps/rocksdb/rocksdb/include/rocksdb/port_defs.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +92 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +37 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +35 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +20 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +42 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +53 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -2
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +4 -3
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +1 -1
- package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +22 -1
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +18 -7
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +6 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +54 -2
- package/deps/rocksdb/rocksdb/options/db_options.h +4 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +18 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +14 -4
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -1
- package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
- package/deps/rocksdb/rocksdb/port/README +10 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -4
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +32 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +5 -2
- package/deps/rocksdb/rocksdb/src.mk +10 -1
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
- package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +116 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +9 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +321 -49
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +98 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +233 -98
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +58 -23
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +12 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +52 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +26 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -18
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +20 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +232 -71
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -6
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +44 -26
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +36 -19
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +11 -7
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +14 -13
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +4 -0
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +9 -2
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/format.cc +175 -33
- package/deps/rocksdb/rocksdb/table/format.h +63 -10
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -89
- package/deps/rocksdb/rocksdb/table/get_context.h +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +29 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +22 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
- package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
- package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +45 -9
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +24 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
- package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +6 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
- package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +31 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +3 -3
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +87 -65
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +221 -33
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +36 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +33 -11
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
- package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
- package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
- package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
- package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +32 -11
- package/deps/rocksdb/rocksdb/util/cast_util.h +24 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +55 -8
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +119 -35
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
- package/deps/rocksdb/rocksdb/util/crc32c.cc +7 -1
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
- package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
- package/deps/rocksdb/rocksdb/util/hash.h +7 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
- package/deps/rocksdb/rocksdb/util/math.h +58 -6
- package/deps/rocksdb/rocksdb/util/math128.h +29 -7
- package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
- package/deps/rocksdb/rocksdb/util/overload.h +23 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter.cc +53 -18
- package/deps/rocksdb/rocksdb/util/rate_limiter_impl.h +6 -1
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +90 -19
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/string_util.cc +39 -0
- package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
- package/deps/rocksdb/rocksdb/util/thread_operation.h +10 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +385 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +192 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +461 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
- package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +0 -3
- package/deps/rocksdb/rocksdb/util/xxph3.h +0 -4
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +71 -26
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +20 -16
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +11 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +12 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +272 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +15 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +4 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +195 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +19 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +88 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +43 -17
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +73 -24
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +41 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +15 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +59 -28
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +127 -120
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +129 -59
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +111 -14
- package/deps/rocksdb/rocksdb.gyp +6 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +0 -7
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +0 -33
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +0 -26
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +0 -29
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +0 -10
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
namespace ROCKSDB_NAMESPACE {
|
|
35
35
|
|
|
36
36
|
std::string GenerateInternalKey(int primary_key, int secondary_key,
|
|
37
|
-
int padding_size, Random *rnd
|
|
37
|
+
int padding_size, Random *rnd,
|
|
38
|
+
size_t ts_sz = 0) {
|
|
38
39
|
char buf[50];
|
|
39
40
|
char *p = &buf[0];
|
|
40
41
|
snprintf(buf, sizeof(buf), "%6d%4d", primary_key, secondary_key);
|
|
@@ -43,6 +44,11 @@ std::string GenerateInternalKey(int primary_key, int secondary_key,
|
|
|
43
44
|
k += rnd->RandomString(padding_size);
|
|
44
45
|
}
|
|
45
46
|
AppendInternalKeyFooter(&k, 0 /* seqno */, kTypeValue);
|
|
47
|
+
std::string key_with_ts;
|
|
48
|
+
if (ts_sz > 0) {
|
|
49
|
+
PadInternalKeyWithMinTimestamp(&key_with_ts, k, ts_sz);
|
|
50
|
+
return key_with_ts;
|
|
51
|
+
}
|
|
46
52
|
|
|
47
53
|
return k;
|
|
48
54
|
}
|
|
@@ -54,7 +60,7 @@ void GenerateRandomKVs(std::vector<std::string> *keys,
|
|
|
54
60
|
std::vector<std::string> *values, const int from,
|
|
55
61
|
const int len, const int step = 1,
|
|
56
62
|
const int padding_size = 0,
|
|
57
|
-
const int keys_share_prefix = 1) {
|
|
63
|
+
const int keys_share_prefix = 1, size_t ts_sz = 0) {
|
|
58
64
|
Random rnd(302);
|
|
59
65
|
|
|
60
66
|
// generate different prefix
|
|
@@ -62,7 +68,7 @@ void GenerateRandomKVs(std::vector<std::string> *keys,
|
|
|
62
68
|
// generating keys that shares the prefix
|
|
63
69
|
for (int j = 0; j < keys_share_prefix; ++j) {
|
|
64
70
|
// `DataBlockIter` assumes it reads only internal keys.
|
|
65
|
-
keys->emplace_back(GenerateInternalKey(i, j, padding_size, &rnd));
|
|
71
|
+
keys->emplace_back(GenerateInternalKey(i, j, padding_size, &rnd, ts_sz));
|
|
66
72
|
|
|
67
73
|
// 100 bytes values
|
|
68
74
|
values->emplace_back(rnd.RandomString(100));
|
|
@@ -70,19 +76,49 @@ void GenerateRandomKVs(std::vector<std::string> *keys,
|
|
|
70
76
|
}
|
|
71
77
|
}
|
|
72
78
|
|
|
73
|
-
|
|
79
|
+
// Test Param 1): key use delta encoding.
|
|
80
|
+
// Test Param 2): user-defined timestamp test mode.
|
|
81
|
+
// Test Param 3): data block index type.
|
|
82
|
+
class BlockTest : public testing::Test,
|
|
83
|
+
public testing::WithParamInterface<
|
|
84
|
+
std::tuple<bool, test::UserDefinedTimestampTestMode,
|
|
85
|
+
BlockBasedTableOptions::DataBlockIndexType>> {
|
|
86
|
+
public:
|
|
87
|
+
bool keyUseDeltaEncoding() const { return std::get<0>(GetParam()); }
|
|
88
|
+
bool isUDTEnabled() const {
|
|
89
|
+
return test::IsUDTEnabled(std::get<1>(GetParam()));
|
|
90
|
+
}
|
|
91
|
+
bool shouldPersistUDT() const {
|
|
92
|
+
return test::ShouldPersistUDT(std::get<1>(GetParam()));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
BlockBasedTableOptions::DataBlockIndexType dataBlockIndexType() const {
|
|
96
|
+
return std::get<2>(GetParam());
|
|
97
|
+
}
|
|
98
|
+
};
|
|
74
99
|
|
|
75
100
|
// block test
|
|
76
|
-
|
|
101
|
+
TEST_P(BlockTest, SimpleTest) {
|
|
77
102
|
Random rnd(301);
|
|
78
103
|
Options options = Options();
|
|
104
|
+
if (isUDTEnabled()) {
|
|
105
|
+
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
106
|
+
}
|
|
107
|
+
size_t ts_sz = options.comparator->timestamp_size();
|
|
79
108
|
|
|
80
109
|
std::vector<std::string> keys;
|
|
81
110
|
std::vector<std::string> values;
|
|
82
|
-
|
|
111
|
+
BlockBasedTableOptions::DataBlockIndexType index_type =
|
|
112
|
+
isUDTEnabled() ? BlockBasedTableOptions::kDataBlockBinarySearch
|
|
113
|
+
: dataBlockIndexType();
|
|
114
|
+
BlockBuilder builder(16, keyUseDeltaEncoding(),
|
|
115
|
+
false /* use_value_delta_encoding */, index_type,
|
|
116
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
117
|
+
shouldPersistUDT(), false /* is_user_key */);
|
|
83
118
|
int num_records = 100000;
|
|
84
119
|
|
|
85
|
-
GenerateRandomKVs(&keys, &values, 0, num_records
|
|
120
|
+
GenerateRandomKVs(&keys, &values, 0, num_records, 1 /* step */,
|
|
121
|
+
0 /* padding_size */, 1 /* keys_share_prefix */, ts_sz);
|
|
86
122
|
// add a bunch of records to a block
|
|
87
123
|
for (int i = 0; i < num_records; i++) {
|
|
88
124
|
builder.Add(keys[i], values[i]);
|
|
@@ -98,8 +134,10 @@ TEST_F(BlockTest, SimpleTest) {
|
|
|
98
134
|
|
|
99
135
|
// read contents of block sequentially
|
|
100
136
|
int count = 0;
|
|
101
|
-
InternalIterator *iter =
|
|
102
|
-
|
|
137
|
+
InternalIterator *iter = reader.NewDataIterator(
|
|
138
|
+
options.comparator, kDisableGlobalSequenceNumber, nullptr /* iter */,
|
|
139
|
+
nullptr /* stats */, false /* block_contents_pinned */,
|
|
140
|
+
shouldPersistUDT());
|
|
103
141
|
for (iter->SeekToFirst(); iter->Valid(); count++, iter->Next()) {
|
|
104
142
|
// read kv from block
|
|
105
143
|
Slice k = iter->key();
|
|
@@ -112,8 +150,10 @@ TEST_F(BlockTest, SimpleTest) {
|
|
|
112
150
|
delete iter;
|
|
113
151
|
|
|
114
152
|
// read block contents randomly
|
|
115
|
-
iter =
|
|
116
|
-
|
|
153
|
+
iter = reader.NewDataIterator(
|
|
154
|
+
options.comparator, kDisableGlobalSequenceNumber, nullptr /* iter */,
|
|
155
|
+
nullptr /* stats */, false /* block_contents_pinned */,
|
|
156
|
+
shouldPersistUDT());
|
|
117
157
|
for (int i = 0; i < num_records; i++) {
|
|
118
158
|
// find a random key in the lookaside array
|
|
119
159
|
int index = rnd.Uniform(num_records);
|
|
@@ -129,11 +169,18 @@ TEST_F(BlockTest, SimpleTest) {
|
|
|
129
169
|
}
|
|
130
170
|
|
|
131
171
|
// return the block contents
|
|
132
|
-
BlockContents GetBlockContents(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
172
|
+
BlockContents GetBlockContents(
|
|
173
|
+
std::unique_ptr<BlockBuilder> *builder,
|
|
174
|
+
const std::vector<std::string> &keys,
|
|
175
|
+
const std::vector<std::string> &values, bool key_use_delta_encoding,
|
|
176
|
+
size_t ts_sz, bool should_persist_udt, const int /*prefix_group_size*/ = 1,
|
|
177
|
+
BlockBasedTableOptions::DataBlockIndexType dblock_index_type =
|
|
178
|
+
BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch) {
|
|
179
|
+
builder->reset(
|
|
180
|
+
new BlockBuilder(1 /* restart interval */, key_use_delta_encoding,
|
|
181
|
+
false /* use_value_delta_encoding */, dblock_index_type,
|
|
182
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
183
|
+
should_persist_udt, false /* is_user_key */));
|
|
137
184
|
|
|
138
185
|
// Add only half of the keys
|
|
139
186
|
for (size_t i = 0; i < keys.size(); ++i) {
|
|
@@ -149,7 +196,8 @@ BlockContents GetBlockContents(std::unique_ptr<BlockBuilder> *builder,
|
|
|
149
196
|
|
|
150
197
|
void CheckBlockContents(BlockContents contents, const int max_key,
|
|
151
198
|
const std::vector<std::string> &keys,
|
|
152
|
-
const std::vector<std::string> &values
|
|
199
|
+
const std::vector<std::string> &values,
|
|
200
|
+
bool is_udt_enabled, bool should_persist_udt) {
|
|
153
201
|
const size_t prefix_size = 6;
|
|
154
202
|
// create block reader
|
|
155
203
|
BlockContents contents_ref(contents.data);
|
|
@@ -160,7 +208,10 @@ void CheckBlockContents(BlockContents contents, const int max_key,
|
|
|
160
208
|
NewFixedPrefixTransform(prefix_size));
|
|
161
209
|
|
|
162
210
|
std::unique_ptr<InternalIterator> regular_iter(reader2.NewDataIterator(
|
|
163
|
-
|
|
211
|
+
is_udt_enabled ? test::BytewiseComparatorWithU64TsWrapper()
|
|
212
|
+
: BytewiseComparator(),
|
|
213
|
+
kDisableGlobalSequenceNumber, nullptr /* iter */, nullptr /* stats */,
|
|
214
|
+
false /* block_contents_pinned */, should_persist_udt));
|
|
164
215
|
|
|
165
216
|
// Seek existent keys
|
|
166
217
|
for (size_t i = 0; i < keys.size(); i++) {
|
|
@@ -178,46 +229,79 @@ void CheckBlockContents(BlockContents contents, const int max_key,
|
|
|
178
229
|
// return the one that is closest.
|
|
179
230
|
for (int i = 1; i < max_key - 1; i += 2) {
|
|
180
231
|
// `DataBlockIter` assumes its APIs receive only internal keys.
|
|
181
|
-
auto key = GenerateInternalKey(i, 0, 0, nullptr
|
|
232
|
+
auto key = GenerateInternalKey(i, 0, 0, nullptr,
|
|
233
|
+
is_udt_enabled ? 8 : 0 /* ts_sz */);
|
|
182
234
|
regular_iter->Seek(key);
|
|
183
235
|
ASSERT_TRUE(regular_iter->Valid());
|
|
184
236
|
}
|
|
185
237
|
}
|
|
186
238
|
|
|
187
239
|
// In this test case, no two key share same prefix.
|
|
188
|
-
|
|
240
|
+
TEST_P(BlockTest, SimpleIndexHash) {
|
|
189
241
|
const int kMaxKey = 100000;
|
|
242
|
+
size_t ts_sz = isUDTEnabled() ? 8 : 0;
|
|
190
243
|
std::vector<std::string> keys;
|
|
191
244
|
std::vector<std::string> values;
|
|
192
245
|
GenerateRandomKVs(&keys, &values, 0 /* first key id */,
|
|
193
246
|
kMaxKey /* last key id */, 2 /* step */,
|
|
194
|
-
8 /* padding size (8 bytes randomly generated suffix)
|
|
247
|
+
8 /* padding size (8 bytes randomly generated suffix) */,
|
|
248
|
+
1 /* keys_share_prefix */, ts_sz);
|
|
195
249
|
|
|
196
250
|
std::unique_ptr<BlockBuilder> builder;
|
|
197
|
-
auto contents = GetBlockContents(&builder, keys, values);
|
|
198
251
|
|
|
199
|
-
|
|
252
|
+
auto contents = GetBlockContents(
|
|
253
|
+
&builder, keys, values, keyUseDeltaEncoding(), ts_sz, shouldPersistUDT(),
|
|
254
|
+
1 /* prefix_group_size */,
|
|
255
|
+
isUDTEnabled()
|
|
256
|
+
? BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch
|
|
257
|
+
: dataBlockIndexType());
|
|
258
|
+
|
|
259
|
+
CheckBlockContents(std::move(contents), kMaxKey, keys, values, isUDTEnabled(),
|
|
260
|
+
shouldPersistUDT());
|
|
200
261
|
}
|
|
201
262
|
|
|
202
|
-
|
|
263
|
+
TEST_P(BlockTest, IndexHashWithSharedPrefix) {
|
|
203
264
|
const int kMaxKey = 100000;
|
|
204
265
|
// for each prefix, there will be 5 keys starts with it.
|
|
205
266
|
const int kPrefixGroup = 5;
|
|
267
|
+
size_t ts_sz = isUDTEnabled() ? 8 : 0;
|
|
206
268
|
std::vector<std::string> keys;
|
|
207
269
|
std::vector<std::string> values;
|
|
208
270
|
// Generate keys with same prefix.
|
|
209
271
|
GenerateRandomKVs(&keys, &values, 0, // first key id
|
|
210
272
|
kMaxKey, // last key id
|
|
211
|
-
2
|
|
212
|
-
10
|
|
213
|
-
kPrefixGroup);
|
|
273
|
+
2 /* step */,
|
|
274
|
+
10 /* padding size (8 bytes randomly generated suffix) */,
|
|
275
|
+
kPrefixGroup /* keys_share_prefix */, ts_sz);
|
|
214
276
|
|
|
215
277
|
std::unique_ptr<BlockBuilder> builder;
|
|
216
|
-
auto contents = GetBlockContents(&builder, keys, values, kPrefixGroup);
|
|
217
278
|
|
|
218
|
-
|
|
279
|
+
auto contents = GetBlockContents(
|
|
280
|
+
&builder, keys, values, keyUseDeltaEncoding(), isUDTEnabled(),
|
|
281
|
+
shouldPersistUDT(), kPrefixGroup,
|
|
282
|
+
isUDTEnabled()
|
|
283
|
+
? BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch
|
|
284
|
+
: dataBlockIndexType());
|
|
285
|
+
|
|
286
|
+
CheckBlockContents(std::move(contents), kMaxKey, keys, values, isUDTEnabled(),
|
|
287
|
+
shouldPersistUDT());
|
|
219
288
|
}
|
|
220
289
|
|
|
290
|
+
// Param 0: key use delta encoding
|
|
291
|
+
// Param 1: user-defined timestamp test mode
|
|
292
|
+
// Param 2: data block index type. User-defined timestamp feature is not
|
|
293
|
+
// compatible with `kDataBlockBinaryAndHash` data block index type because the
|
|
294
|
+
// user comparator doesn't provide a `CanKeysWithDifferentByteContentsBeEqual`
|
|
295
|
+
// override. This combination is disabled.
|
|
296
|
+
INSTANTIATE_TEST_CASE_P(
|
|
297
|
+
P, BlockTest,
|
|
298
|
+
::testing::Combine(
|
|
299
|
+
::testing::Bool(), ::testing::ValuesIn(test::GetUDTTestModes()),
|
|
300
|
+
::testing::Values(
|
|
301
|
+
BlockBasedTableOptions::DataBlockIndexType::kDataBlockBinarySearch,
|
|
302
|
+
BlockBasedTableOptions::DataBlockIndexType::
|
|
303
|
+
kDataBlockBinaryAndHash)));
|
|
304
|
+
|
|
221
305
|
// A slow and accurate version of BlockReadAmpBitmap that simply store
|
|
222
306
|
// all the marked ranges in a set.
|
|
223
307
|
class BlockReadAmpBitmapSlowAndAccurate {
|
|
@@ -362,7 +446,7 @@ TEST_F(BlockTest, BlockWithReadAmpBitmap) {
|
|
|
362
446
|
BlockBuilder builder(16);
|
|
363
447
|
int num_records = 10000;
|
|
364
448
|
|
|
365
|
-
GenerateRandomKVs(&keys, &values, 0, num_records, 1);
|
|
449
|
+
GenerateRandomKVs(&keys, &values, 0, num_records, 1 /* step */);
|
|
366
450
|
// add a bunch of records to a block
|
|
367
451
|
for (int i = 0; i < num_records; i++) {
|
|
368
452
|
builder.Add(keys[i], values[i]);
|
|
@@ -495,19 +579,28 @@ TEST_F(BlockTest, ReadAmpBitmapPow2) {
|
|
|
495
579
|
|
|
496
580
|
class IndexBlockTest
|
|
497
581
|
: public testing::Test,
|
|
498
|
-
public testing::WithParamInterface<
|
|
582
|
+
public testing::WithParamInterface<
|
|
583
|
+
std::tuple<bool, bool, bool, test::UserDefinedTimestampTestMode>> {
|
|
499
584
|
public:
|
|
500
585
|
IndexBlockTest() = default;
|
|
501
586
|
|
|
502
|
-
bool
|
|
503
|
-
bool
|
|
587
|
+
bool keyIncludesSeq() const { return std::get<0>(GetParam()); }
|
|
588
|
+
bool useValueDeltaEncoding() const { return std::get<1>(GetParam()); }
|
|
589
|
+
bool includeFirstKey() const { return std::get<2>(GetParam()); }
|
|
590
|
+
bool isUDTEnabled() const {
|
|
591
|
+
return test::IsUDTEnabled(std::get<3>(GetParam()));
|
|
592
|
+
}
|
|
593
|
+
bool shouldPersistUDT() const {
|
|
594
|
+
return test::ShouldPersistUDT(std::get<3>(GetParam()));
|
|
595
|
+
}
|
|
504
596
|
};
|
|
505
597
|
|
|
506
598
|
// Similar to GenerateRandomKVs but for index block contents.
|
|
507
599
|
void GenerateRandomIndexEntries(std::vector<std::string> *separators,
|
|
508
600
|
std::vector<BlockHandle> *block_handles,
|
|
509
601
|
std::vector<std::string> *first_keys,
|
|
510
|
-
const int len,
|
|
602
|
+
const int len, size_t ts_sz = 0,
|
|
603
|
+
bool zero_seqno = false) {
|
|
511
604
|
Random rnd(42);
|
|
512
605
|
|
|
513
606
|
// For each of `len` blocks, we need to generate a first and last key.
|
|
@@ -519,7 +612,13 @@ void GenerateRandomIndexEntries(std::vector<std::string> *separators,
|
|
|
519
612
|
if (zero_seqno) {
|
|
520
613
|
AppendInternalKeyFooter(&new_key, 0 /* seqno */, kTypeValue);
|
|
521
614
|
}
|
|
522
|
-
|
|
615
|
+
if (ts_sz > 0) {
|
|
616
|
+
std::string key;
|
|
617
|
+
PadInternalKeyWithMinTimestamp(&key, new_key, ts_sz);
|
|
618
|
+
keys.insert(std::move(key));
|
|
619
|
+
} else {
|
|
620
|
+
keys.insert(std::move(new_key));
|
|
621
|
+
}
|
|
523
622
|
}
|
|
524
623
|
|
|
525
624
|
uint64_t offset = 0;
|
|
@@ -536,19 +635,34 @@ void GenerateRandomIndexEntries(std::vector<std::string> *separators,
|
|
|
536
635
|
TEST_P(IndexBlockTest, IndexValueEncodingTest) {
|
|
537
636
|
Random rnd(301);
|
|
538
637
|
Options options = Options();
|
|
638
|
+
if (isUDTEnabled()) {
|
|
639
|
+
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
640
|
+
}
|
|
641
|
+
size_t ts_sz = options.comparator->timestamp_size();
|
|
539
642
|
|
|
540
643
|
std::vector<std::string> separators;
|
|
541
644
|
std::vector<BlockHandle> block_handles;
|
|
542
645
|
std::vector<std::string> first_keys;
|
|
543
646
|
const bool kUseDeltaEncoding = true;
|
|
544
|
-
BlockBuilder builder(16, kUseDeltaEncoding, useValueDeltaEncoding()
|
|
647
|
+
BlockBuilder builder(16, kUseDeltaEncoding, useValueDeltaEncoding(),
|
|
648
|
+
BlockBasedTableOptions::kDataBlockBinarySearch,
|
|
649
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
650
|
+
shouldPersistUDT(), !keyIncludesSeq());
|
|
651
|
+
|
|
545
652
|
int num_records = 100;
|
|
546
653
|
|
|
547
654
|
GenerateRandomIndexEntries(&separators, &block_handles, &first_keys,
|
|
548
|
-
num_records);
|
|
655
|
+
num_records, ts_sz, false /* zero_seqno */);
|
|
549
656
|
BlockHandle last_encoded_handle;
|
|
550
657
|
for (int i = 0; i < num_records; i++) {
|
|
551
|
-
|
|
658
|
+
std::string first_key_to_persist_buf;
|
|
659
|
+
Slice first_internal_key = first_keys[i];
|
|
660
|
+
if (ts_sz > 0 && !shouldPersistUDT()) {
|
|
661
|
+
StripTimestampFromInternalKey(&first_key_to_persist_buf, first_keys[i],
|
|
662
|
+
ts_sz);
|
|
663
|
+
first_internal_key = first_key_to_persist_buf;
|
|
664
|
+
}
|
|
665
|
+
IndexValue entry(block_handles[i], first_internal_key);
|
|
552
666
|
std::string encoded_entry;
|
|
553
667
|
std::string delta_encoded_entry;
|
|
554
668
|
entry.EncodeTo(&encoded_entry, includeFirstKey(), nullptr);
|
|
@@ -558,7 +672,13 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
|
|
|
558
672
|
}
|
|
559
673
|
last_encoded_handle = entry.handle;
|
|
560
674
|
const Slice delta_encoded_entry_slice(delta_encoded_entry);
|
|
561
|
-
|
|
675
|
+
|
|
676
|
+
if (keyIncludesSeq()) {
|
|
677
|
+
builder.Add(separators[i], encoded_entry, &delta_encoded_entry_slice);
|
|
678
|
+
} else {
|
|
679
|
+
const Slice user_key = ExtractUserKey(separators[i]);
|
|
680
|
+
builder.Add(user_key, encoded_entry, &delta_encoded_entry_slice);
|
|
681
|
+
}
|
|
562
682
|
}
|
|
563
683
|
|
|
564
684
|
// read serialized contents of the block
|
|
@@ -570,14 +690,14 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
|
|
|
570
690
|
Block reader(std::move(contents));
|
|
571
691
|
|
|
572
692
|
const bool kTotalOrderSeek = true;
|
|
573
|
-
const bool kIncludesSeq = true;
|
|
574
|
-
const bool kValueIsFull = !useValueDeltaEncoding();
|
|
575
693
|
IndexBlockIter *kNullIter = nullptr;
|
|
576
694
|
Statistics *kNullStats = nullptr;
|
|
577
695
|
// read contents of block sequentially
|
|
578
696
|
InternalIteratorBase<IndexValue> *iter = reader.NewIndexIterator(
|
|
579
697
|
options.comparator, kDisableGlobalSequenceNumber, kNullIter, kNullStats,
|
|
580
|
-
kTotalOrderSeek, includeFirstKey(),
|
|
698
|
+
kTotalOrderSeek, includeFirstKey(), keyIncludesSeq(),
|
|
699
|
+
!useValueDeltaEncoding(), false /* block_contents_pinned */,
|
|
700
|
+
shouldPersistUDT());
|
|
581
701
|
iter->SeekToFirst();
|
|
582
702
|
for (int index = 0; index < num_records; ++index) {
|
|
583
703
|
ASSERT_TRUE(iter->Valid());
|
|
@@ -585,7 +705,12 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
|
|
|
585
705
|
Slice k = iter->key();
|
|
586
706
|
IndexValue v = iter->value();
|
|
587
707
|
|
|
588
|
-
|
|
708
|
+
if (keyIncludesSeq()) {
|
|
709
|
+
EXPECT_EQ(separators[index], k.ToString());
|
|
710
|
+
} else {
|
|
711
|
+
const Slice user_key = ExtractUserKey(separators[index]);
|
|
712
|
+
EXPECT_EQ(user_key, k);
|
|
713
|
+
}
|
|
589
714
|
EXPECT_EQ(block_handles[index].offset(), v.handle.offset());
|
|
590
715
|
EXPECT_EQ(block_handles[index].size(), v.handle.size());
|
|
591
716
|
EXPECT_EQ(includeFirstKey() ? first_keys[index] : "",
|
|
@@ -598,7 +723,9 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
|
|
|
598
723
|
// read block contents randomly
|
|
599
724
|
iter = reader.NewIndexIterator(
|
|
600
725
|
options.comparator, kDisableGlobalSequenceNumber, kNullIter, kNullStats,
|
|
601
|
-
kTotalOrderSeek, includeFirstKey(),
|
|
726
|
+
kTotalOrderSeek, includeFirstKey(), keyIncludesSeq(),
|
|
727
|
+
!useValueDeltaEncoding(), false /* block_contents_pinned */,
|
|
728
|
+
shouldPersistUDT());
|
|
602
729
|
for (int i = 0; i < num_records * 2; i++) {
|
|
603
730
|
// find a random key in the lookaside array
|
|
604
731
|
int index = rnd.Uniform(num_records);
|
|
@@ -608,7 +735,12 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
|
|
|
608
735
|
iter->Seek(k);
|
|
609
736
|
ASSERT_TRUE(iter->Valid());
|
|
610
737
|
IndexValue v = iter->value();
|
|
611
|
-
|
|
738
|
+
if (keyIncludesSeq()) {
|
|
739
|
+
EXPECT_EQ(separators[index], iter->key().ToString());
|
|
740
|
+
} else {
|
|
741
|
+
const Slice user_key = ExtractUserKey(separators[index]);
|
|
742
|
+
EXPECT_EQ(user_key, iter->key());
|
|
743
|
+
}
|
|
612
744
|
EXPECT_EQ(block_handles[index].offset(), v.handle.offset());
|
|
613
745
|
EXPECT_EQ(block_handles[index].size(), v.handle.size());
|
|
614
746
|
EXPECT_EQ(includeFirstKey() ? first_keys[index] : "",
|
|
@@ -617,11 +749,15 @@ TEST_P(IndexBlockTest, IndexValueEncodingTest) {
|
|
|
617
749
|
delete iter;
|
|
618
750
|
}
|
|
619
751
|
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
752
|
+
// Param 0: key includes sequence number (whether to use user key or internal
|
|
753
|
+
// key as key entry in index block).
|
|
754
|
+
// Param 1: use value delta encoding
|
|
755
|
+
// Param 2: include first key
|
|
756
|
+
// Param 3: user-defined timestamp test mode
|
|
757
|
+
INSTANTIATE_TEST_CASE_P(
|
|
758
|
+
P, IndexBlockTest,
|
|
759
|
+
::testing::Combine(::testing::Bool(), ::testing::Bool(), ::testing::Bool(),
|
|
760
|
+
::testing::ValuesIn(test::GetUDTTestModes())));
|
|
625
761
|
|
|
626
762
|
class BlockPerKVChecksumTest : public DBTestBase {
|
|
627
763
|
public:
|
|
@@ -712,9 +848,12 @@ TEST_F(BlockPerKVChecksumTest, EmptyBlock) {
|
|
|
712
848
|
Options options = Options();
|
|
713
849
|
BlockBasedTableOptions tbo;
|
|
714
850
|
uint8_t protection_bytes_per_key = 8;
|
|
715
|
-
BlockCreateContext create_context{
|
|
716
|
-
|
|
717
|
-
|
|
851
|
+
BlockCreateContext create_context{&tbo,
|
|
852
|
+
nullptr,
|
|
853
|
+
nullptr /* statistics */,
|
|
854
|
+
false /* using_zstd */,
|
|
855
|
+
protection_bytes_per_key,
|
|
856
|
+
options.comparator};
|
|
718
857
|
create_context.Create(&data_block, std::move(contents));
|
|
719
858
|
std::unique_ptr<DataBlockIter> biter{data_block->NewDataIterator(
|
|
720
859
|
options.comparator, kDisableGlobalSequenceNumber)};
|
|
@@ -749,9 +888,12 @@ TEST_F(BlockPerKVChecksumTest, InitializeProtectionInfo) {
|
|
|
749
888
|
Options options = Options();
|
|
750
889
|
BlockBasedTableOptions tbo;
|
|
751
890
|
uint8_t protection_bytes_per_key = 8;
|
|
752
|
-
BlockCreateContext create_context{
|
|
753
|
-
|
|
754
|
-
|
|
891
|
+
BlockCreateContext create_context{&tbo,
|
|
892
|
+
nullptr /* ioptions */,
|
|
893
|
+
nullptr /* statistics */,
|
|
894
|
+
false /* using_zstd */,
|
|
895
|
+
protection_bytes_per_key,
|
|
896
|
+
options.comparator};
|
|
755
897
|
|
|
756
898
|
{
|
|
757
899
|
std::string invalid_content = "1";
|
|
@@ -813,14 +955,19 @@ TEST_F(BlockPerKVChecksumTest, ApproximateMemory) {
|
|
|
813
955
|
uint8_t protection_bytes_per_key = 8;
|
|
814
956
|
BlockCreateContext with_checksum_create_context{
|
|
815
957
|
&tbo,
|
|
958
|
+
nullptr /* ioptions */,
|
|
816
959
|
nullptr /* statistics */,
|
|
817
960
|
false /* using_zstd */,
|
|
818
961
|
protection_bytes_per_key,
|
|
819
962
|
options.comparator,
|
|
820
963
|
true /* index_value_is_full */};
|
|
821
|
-
BlockCreateContext create_context{
|
|
822
|
-
|
|
823
|
-
|
|
964
|
+
BlockCreateContext create_context{&tbo,
|
|
965
|
+
nullptr /* ioptions */,
|
|
966
|
+
nullptr /* statistics */,
|
|
967
|
+
false /* using_zstd */,
|
|
968
|
+
0,
|
|
969
|
+
options.comparator,
|
|
970
|
+
true /* index_value_is_full */};
|
|
824
971
|
|
|
825
972
|
{
|
|
826
973
|
std::unique_ptr<Block_kData> data_block;
|
|
@@ -909,8 +1056,11 @@ class DataBlockKVChecksumTest
|
|
|
909
1056
|
std::vector<std::string> &keys, std::vector<std::string> &values,
|
|
910
1057
|
int num_record) {
|
|
911
1058
|
BlockBasedTableOptions tbo;
|
|
912
|
-
BlockCreateContext create_context{&tbo,
|
|
913
|
-
|
|
1059
|
+
BlockCreateContext create_context{&tbo,
|
|
1060
|
+
nullptr /* statistics */,
|
|
1061
|
+
nullptr /* ioptions */,
|
|
1062
|
+
false /* using_zstd */,
|
|
1063
|
+
GetChecksumLen(),
|
|
914
1064
|
Options().comparator};
|
|
915
1065
|
builder_ = std::make_unique<BlockBuilder>(
|
|
916
1066
|
static_cast<int>(GetRestartInterval()),
|
|
@@ -1036,6 +1186,7 @@ class IndexBlockKVChecksumTest
|
|
|
1036
1186
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1037
1187
|
BlockCreateContext create_context{
|
|
1038
1188
|
&tbo,
|
|
1189
|
+
nullptr /* ioptions */,
|
|
1039
1190
|
nullptr /* statistics */,
|
|
1040
1191
|
false /* _using_zstd */,
|
|
1041
1192
|
protection_bytes_per_key,
|
|
@@ -1110,7 +1261,7 @@ TEST_P(IndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
|
|
|
1110
1261
|
std::vector<BlockHandle> block_handles;
|
|
1111
1262
|
std::vector<std::string> first_keys;
|
|
1112
1263
|
GenerateRandomIndexEntries(&separators, &block_handles, &first_keys,
|
|
1113
|
-
kNumRecords,
|
|
1264
|
+
kNumRecords, 0 /* ts_sz */,
|
|
1114
1265
|
seqno != kDisableGlobalSequenceNumber);
|
|
1115
1266
|
SyncPoint::GetInstance()->DisableProcessing();
|
|
1116
1267
|
std::unique_ptr<Block_kIndex> index_block = GenerateIndexBlock(
|
|
@@ -1123,7 +1274,9 @@ TEST_P(IndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
|
|
|
1123
1274
|
true /* total_order_seek */, IncludeFirstKey() /* have_first_key */,
|
|
1124
1275
|
true /* key_includes_seq */,
|
|
1125
1276
|
!UseValueDeltaEncoding() /* value_is_full */,
|
|
1126
|
-
true /* block_contents_pinned
|
|
1277
|
+
true /* block_contents_pinned*/,
|
|
1278
|
+
true /* user_defined_timestamps_persisted */,
|
|
1279
|
+
nullptr /* prefix_index */)};
|
|
1127
1280
|
biter->SeekToFirst();
|
|
1128
1281
|
const char *checksum_ptr = index_block->TEST_GetKVChecksum();
|
|
1129
1282
|
// Check checksum of correct length is generated
|
|
@@ -1174,9 +1327,12 @@ class MetaIndexBlockKVChecksumTest
|
|
|
1174
1327
|
Options options = Options();
|
|
1175
1328
|
BlockBasedTableOptions tbo;
|
|
1176
1329
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1177
|
-
BlockCreateContext create_context{
|
|
1178
|
-
|
|
1179
|
-
|
|
1330
|
+
BlockCreateContext create_context{&tbo,
|
|
1331
|
+
nullptr /* ioptions */,
|
|
1332
|
+
nullptr /* statistics */,
|
|
1333
|
+
false /* using_zstd */,
|
|
1334
|
+
protection_bytes_per_key,
|
|
1335
|
+
options.comparator};
|
|
1180
1336
|
builder_ =
|
|
1181
1337
|
std::make_unique<BlockBuilder>(static_cast<int>(GetRestartInterval()));
|
|
1182
1338
|
// add a bunch of records to a block
|
|
@@ -1206,9 +1362,12 @@ TEST_P(MetaIndexBlockKVChecksumTest, ChecksumConstructionAndVerification) {
|
|
|
1206
1362
|
Options options = Options();
|
|
1207
1363
|
BlockBasedTableOptions tbo;
|
|
1208
1364
|
uint8_t protection_bytes_per_key = GetChecksumLen();
|
|
1209
|
-
BlockCreateContext create_context{
|
|
1210
|
-
|
|
1211
|
-
|
|
1365
|
+
BlockCreateContext create_context{&tbo,
|
|
1366
|
+
nullptr /* ioptions */,
|
|
1367
|
+
nullptr /* statistics */,
|
|
1368
|
+
false /* using_zstd */,
|
|
1369
|
+
protection_bytes_per_key,
|
|
1370
|
+
options.comparator};
|
|
1212
1371
|
std::vector<int> num_restart_intervals = {1, 16};
|
|
1213
1372
|
for (const auto num_restart_interval : num_restart_intervals) {
|
|
1214
1373
|
const int kNumRecords = num_restart_interval * GetRestartInterval();
|
|
@@ -1364,7 +1523,9 @@ class IndexBlockKVChecksumCorruptionTest : public IndexBlockKVChecksumTest {
|
|
|
1364
1523
|
true /* total_order_seek */, IncludeFirstKey() /* have_first_key */,
|
|
1365
1524
|
true /* key_includes_seq */,
|
|
1366
1525
|
!UseValueDeltaEncoding() /* value_is_full */,
|
|
1367
|
-
true /* block_contents_pinned */,
|
|
1526
|
+
true /* block_contents_pinned */,
|
|
1527
|
+
true /* user_defined_timestamps_persisted */,
|
|
1528
|
+
nullptr /* prefix_index */)};
|
|
1368
1529
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
1369
1530
|
return biter;
|
|
1370
1531
|
}
|
|
@@ -1407,7 +1568,7 @@ TEST_P(IndexBlockKVChecksumCorruptionTest, CorruptEntry) {
|
|
|
1407
1568
|
std::vector<BlockHandle> block_handles;
|
|
1408
1569
|
std::vector<std::string> first_keys;
|
|
1409
1570
|
GenerateRandomIndexEntries(&separators, &block_handles, &first_keys,
|
|
1410
|
-
kNumRecords,
|
|
1571
|
+
kNumRecords, 0 /* ts_sz */,
|
|
1411
1572
|
seqno != kDisableGlobalSequenceNumber);
|
|
1412
1573
|
SyncPoint::GetInstance()->SetCallBack(
|
|
1413
1574
|
"BlockIter::UpdateKey::value", [](void *arg) {
|
|
@@ -28,12 +28,12 @@ Status FilterBlockReaderCommon<TBlocklike>::ReadFilterBlock(
|
|
|
28
28
|
const BlockBasedTable::Rep* const rep = table->get_rep();
|
|
29
29
|
assert(rep);
|
|
30
30
|
|
|
31
|
-
const Status s =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const Status s = table->RetrieveBlock(
|
|
32
|
+
prefetch_buffer, read_options, rep->filter_handle,
|
|
33
|
+
UncompressionDict::GetEmptyDict(), filter_block, get_context,
|
|
34
|
+
lookup_context,
|
|
35
|
+
/* for_compaction */ false, use_cache,
|
|
36
|
+
/* async_read */ false, /* use_block_cache_for_lookup */ true);
|
|
37
37
|
|
|
38
38
|
return s;
|
|
39
39
|
}
|