@nxtedition/rocksdb 8.2.7 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
- package/deps/rocksdb/rocksdb/Makefile +22 -19
- package/deps/rocksdb/rocksdb/TARGETS +8 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
- package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -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 +18 -21
- 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/builder.cc +32 -7
- package/deps/rocksdb/rocksdb/db/c.cc +169 -6
- package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
- package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
- package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
- 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 +107 -43
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
- package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -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 +17 -3
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
- 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 +279 -166
- package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
- package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
- package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
- 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/error_handler.cc +16 -0
- package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
- 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 +86 -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 +101 -11
- package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
- 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 +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
- package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
- package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
- package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
- package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
- 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 +48 -6
- 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 +136 -41
- package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
- package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
- 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/db_stress_common.h +22 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
- 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 +32 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -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 +15 -27
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
- package/deps/rocksdb/rocksdb/env/env.cc +1 -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 +78 -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 +52 -43
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -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 +724 -79
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -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 +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
- 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 +21 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -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/write_batch.h +3 -0
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
- package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -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 +2 -1
- package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
- package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
- package/deps/rocksdb/rocksdb/options/options.cc +15 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
- package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- 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 +115 -42
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
- 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_prefetcher.cc +50 -21
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
- 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 +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
- 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 +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
- 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_fetcher.cc +11 -11
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
- 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/merging_iterator.cc +10 -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 +12 -3
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -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_test.cc +52 -22
- 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/db_bench_tool.cc +65 -26
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
- 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/cast_util.h +14 -0
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
- package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
- package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
- package/deps/rocksdb/rocksdb/util/compression.h +110 -32
- package/deps/rocksdb/rocksdb/util/core_local.h +2 -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/single_thread_executor.h +1 -0
- package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
- package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
- package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
- package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
- package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -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/utilities/backup/backup_engine_test.cc +4 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
- 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_fs.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
- 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/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 +231 -33
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -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 +40 -23
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -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 +39 -11
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -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 +2 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
- package/deps/rocksdb/rocksdb.gyp +2 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -29,14 +29,16 @@ IndexBuilder* IndexBuilder::CreateIndexBuilder(
|
|
|
29
29
|
const InternalKeyComparator* comparator,
|
|
30
30
|
const InternalKeySliceTransform* int_key_slice_transform,
|
|
31
31
|
const bool use_value_delta_encoding,
|
|
32
|
-
const BlockBasedTableOptions& table_opt
|
|
32
|
+
const BlockBasedTableOptions& table_opt, size_t ts_sz,
|
|
33
|
+
const bool persist_user_defined_timestamps) {
|
|
33
34
|
IndexBuilder* result = nullptr;
|
|
34
35
|
switch (index_type) {
|
|
35
36
|
case BlockBasedTableOptions::kBinarySearch: {
|
|
36
37
|
result = new ShortenedIndexBuilder(
|
|
37
38
|
comparator, table_opt.index_block_restart_interval,
|
|
38
39
|
table_opt.format_version, use_value_delta_encoding,
|
|
39
|
-
table_opt.index_shortening, /* include_first_key */ false
|
|
40
|
+
table_opt.index_shortening, /* include_first_key */ false, ts_sz,
|
|
41
|
+
persist_user_defined_timestamps);
|
|
40
42
|
break;
|
|
41
43
|
}
|
|
42
44
|
case BlockBasedTableOptions::kHashSearch: {
|
|
@@ -46,19 +48,22 @@ IndexBuilder* IndexBuilder::CreateIndexBuilder(
|
|
|
46
48
|
result = new HashIndexBuilder(
|
|
47
49
|
comparator, int_key_slice_transform,
|
|
48
50
|
table_opt.index_block_restart_interval, table_opt.format_version,
|
|
49
|
-
use_value_delta_encoding, table_opt.index_shortening
|
|
51
|
+
use_value_delta_encoding, table_opt.index_shortening, ts_sz,
|
|
52
|
+
persist_user_defined_timestamps);
|
|
50
53
|
break;
|
|
51
54
|
}
|
|
52
55
|
case BlockBasedTableOptions::kTwoLevelIndexSearch: {
|
|
53
56
|
result = PartitionedIndexBuilder::CreateIndexBuilder(
|
|
54
|
-
comparator, use_value_delta_encoding, table_opt
|
|
57
|
+
comparator, use_value_delta_encoding, table_opt, ts_sz,
|
|
58
|
+
persist_user_defined_timestamps);
|
|
55
59
|
break;
|
|
56
60
|
}
|
|
57
61
|
case BlockBasedTableOptions::kBinarySearchWithFirstKey: {
|
|
58
62
|
result = new ShortenedIndexBuilder(
|
|
59
63
|
comparator, table_opt.index_block_restart_interval,
|
|
60
64
|
table_opt.format_version, use_value_delta_encoding,
|
|
61
|
-
table_opt.index_shortening, /* include_first_key */ true
|
|
65
|
+
table_opt.index_shortening, /* include_first_key */ true, ts_sz,
|
|
66
|
+
persist_user_defined_timestamps);
|
|
62
67
|
break;
|
|
63
68
|
}
|
|
64
69
|
default: {
|
|
@@ -106,22 +111,31 @@ void ShortenedIndexBuilder::FindShortInternalKeySuccessor(
|
|
|
106
111
|
PartitionedIndexBuilder* PartitionedIndexBuilder::CreateIndexBuilder(
|
|
107
112
|
const InternalKeyComparator* comparator,
|
|
108
113
|
const bool use_value_delta_encoding,
|
|
109
|
-
const BlockBasedTableOptions& table_opt
|
|
114
|
+
const BlockBasedTableOptions& table_opt, size_t ts_sz,
|
|
115
|
+
const bool persist_user_defined_timestamps) {
|
|
110
116
|
return new PartitionedIndexBuilder(comparator, table_opt,
|
|
111
|
-
use_value_delta_encoding
|
|
117
|
+
use_value_delta_encoding, ts_sz,
|
|
118
|
+
persist_user_defined_timestamps);
|
|
112
119
|
}
|
|
113
120
|
|
|
114
121
|
PartitionedIndexBuilder::PartitionedIndexBuilder(
|
|
115
122
|
const InternalKeyComparator* comparator,
|
|
116
123
|
const BlockBasedTableOptions& table_opt,
|
|
117
|
-
const bool use_value_delta_encoding
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
const bool use_value_delta_encoding, size_t ts_sz,
|
|
125
|
+
const bool persist_user_defined_timestamps)
|
|
126
|
+
: IndexBuilder(comparator, ts_sz, persist_user_defined_timestamps),
|
|
127
|
+
index_block_builder_(
|
|
128
|
+
table_opt.index_block_restart_interval, true /*use_delta_encoding*/,
|
|
129
|
+
use_value_delta_encoding,
|
|
130
|
+
BlockBasedTableOptions::kDataBlockBinarySearch /* index_type */,
|
|
131
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
132
|
+
persist_user_defined_timestamps, false /* is_user_key */),
|
|
133
|
+
index_block_builder_without_seq_(
|
|
134
|
+
table_opt.index_block_restart_interval, true /*use_delta_encoding*/,
|
|
135
|
+
use_value_delta_encoding,
|
|
136
|
+
BlockBasedTableOptions::kDataBlockBinarySearch /* index_type */,
|
|
137
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
138
|
+
persist_user_defined_timestamps, true /* is_user_key */),
|
|
125
139
|
sub_index_builder_(nullptr),
|
|
126
140
|
table_opt_(table_opt),
|
|
127
141
|
// We start by false. After each partition we revise the value based on
|
|
@@ -142,7 +156,8 @@ void PartitionedIndexBuilder::MakeNewSubIndexBuilder() {
|
|
|
142
156
|
sub_index_builder_ = new ShortenedIndexBuilder(
|
|
143
157
|
comparator_, table_opt_.index_block_restart_interval,
|
|
144
158
|
table_opt_.format_version, use_value_delta_encoding_,
|
|
145
|
-
table_opt_.index_shortening, /* include_first_key */ false
|
|
159
|
+
table_opt_.index_shortening, /* include_first_key */ false, ts_sz_,
|
|
160
|
+
persist_user_defined_timestamps_);
|
|
146
161
|
|
|
147
162
|
// Set sub_index_builder_->seperator_is_key_plus_seq_ to true if
|
|
148
163
|
// seperator_is_key_plus_seq_ is true (internal-key mode) (set to false by
|
|
@@ -9,13 +9,12 @@
|
|
|
9
9
|
|
|
10
10
|
#pragma once
|
|
11
11
|
|
|
12
|
-
#include <assert.h>
|
|
13
|
-
|
|
14
12
|
#include <cinttypes>
|
|
15
13
|
#include <list>
|
|
16
14
|
#include <string>
|
|
17
15
|
#include <unordered_map>
|
|
18
16
|
|
|
17
|
+
#include "db/dbformat.h"
|
|
19
18
|
#include "rocksdb/comparator.h"
|
|
20
19
|
#include "table/block_based/block_based_table_factory.h"
|
|
21
20
|
#include "table/block_based/block_builder.h"
|
|
@@ -38,8 +37,8 @@ class IndexBuilder {
|
|
|
38
37
|
BlockBasedTableOptions::IndexType index_type,
|
|
39
38
|
const ROCKSDB_NAMESPACE::InternalKeyComparator* comparator,
|
|
40
39
|
const InternalKeySliceTransform* int_key_slice_transform,
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
bool use_value_delta_encoding, const BlockBasedTableOptions& table_opt,
|
|
41
|
+
size_t ts_sz, bool persist_user_defined_timestamps);
|
|
43
42
|
|
|
44
43
|
// Index builder will construct a set of blocks which contain:
|
|
45
44
|
// 1. One primary index block.
|
|
@@ -49,10 +48,13 @@ class IndexBuilder {
|
|
|
49
48
|
Slice index_block_contents;
|
|
50
49
|
std::unordered_map<std::string, Slice> meta_blocks;
|
|
51
50
|
};
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
IndexBuilder(const InternalKeyComparator* comparator, size_t ts_sz,
|
|
52
|
+
bool persist_user_defined_timestamps)
|
|
53
|
+
: comparator_(comparator),
|
|
54
|
+
ts_sz_(ts_sz),
|
|
55
|
+
persist_user_defined_timestamps_(persist_user_defined_timestamps) {}
|
|
54
56
|
|
|
55
|
-
virtual ~IndexBuilder()
|
|
57
|
+
virtual ~IndexBuilder() = default;
|
|
56
58
|
|
|
57
59
|
// Add a new index entry to index block.
|
|
58
60
|
// To allow further optimization, we provide `last_key_in_current_block` and
|
|
@@ -105,6 +107,13 @@ class IndexBuilder {
|
|
|
105
107
|
|
|
106
108
|
protected:
|
|
107
109
|
const InternalKeyComparator* comparator_;
|
|
110
|
+
// Size of user-defined timestamp in bytes.
|
|
111
|
+
size_t ts_sz_;
|
|
112
|
+
// Whether user-defined timestamp in the user key should be persisted when
|
|
113
|
+
// creating index block. If this flag is false, user-defined timestamp will
|
|
114
|
+
// be stripped from user key for each index entry, and the
|
|
115
|
+
// `first_internal_key` in `IndexValue` if it's included.
|
|
116
|
+
bool persist_user_defined_timestamps_;
|
|
108
117
|
// Set after ::Finish is called
|
|
109
118
|
size_t index_size_ = 0;
|
|
110
119
|
};
|
|
@@ -120,19 +129,26 @@ class IndexBuilder {
|
|
|
120
129
|
// substitute key that serves the same function.
|
|
121
130
|
class ShortenedIndexBuilder : public IndexBuilder {
|
|
122
131
|
public:
|
|
123
|
-
|
|
132
|
+
ShortenedIndexBuilder(
|
|
124
133
|
const InternalKeyComparator* comparator,
|
|
125
134
|
const int index_block_restart_interval, const uint32_t format_version,
|
|
126
135
|
const bool use_value_delta_encoding,
|
|
127
136
|
BlockBasedTableOptions::IndexShorteningMode shortening_mode,
|
|
128
|
-
bool include_first_key
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
137
|
+
bool include_first_key, size_t ts_sz,
|
|
138
|
+
const bool persist_user_defined_timestamps)
|
|
139
|
+
: IndexBuilder(comparator, ts_sz, persist_user_defined_timestamps),
|
|
140
|
+
index_block_builder_(
|
|
141
|
+
index_block_restart_interval, true /*use_delta_encoding*/,
|
|
142
|
+
use_value_delta_encoding,
|
|
143
|
+
BlockBasedTableOptions::kDataBlockBinarySearch /* index_type */,
|
|
144
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
145
|
+
persist_user_defined_timestamps, false /* is_user_key */),
|
|
146
|
+
index_block_builder_without_seq_(
|
|
147
|
+
index_block_restart_interval, true /*use_delta_encoding*/,
|
|
148
|
+
use_value_delta_encoding,
|
|
149
|
+
BlockBasedTableOptions::kDataBlockBinarySearch /* index_type */,
|
|
150
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
151
|
+
persist_user_defined_timestamps, true /* is_user_key */),
|
|
136
152
|
use_value_delta_encoding_(use_value_delta_encoding),
|
|
137
153
|
include_first_key_(include_first_key),
|
|
138
154
|
shortening_mode_(shortening_mode) {
|
|
@@ -140,15 +156,15 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
140
156
|
seperator_is_key_plus_seq_ = (format_version <= 2);
|
|
141
157
|
}
|
|
142
158
|
|
|
143
|
-
|
|
159
|
+
void OnKeyAdded(const Slice& key) override {
|
|
144
160
|
if (include_first_key_ && current_block_first_internal_key_.empty()) {
|
|
145
161
|
current_block_first_internal_key_.assign(key.data(), key.size());
|
|
146
162
|
}
|
|
147
163
|
}
|
|
148
164
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
165
|
+
void AddIndexEntry(std::string* last_key_in_current_block,
|
|
166
|
+
const Slice* first_key_in_next_block,
|
|
167
|
+
const BlockHandle& block_handle) override {
|
|
152
168
|
if (first_key_in_next_block != nullptr) {
|
|
153
169
|
if (shortening_mode_ !=
|
|
154
170
|
BlockBasedTableOptions::IndexShorteningMode::kNoShortening) {
|
|
@@ -172,7 +188,19 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
172
188
|
auto sep = Slice(*last_key_in_current_block);
|
|
173
189
|
|
|
174
190
|
assert(!include_first_key_ || !current_block_first_internal_key_.empty());
|
|
175
|
-
|
|
191
|
+
// When UDT should not be persisted, the index block builders take care of
|
|
192
|
+
// stripping UDT from the key, for the first internal key contained in the
|
|
193
|
+
// IndexValue, we need to explicitly do the stripping here before passing
|
|
194
|
+
// it to the block builders.
|
|
195
|
+
std::string first_internal_key_buf;
|
|
196
|
+
Slice first_internal_key = current_block_first_internal_key_;
|
|
197
|
+
if (!current_block_first_internal_key_.empty() && ts_sz_ > 0 &&
|
|
198
|
+
!persist_user_defined_timestamps_) {
|
|
199
|
+
StripTimestampFromInternalKey(&first_internal_key_buf,
|
|
200
|
+
current_block_first_internal_key_, ts_sz_);
|
|
201
|
+
first_internal_key = first_internal_key_buf;
|
|
202
|
+
}
|
|
203
|
+
IndexValue entry(block_handle, first_internal_key);
|
|
176
204
|
std::string encoded_entry;
|
|
177
205
|
std::string delta_encoded_entry;
|
|
178
206
|
entry.EncodeTo(&encoded_entry, include_first_key_, nullptr);
|
|
@@ -185,6 +213,16 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
185
213
|
}
|
|
186
214
|
last_encoded_handle_ = block_handle;
|
|
187
215
|
const Slice delta_encoded_entry_slice(delta_encoded_entry);
|
|
216
|
+
|
|
217
|
+
// TODO(yuzhangyu): fix this when "FindShortInternalKeySuccessor"
|
|
218
|
+
// optimization is available.
|
|
219
|
+
// Timestamp aware comparator currently doesn't provide override for
|
|
220
|
+
// "FindShortInternalKeySuccessor" optimization. So the actual
|
|
221
|
+
// last key in current block is used as the key for indexing the current
|
|
222
|
+
// block. As a result, when UDTs should not be persisted, it's safe to strip
|
|
223
|
+
// away the UDT from key in index block as data block does the same thing.
|
|
224
|
+
// What are the implications if a "FindShortInternalKeySuccessor"
|
|
225
|
+
// optimization is provided.
|
|
188
226
|
index_block_builder_.Add(sep, encoded_entry, &delta_encoded_entry_slice);
|
|
189
227
|
if (!seperator_is_key_plus_seq_) {
|
|
190
228
|
index_block_builder_without_seq_.Add(ExtractUserKey(sep), encoded_entry,
|
|
@@ -195,9 +233,8 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
195
233
|
}
|
|
196
234
|
|
|
197
235
|
using IndexBuilder::Finish;
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const BlockHandle& /*last_partition_block_handle*/) override {
|
|
236
|
+
Status Finish(IndexBlocks* index_blocks,
|
|
237
|
+
const BlockHandle& /*last_partition_block_handle*/) override {
|
|
201
238
|
if (seperator_is_key_plus_seq_) {
|
|
202
239
|
index_blocks->index_block_contents = index_block_builder_.Finish();
|
|
203
240
|
} else {
|
|
@@ -208,9 +245,9 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
208
245
|
return Status::OK();
|
|
209
246
|
}
|
|
210
247
|
|
|
211
|
-
|
|
248
|
+
size_t IndexSize() const override { return index_size_; }
|
|
212
249
|
|
|
213
|
-
|
|
250
|
+
bool seperator_is_key_plus_seq() override {
|
|
214
251
|
return seperator_is_key_plus_seq_;
|
|
215
252
|
}
|
|
216
253
|
|
|
@@ -265,27 +302,28 @@ class ShortenedIndexBuilder : public IndexBuilder {
|
|
|
265
302
|
// data copy or small heap allocations for prefixes.
|
|
266
303
|
class HashIndexBuilder : public IndexBuilder {
|
|
267
304
|
public:
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
: IndexBuilder(comparator),
|
|
305
|
+
HashIndexBuilder(const InternalKeyComparator* comparator,
|
|
306
|
+
const SliceTransform* hash_key_extractor,
|
|
307
|
+
int index_block_restart_interval, int format_version,
|
|
308
|
+
bool use_value_delta_encoding,
|
|
309
|
+
BlockBasedTableOptions::IndexShorteningMode shortening_mode,
|
|
310
|
+
size_t ts_sz, const bool persist_user_defined_timestamps)
|
|
311
|
+
: IndexBuilder(comparator, ts_sz, persist_user_defined_timestamps),
|
|
275
312
|
primary_index_builder_(comparator, index_block_restart_interval,
|
|
276
313
|
format_version, use_value_delta_encoding,
|
|
277
|
-
shortening_mode, /* include_first_key */ false
|
|
314
|
+
shortening_mode, /* include_first_key */ false,
|
|
315
|
+
ts_sz, persist_user_defined_timestamps),
|
|
278
316
|
hash_key_extractor_(hash_key_extractor) {}
|
|
279
317
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
318
|
+
void AddIndexEntry(std::string* last_key_in_current_block,
|
|
319
|
+
const Slice* first_key_in_next_block,
|
|
320
|
+
const BlockHandle& block_handle) override {
|
|
283
321
|
++current_restart_index_;
|
|
284
322
|
primary_index_builder_.AddIndexEntry(last_key_in_current_block,
|
|
285
323
|
first_key_in_next_block, block_handle);
|
|
286
324
|
}
|
|
287
325
|
|
|
288
|
-
|
|
326
|
+
void OnKeyAdded(const Slice& key) override {
|
|
289
327
|
auto key_prefix = hash_key_extractor_->Transform(key);
|
|
290
328
|
bool is_first_entry = pending_block_num_ == 0;
|
|
291
329
|
|
|
@@ -312,9 +350,8 @@ class HashIndexBuilder : public IndexBuilder {
|
|
|
312
350
|
}
|
|
313
351
|
}
|
|
314
352
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
const BlockHandle& last_partition_block_handle) override {
|
|
353
|
+
Status Finish(IndexBlocks* index_blocks,
|
|
354
|
+
const BlockHandle& last_partition_block_handle) override {
|
|
318
355
|
if (pending_block_num_ != 0) {
|
|
319
356
|
FlushPendingPrefix();
|
|
320
357
|
}
|
|
@@ -327,12 +364,12 @@ class HashIndexBuilder : public IndexBuilder {
|
|
|
327
364
|
return s;
|
|
328
365
|
}
|
|
329
366
|
|
|
330
|
-
|
|
367
|
+
size_t IndexSize() const override {
|
|
331
368
|
return primary_index_builder_.IndexSize() + prefix_block_.size() +
|
|
332
369
|
prefix_meta_block_.size();
|
|
333
370
|
}
|
|
334
371
|
|
|
335
|
-
|
|
372
|
+
bool seperator_is_key_plus_seq() override {
|
|
336
373
|
return primary_index_builder_.seperator_is_key_plus_seq();
|
|
337
374
|
}
|
|
338
375
|
|
|
@@ -378,24 +415,24 @@ class PartitionedIndexBuilder : public IndexBuilder {
|
|
|
378
415
|
public:
|
|
379
416
|
static PartitionedIndexBuilder* CreateIndexBuilder(
|
|
380
417
|
const ROCKSDB_NAMESPACE::InternalKeyComparator* comparator,
|
|
381
|
-
|
|
382
|
-
|
|
418
|
+
bool use_value_delta_encoding, const BlockBasedTableOptions& table_opt,
|
|
419
|
+
size_t ts_sz, bool persist_user_defined_timestamps);
|
|
383
420
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
421
|
+
PartitionedIndexBuilder(const InternalKeyComparator* comparator,
|
|
422
|
+
const BlockBasedTableOptions& table_opt,
|
|
423
|
+
bool use_value_delta_encoding, size_t ts_sz,
|
|
424
|
+
bool persist_user_defined_timestamps);
|
|
387
425
|
|
|
388
|
-
|
|
426
|
+
~PartitionedIndexBuilder() override;
|
|
389
427
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
428
|
+
void AddIndexEntry(std::string* last_key_in_current_block,
|
|
429
|
+
const Slice* first_key_in_next_block,
|
|
430
|
+
const BlockHandle& block_handle) override;
|
|
393
431
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
const BlockHandle& last_partition_block_handle) override;
|
|
432
|
+
Status Finish(IndexBlocks* index_blocks,
|
|
433
|
+
const BlockHandle& last_partition_block_handle) override;
|
|
397
434
|
|
|
398
|
-
|
|
435
|
+
size_t IndexSize() const override { return index_size_; }
|
|
399
436
|
size_t TopLevelIndexSize(uint64_t) const { return top_level_index_size_; }
|
|
400
437
|
size_t NumPartitions() const;
|
|
401
438
|
|
|
@@ -414,11 +451,13 @@ class PartitionedIndexBuilder : public IndexBuilder {
|
|
|
414
451
|
// cutting the next partition
|
|
415
452
|
void RequestPartitionCut();
|
|
416
453
|
|
|
417
|
-
|
|
454
|
+
bool seperator_is_key_plus_seq() override {
|
|
418
455
|
return seperator_is_key_plus_seq_;
|
|
419
456
|
}
|
|
420
457
|
|
|
421
|
-
bool get_use_value_delta_encoding() {
|
|
458
|
+
bool get_use_value_delta_encoding() const {
|
|
459
|
+
return use_value_delta_encoding_;
|
|
460
|
+
}
|
|
422
461
|
|
|
423
462
|
private:
|
|
424
463
|
// Set after ::Finish is called
|
|
@@ -26,7 +26,7 @@ Status BlockBasedTable::IndexReaderCommon::ReadIndexBlock(
|
|
|
26
26
|
assert(rep != nullptr);
|
|
27
27
|
|
|
28
28
|
const Status s = table->RetrieveBlock(
|
|
29
|
-
prefetch_buffer, read_options, rep->
|
|
29
|
+
prefetch_buffer, read_options, rep->index_handle,
|
|
30
30
|
UncompressionDict::GetEmptyDict(), &index_block->As<Block_kIndex>(),
|
|
31
31
|
get_context, lookup_context, /* for_compaction */ false, use_cache,
|
|
32
32
|
/* async_read */ false);
|
|
@@ -65,6 +65,12 @@ class BlockBasedTable::IndexReaderCommon : public BlockBasedTable::IndexReader {
|
|
|
65
65
|
return table_->get_rep()->table_options.cache_index_and_filter_blocks;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
bool user_defined_timestamps_persisted() const {
|
|
69
|
+
assert(table_ != nullptr);
|
|
70
|
+
assert(table_->get_rep() != nullptr);
|
|
71
|
+
return table_->get_rep()->user_defined_timestamps_persisted;
|
|
72
|
+
}
|
|
73
|
+
|
|
68
74
|
Status GetOrReadIndexBlock(bool no_io, GetContext* get_context,
|
|
69
75
|
BlockCacheLookupContext* lookup_context,
|
|
70
76
|
CachableEntry<Block>* index_block,
|
|
@@ -26,15 +26,22 @@ PartitionedFilterBlockBuilder::PartitionedFilterBlockBuilder(
|
|
|
26
26
|
FilterBitsBuilder* filter_bits_builder, int index_block_restart_interval,
|
|
27
27
|
const bool use_value_delta_encoding,
|
|
28
28
|
PartitionedIndexBuilder* const p_index_builder,
|
|
29
|
-
const uint32_t partition_size
|
|
29
|
+
const uint32_t partition_size, size_t ts_sz,
|
|
30
|
+
const bool persist_user_defined_timestamps)
|
|
30
31
|
: FullFilterBlockBuilder(_prefix_extractor, whole_key_filtering,
|
|
31
32
|
filter_bits_builder),
|
|
32
|
-
index_on_filter_block_builder_(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
index_on_filter_block_builder_(
|
|
34
|
+
index_block_restart_interval, true /*use_delta_encoding*/,
|
|
35
|
+
use_value_delta_encoding,
|
|
36
|
+
BlockBasedTableOptions::kDataBlockBinarySearch /* index_type */,
|
|
37
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
38
|
+
persist_user_defined_timestamps, false /* is_user_key */),
|
|
39
|
+
index_on_filter_block_builder_without_seq_(
|
|
40
|
+
index_block_restart_interval, true /*use_delta_encoding*/,
|
|
41
|
+
use_value_delta_encoding,
|
|
42
|
+
BlockBasedTableOptions::kDataBlockBinarySearch /* index_type */,
|
|
43
|
+
0.75 /* data_block_hash_table_util_ratio */, ts_sz,
|
|
44
|
+
persist_user_defined_timestamps, true /* is_user_key */),
|
|
38
45
|
p_index_builder_(p_index_builder),
|
|
39
46
|
keys_added_to_partition_(0),
|
|
40
47
|
total_added_in_built_(0) {
|
|
@@ -270,7 +277,8 @@ BlockHandle PartitionedFilterBlockReader::GetFilterPartitionHandle(
|
|
|
270
277
|
table()->get_rep()->get_global_seqno(BlockType::kFilterPartitionIndex),
|
|
271
278
|
&iter, kNullStats, true /* total_order_seek */,
|
|
272
279
|
false /* have_first_key */, index_key_includes_seq(),
|
|
273
|
-
index_value_is_full()
|
|
280
|
+
index_value_is_full(), false /* block_contents_pinned */,
|
|
281
|
+
user_defined_timestamps_persisted());
|
|
274
282
|
iter.Seek(entry);
|
|
275
283
|
if (UNLIKELY(!iter.Valid())) {
|
|
276
284
|
// entry is larger than all the keys. However its prefix might still be
|
|
@@ -470,7 +478,8 @@ Status PartitionedFilterBlockReader::CacheDependencies(
|
|
|
470
478
|
comparator->user_comparator(),
|
|
471
479
|
rep->get_global_seqno(BlockType::kFilterPartitionIndex), &biter,
|
|
472
480
|
kNullStats, true /* total_order_seek */, false /* have_first_key */,
|
|
473
|
-
index_key_includes_seq(), index_value_is_full()
|
|
481
|
+
index_key_includes_seq(), index_value_is_full(),
|
|
482
|
+
false /* block_contents_pinned */, user_defined_timestamps_persisted());
|
|
474
483
|
// Index partitions are assumed to be consecuitive. Prefetch them all.
|
|
475
484
|
// Read the first block offset
|
|
476
485
|
biter.SeekToFirst();
|
|
@@ -488,14 +497,14 @@ Status PartitionedFilterBlockReader::CacheDependencies(
|
|
|
488
497
|
tail_prefetch_buffer->GetPrefetchOffset() > prefetch_off) {
|
|
489
498
|
rep->CreateFilePrefetchBuffer(
|
|
490
499
|
0, 0, &prefetch_buffer, false /* Implicit autoreadahead */,
|
|
491
|
-
0 /*num_reads_*/, 0 /*num_file_reads_for_auto_readahead
|
|
500
|
+
0 /*num_reads_*/, 0 /*num_file_reads_for_auto_readahead*/,
|
|
501
|
+
/*upper_bound_offset*/ 0);
|
|
492
502
|
|
|
493
503
|
IOOptions opts;
|
|
494
504
|
s = rep->file->PrepareIOOptions(ro, opts);
|
|
495
505
|
if (s.ok()) {
|
|
496
506
|
s = prefetch_buffer->Prefetch(opts, rep->file.get(), prefetch_off,
|
|
497
|
-
static_cast<size_t>(prefetch_len)
|
|
498
|
-
ro.rate_limiter_priority);
|
|
507
|
+
static_cast<size_t>(prefetch_len));
|
|
499
508
|
}
|
|
500
509
|
if (!s.ok()) {
|
|
501
510
|
return s;
|
|
@@ -551,4 +560,10 @@ bool PartitionedFilterBlockReader::index_value_is_full() const {
|
|
|
551
560
|
return table()->get_rep()->index_value_is_full;
|
|
552
561
|
}
|
|
553
562
|
|
|
563
|
+
bool PartitionedFilterBlockReader::user_defined_timestamps_persisted() const {
|
|
564
|
+
assert(table());
|
|
565
|
+
assert(table()->get_rep());
|
|
566
|
+
|
|
567
|
+
return table()->get_rep()->user_defined_timestamps_persisted;
|
|
568
|
+
}
|
|
554
569
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -31,7 +31,8 @@ class PartitionedFilterBlockBuilder : public FullFilterBlockBuilder {
|
|
|
31
31
|
FilterBitsBuilder* filter_bits_builder, int index_block_restart_interval,
|
|
32
32
|
const bool use_value_delta_encoding,
|
|
33
33
|
PartitionedIndexBuilder* const p_index_builder,
|
|
34
|
-
const uint32_t partition_size
|
|
34
|
+
const uint32_t partition_size, size_t ts_sz,
|
|
35
|
+
const bool persist_user_defined_timestamps);
|
|
35
36
|
|
|
36
37
|
virtual ~PartitionedFilterBlockBuilder();
|
|
37
38
|
|
|
@@ -172,6 +173,7 @@ class PartitionedFilterBlockReader
|
|
|
172
173
|
const InternalKeyComparator* internal_comparator() const;
|
|
173
174
|
bool index_key_includes_seq() const;
|
|
174
175
|
bool index_value_is_full() const;
|
|
176
|
+
bool user_defined_timestamps_persisted() const;
|
|
175
177
|
|
|
176
178
|
protected:
|
|
177
179
|
// For partition blocks pinned in cache. Can be a subset of blocks
|