@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
|
@@ -634,13 +634,22 @@ bool BlockIter<TValue>::ParseNextKey(bool* is_shared) {
|
|
|
634
634
|
} else {
|
|
635
635
|
if (shared == 0) {
|
|
636
636
|
*is_shared = false;
|
|
637
|
-
// If this key doesn't share any bytes with prev key
|
|
638
|
-
// to
|
|
639
|
-
|
|
637
|
+
// If this key doesn't share any bytes with prev key, and no min timestamp
|
|
638
|
+
// needs to be padded to the key, then we don't need to decode it and
|
|
639
|
+
// can use its address in the block directly (no copy).
|
|
640
|
+
UpdateRawKeyAndMaybePadMinTimestamp(Slice(p, non_shared));
|
|
640
641
|
} else {
|
|
641
642
|
// This key share `shared` bytes with prev key, we need to decode it
|
|
642
643
|
*is_shared = true;
|
|
643
|
-
|
|
644
|
+
// If user-defined timestamp is stripped from user key before keys are
|
|
645
|
+
// delta encoded, the decoded key consisting of the shared and non shared
|
|
646
|
+
// bytes do not have user-defined timestamp yet. We need to pad min
|
|
647
|
+
// timestamp to it.
|
|
648
|
+
if (pad_min_timestamp_) {
|
|
649
|
+
raw_key_.TrimAppendWithTimestamp(shared, p, non_shared, ts_sz_);
|
|
650
|
+
} else {
|
|
651
|
+
raw_key_.TrimAppend(shared, p, non_shared);
|
|
652
|
+
}
|
|
644
653
|
}
|
|
645
654
|
value_ = Slice(p + non_shared, value_length);
|
|
646
655
|
if (shared == 0) {
|
|
@@ -662,7 +671,8 @@ bool DataBlockIter::ParseNextDataKey(bool* is_shared) {
|
|
|
662
671
|
// If we are reading a file with a global sequence number we should
|
|
663
672
|
// expect that all encoded sequence numbers are zeros and any value
|
|
664
673
|
// type is kTypeValue, kTypeMerge, kTypeDeletion,
|
|
665
|
-
// kTypeDeletionWithTimestamp, or
|
|
674
|
+
// kTypeDeletionWithTimestamp, kTypeRangeDeletion, or
|
|
675
|
+
// kTypeWideColumnEntity.
|
|
666
676
|
uint64_t packed = ExtractInternalKeyFooter(raw_key_.GetKey());
|
|
667
677
|
SequenceNumber seqno;
|
|
668
678
|
ValueType value_type;
|
|
@@ -671,7 +681,8 @@ bool DataBlockIter::ParseNextDataKey(bool* is_shared) {
|
|
|
671
681
|
value_type == ValueType::kTypeMerge ||
|
|
672
682
|
value_type == ValueType::kTypeDeletion ||
|
|
673
683
|
value_type == ValueType::kTypeDeletionWithTimestamp ||
|
|
674
|
-
value_type == ValueType::kTypeRangeDeletion
|
|
684
|
+
value_type == ValueType::kTypeRangeDeletion ||
|
|
685
|
+
value_type == ValueType::kTypeWideColumnEntity);
|
|
675
686
|
assert(seqno == 0);
|
|
676
687
|
}
|
|
677
688
|
#endif // NDEBUG
|
|
@@ -686,7 +697,8 @@ bool IndexBlockIter::ParseNextIndexKey() {
|
|
|
686
697
|
bool ok = (value_delta_encoded_) ? ParseNextKey<DecodeEntryV4>(&is_shared)
|
|
687
698
|
: ParseNextKey<DecodeEntry>(&is_shared);
|
|
688
699
|
if (ok) {
|
|
689
|
-
if (value_delta_encoded_ || global_seqno_state_ != nullptr
|
|
700
|
+
if (value_delta_encoded_ || global_seqno_state_ != nullptr ||
|
|
701
|
+
pad_min_timestamp_) {
|
|
690
702
|
DecodeCurrentValue(is_shared);
|
|
691
703
|
}
|
|
692
704
|
}
|
|
@@ -726,12 +738,19 @@ void IndexBlockIter::DecodeCurrentValue(bool is_shared) {
|
|
|
726
738
|
assert(value_type == ValueType::kTypeValue ||
|
|
727
739
|
value_type == ValueType::kTypeMerge ||
|
|
728
740
|
value_type == ValueType::kTypeDeletion ||
|
|
729
|
-
value_type == ValueType::kTypeRangeDeletion
|
|
741
|
+
value_type == ValueType::kTypeRangeDeletion ||
|
|
742
|
+
value_type == ValueType::kTypeWideColumnEntity);
|
|
730
743
|
|
|
731
744
|
first_internal_key.UpdateInternalKey(global_seqno_state_->global_seqno,
|
|
732
745
|
value_type);
|
|
733
746
|
decoded_value_.first_internal_key = first_internal_key.GetKey();
|
|
734
747
|
}
|
|
748
|
+
if (pad_min_timestamp_ && !decoded_value_.first_internal_key.empty()) {
|
|
749
|
+
first_internal_key_with_ts_.clear();
|
|
750
|
+
PadInternalKeyWithMinTimestamp(&first_internal_key_with_ts_,
|
|
751
|
+
decoded_value_.first_internal_key, ts_sz_);
|
|
752
|
+
decoded_value_.first_internal_key = first_internal_key_with_ts_;
|
|
753
|
+
}
|
|
735
754
|
}
|
|
736
755
|
|
|
737
756
|
template <class TValue>
|
|
@@ -817,7 +836,7 @@ bool BlockIter<TValue>::BinarySeek(const Slice& target, uint32_t* index,
|
|
|
817
836
|
return false;
|
|
818
837
|
}
|
|
819
838
|
Slice mid_key(key_ptr, non_shared);
|
|
820
|
-
|
|
839
|
+
UpdateRawKeyAndMaybePadMinTimestamp(mid_key);
|
|
821
840
|
int cmp = CompareCurrentKey(target);
|
|
822
841
|
if (cmp < 0) {
|
|
823
842
|
// Key at "mid" is smaller than "target". Therefore all
|
|
@@ -860,7 +879,7 @@ int IndexBlockIter::CompareBlockKey(uint32_t block_index, const Slice& target) {
|
|
|
860
879
|
return 1; // Return target is smaller
|
|
861
880
|
}
|
|
862
881
|
Slice block_key(key_ptr, non_shared);
|
|
863
|
-
|
|
882
|
+
UpdateRawKeyAndMaybePadMinTimestamp(block_key);
|
|
864
883
|
return CompareCurrentKey(target);
|
|
865
884
|
}
|
|
866
885
|
|
|
@@ -1046,10 +1065,8 @@ Block::Block(BlockContents&& contents, size_t read_amp_bytes_per_bit,
|
|
|
1046
1065
|
|
|
1047
1066
|
uint16_t map_offset;
|
|
1048
1067
|
data_block_hash_index_.Initialize(
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
sizeof(uint32_t)), /*chop off
|
|
1052
|
-
NUM_RESTARTS*/
|
|
1068
|
+
data_, static_cast<uint16_t>(size_ - sizeof(uint32_t)), /*chop off
|
|
1069
|
+
NUM_RESTARTS*/
|
|
1053
1070
|
&map_offset);
|
|
1054
1071
|
|
|
1055
1072
|
restart_offset_ = map_offset - num_restarts_ * sizeof(uint32_t);
|
|
@@ -1080,9 +1097,12 @@ void Block::InitializeDataBlockProtectionInfo(uint8_t protection_bytes_per_key,
|
|
|
1080
1097
|
//
|
|
1081
1098
|
// We do not know global_seqno yet, so checksum computation and
|
|
1082
1099
|
// verification all assume global_seqno = 0.
|
|
1100
|
+
// TODO(yuzhangyu): handle the implication of padding timestamp for kv
|
|
1101
|
+
// protection.
|
|
1083
1102
|
std::unique_ptr<DataBlockIter> iter{NewDataIterator(
|
|
1084
1103
|
raw_ucmp, kDisableGlobalSequenceNumber, nullptr /* iter */,
|
|
1085
|
-
nullptr /* stats */, true /* block_contents_pinned
|
|
1104
|
+
nullptr /* stats */, true /* block_contents_pinned */,
|
|
1105
|
+
true /* user_defined_timestamps_persisted */)};
|
|
1086
1106
|
if (iter->status().ok()) {
|
|
1087
1107
|
block_restart_interval_ = iter->GetRestartInterval();
|
|
1088
1108
|
}
|
|
@@ -1123,11 +1143,14 @@ void Block::InitializeIndexBlockProtectionInfo(uint8_t protection_bytes_per_key,
|
|
|
1123
1143
|
// raw_key_.GetKey() returned by iter->key() as the `key` part of key-value
|
|
1124
1144
|
// checksum, and the content of this buffer do not change for different
|
|
1125
1145
|
// values of `global_seqno` or `key_includes_seq`.
|
|
1146
|
+
// TODO(yuzhangyu): handle the implication of padding timestamp for kv
|
|
1147
|
+
// protection.
|
|
1126
1148
|
std::unique_ptr<IndexBlockIter> iter{NewIndexIterator(
|
|
1127
1149
|
raw_ucmp, kDisableGlobalSequenceNumber /* global_seqno */, nullptr,
|
|
1128
1150
|
nullptr /* Statistics */, true /* total_order_seek */,
|
|
1129
1151
|
index_has_first_key /* have_first_key */, false /* key_includes_seq */,
|
|
1130
1152
|
value_is_full, true /* block_contents_pinned */,
|
|
1153
|
+
true /* user_defined_timestamps_persisted*/,
|
|
1131
1154
|
nullptr /* prefix_index */)};
|
|
1132
1155
|
if (iter->status().ok()) {
|
|
1133
1156
|
block_restart_interval_ = iter->GetRestartInterval();
|
|
@@ -1210,7 +1233,8 @@ MetaBlockIter* Block::NewMetaIterator(bool block_contents_pinned) {
|
|
|
1210
1233
|
DataBlockIter* Block::NewDataIterator(const Comparator* raw_ucmp,
|
|
1211
1234
|
SequenceNumber global_seqno,
|
|
1212
1235
|
DataBlockIter* iter, Statistics* stats,
|
|
1213
|
-
bool block_contents_pinned
|
|
1236
|
+
bool block_contents_pinned,
|
|
1237
|
+
bool user_defined_timestamps_persisted) {
|
|
1214
1238
|
DataBlockIter* ret_iter;
|
|
1215
1239
|
if (iter != nullptr) {
|
|
1216
1240
|
ret_iter = iter;
|
|
@@ -1229,6 +1253,7 @@ DataBlockIter* Block::NewDataIterator(const Comparator* raw_ucmp,
|
|
|
1229
1253
|
ret_iter->Initialize(
|
|
1230
1254
|
raw_ucmp, data_, restart_offset_, num_restarts_, global_seqno,
|
|
1231
1255
|
read_amp_bitmap_.get(), block_contents_pinned,
|
|
1256
|
+
user_defined_timestamps_persisted,
|
|
1232
1257
|
data_block_hash_index_.Valid() ? &data_block_hash_index_ : nullptr,
|
|
1233
1258
|
protection_bytes_per_key_, kv_checksum_, block_restart_interval_);
|
|
1234
1259
|
if (read_amp_bitmap_) {
|
|
@@ -1246,7 +1271,8 @@ IndexBlockIter* Block::NewIndexIterator(
|
|
|
1246
1271
|
const Comparator* raw_ucmp, SequenceNumber global_seqno,
|
|
1247
1272
|
IndexBlockIter* iter, Statistics* /*stats*/, bool total_order_seek,
|
|
1248
1273
|
bool have_first_key, bool key_includes_seq, bool value_is_full,
|
|
1249
|
-
bool block_contents_pinned,
|
|
1274
|
+
bool block_contents_pinned, bool user_defined_timestamps_persisted,
|
|
1275
|
+
BlockPrefixIndex* prefix_index) {
|
|
1250
1276
|
IndexBlockIter* ret_iter;
|
|
1251
1277
|
if (iter != nullptr) {
|
|
1252
1278
|
ret_iter = iter;
|
|
@@ -1264,11 +1290,11 @@ IndexBlockIter* Block::NewIndexIterator(
|
|
|
1264
1290
|
} else {
|
|
1265
1291
|
BlockPrefixIndex* prefix_index_ptr =
|
|
1266
1292
|
total_order_seek ? nullptr : prefix_index;
|
|
1267
|
-
ret_iter->Initialize(
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1293
|
+
ret_iter->Initialize(
|
|
1294
|
+
raw_ucmp, data_, restart_offset_, num_restarts_, global_seqno,
|
|
1295
|
+
prefix_index_ptr, have_first_key, key_includes_seq, value_is_full,
|
|
1296
|
+
block_contents_pinned, user_defined_timestamps_persisted,
|
|
1297
|
+
protection_bytes_per_key_, kv_checksum_, block_restart_interval_);
|
|
1272
1298
|
}
|
|
1273
1299
|
|
|
1274
1300
|
return ret_iter;
|
|
@@ -188,6 +188,9 @@ class Block {
|
|
|
188
188
|
// will not go away (for example, it's from mmapped file which will not be
|
|
189
189
|
// closed).
|
|
190
190
|
//
|
|
191
|
+
// `user_defined_timestamps_persisted` controls whether a min timestamp is
|
|
192
|
+
// padded while key is being parsed from the block.
|
|
193
|
+
//
|
|
191
194
|
// NOTE: for the hash based lookup, if a key prefix doesn't match any key,
|
|
192
195
|
// the iterator will simply be set as "invalid", rather than returning
|
|
193
196
|
// the key that is just pass the target key.
|
|
@@ -195,7 +198,8 @@ class Block {
|
|
|
195
198
|
SequenceNumber global_seqno,
|
|
196
199
|
DataBlockIter* iter = nullptr,
|
|
197
200
|
Statistics* stats = nullptr,
|
|
198
|
-
bool block_contents_pinned = false
|
|
201
|
+
bool block_contents_pinned = false,
|
|
202
|
+
bool user_defined_timestamps_persisted = true);
|
|
199
203
|
|
|
200
204
|
// Returns an MetaBlockIter for iterating over blocks containing metadata
|
|
201
205
|
// (like Properties blocks). Unlike data blocks, the keys for these blocks
|
|
@@ -227,13 +231,15 @@ class Block {
|
|
|
227
231
|
// first_internal_key. It affects data serialization format, so the same value
|
|
228
232
|
// have_first_key must be used when writing and reading index.
|
|
229
233
|
// It is determined by IndexType property of the table.
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
// `user_defined_timestamps_persisted` controls whether a min timestamp is
|
|
235
|
+
// padded while key is being parsed from the block.
|
|
236
|
+
IndexBlockIter* NewIndexIterator(
|
|
237
|
+
const Comparator* raw_ucmp, SequenceNumber global_seqno,
|
|
238
|
+
IndexBlockIter* iter, Statistics* stats, bool total_order_seek,
|
|
239
|
+
bool have_first_key, bool key_includes_seq, bool value_is_full,
|
|
240
|
+
bool block_contents_pinned = false,
|
|
241
|
+
bool user_defined_timestamps_persisted = true,
|
|
242
|
+
BlockPrefixIndex* prefix_index = nullptr);
|
|
237
243
|
|
|
238
244
|
// Report an approximation of how much memory has been used.
|
|
239
245
|
size_t ApproximateMemoryUsage() const;
|
|
@@ -440,6 +446,19 @@ class BlockIter : public InternalIteratorBase<TValue> {
|
|
|
440
446
|
// Key to be exposed to users.
|
|
441
447
|
Slice key_;
|
|
442
448
|
SequenceNumber global_seqno_;
|
|
449
|
+
// Size of the user-defined timestamp.
|
|
450
|
+
size_t ts_sz_ = 0;
|
|
451
|
+
// If user-defined timestamp is enabled but not persisted. A min timestamp
|
|
452
|
+
// will be padded to the key during key parsing where it applies. Such as when
|
|
453
|
+
// parsing keys from data block, index block, parsing the first internal
|
|
454
|
+
// key from IndexValue entry. Min timestamp padding is different for when
|
|
455
|
+
// `raw_key_` is a user key vs is an internal key.
|
|
456
|
+
//
|
|
457
|
+
// This only applies to data block and index blocks including index block for
|
|
458
|
+
// data blocks, index block for partitioned filter blocks, index block for
|
|
459
|
+
// partitioned index blocks. In summary, this only applies to block whose key
|
|
460
|
+
// are real user keys or internal keys created from user keys.
|
|
461
|
+
bool pad_min_timestamp_;
|
|
443
462
|
|
|
444
463
|
// Per key-value checksum related states
|
|
445
464
|
const char* kv_checksum_;
|
|
@@ -505,6 +524,8 @@ class BlockIter : public InternalIteratorBase<TValue> {
|
|
|
505
524
|
void InitializeBase(const Comparator* raw_ucmp, const char* data,
|
|
506
525
|
uint32_t restarts, uint32_t num_restarts,
|
|
507
526
|
SequenceNumber global_seqno, bool block_contents_pinned,
|
|
527
|
+
bool user_defined_timestamp_persisted,
|
|
528
|
+
|
|
508
529
|
uint8_t protection_bytes_per_key, const char* kv_checksum,
|
|
509
530
|
uint32_t block_restart_interval) {
|
|
510
531
|
assert(data_ == nullptr); // Ensure it is called only once
|
|
@@ -517,6 +538,10 @@ class BlockIter : public InternalIteratorBase<TValue> {
|
|
|
517
538
|
current_ = restarts_;
|
|
518
539
|
restart_index_ = num_restarts_;
|
|
519
540
|
global_seqno_ = global_seqno;
|
|
541
|
+
if (raw_ucmp != nullptr) {
|
|
542
|
+
ts_sz_ = raw_ucmp->timestamp_size();
|
|
543
|
+
}
|
|
544
|
+
pad_min_timestamp_ = ts_sz_ > 0 && !user_defined_timestamp_persisted;
|
|
520
545
|
block_contents_pinned_ = block_contents_pinned;
|
|
521
546
|
cache_handle_ = nullptr;
|
|
522
547
|
cur_entry_idx_ = -1;
|
|
@@ -548,6 +573,20 @@ class BlockIter : public InternalIteratorBase<TValue> {
|
|
|
548
573
|
CorruptionError(error_msg);
|
|
549
574
|
}
|
|
550
575
|
|
|
576
|
+
void UpdateRawKeyAndMaybePadMinTimestamp(const Slice& key) {
|
|
577
|
+
if (pad_min_timestamp_) {
|
|
578
|
+
std::string buf;
|
|
579
|
+
if (raw_key_.IsUserKey()) {
|
|
580
|
+
AppendKeyWithMinTimestamp(&buf, key, ts_sz_);
|
|
581
|
+
} else {
|
|
582
|
+
PadInternalKeyWithMinTimestamp(&buf, key, ts_sz_);
|
|
583
|
+
}
|
|
584
|
+
raw_key_.SetKey(buf, true /* copy */);
|
|
585
|
+
} else {
|
|
586
|
+
raw_key_.SetKey(key, false /* copy */);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
551
590
|
// Must be called every time a key is found that needs to be returned to user,
|
|
552
591
|
// and may be called when no key is found (as a no-op). Updates `key_`,
|
|
553
592
|
// `key_buf_`, and `key_pinned_` with info about the found key.
|
|
@@ -658,11 +697,13 @@ class DataBlockIter final : public BlockIter<Slice> {
|
|
|
658
697
|
SequenceNumber global_seqno,
|
|
659
698
|
BlockReadAmpBitmap* read_amp_bitmap,
|
|
660
699
|
bool block_contents_pinned,
|
|
700
|
+
bool user_defined_timestamps_persisted,
|
|
661
701
|
DataBlockHashIndex* data_block_hash_index,
|
|
662
702
|
uint8_t protection_bytes_per_key, const char* kv_checksum,
|
|
663
703
|
uint32_t block_restart_interval) {
|
|
664
704
|
InitializeBase(raw_ucmp, data, restarts, num_restarts, global_seqno,
|
|
665
|
-
block_contents_pinned,
|
|
705
|
+
block_contents_pinned, user_defined_timestamps_persisted,
|
|
706
|
+
protection_bytes_per_key, kv_checksum,
|
|
666
707
|
block_restart_interval);
|
|
667
708
|
raw_key_.SetIsUserKey(false);
|
|
668
709
|
read_amp_bitmap_ = read_amp_bitmap;
|
|
@@ -763,6 +804,7 @@ class MetaBlockIter final : public BlockIter<Slice> {
|
|
|
763
804
|
// the raw key being a user key.
|
|
764
805
|
InitializeBase(BytewiseComparator(), data, restarts, num_restarts,
|
|
765
806
|
kDisableGlobalSequenceNumber, block_contents_pinned,
|
|
807
|
+
/* user_defined_timestamps_persisted */ true,
|
|
766
808
|
protection_bytes_per_key, kv_checksum,
|
|
767
809
|
block_restart_interval);
|
|
768
810
|
raw_key_.SetIsUserKey(true);
|
|
@@ -800,12 +842,13 @@ class IndexBlockIter final : public BlockIter<IndexValue> {
|
|
|
800
842
|
SequenceNumber global_seqno, BlockPrefixIndex* prefix_index,
|
|
801
843
|
bool have_first_key, bool key_includes_seq,
|
|
802
844
|
bool value_is_full, bool block_contents_pinned,
|
|
845
|
+
bool user_defined_timestamps_persisted,
|
|
803
846
|
uint8_t protection_bytes_per_key, const char* kv_checksum,
|
|
804
847
|
uint32_t block_restart_interval) {
|
|
805
848
|
InitializeBase(raw_ucmp, data, restarts, num_restarts,
|
|
806
849
|
kDisableGlobalSequenceNumber, block_contents_pinned,
|
|
807
|
-
|
|
808
|
-
block_restart_interval);
|
|
850
|
+
user_defined_timestamps_persisted, protection_bytes_per_key,
|
|
851
|
+
kv_checksum, block_restart_interval);
|
|
809
852
|
raw_key_.SetIsUserKey(!key_includes_seq);
|
|
810
853
|
prefix_index_ = prefix_index;
|
|
811
854
|
value_delta_encoded_ = !value_is_full;
|
|
@@ -824,7 +867,8 @@ class IndexBlockIter final : public BlockIter<IndexValue> {
|
|
|
824
867
|
|
|
825
868
|
IndexValue value() const override {
|
|
826
869
|
assert(Valid());
|
|
827
|
-
if (value_delta_encoded_ || global_seqno_state_ != nullptr
|
|
870
|
+
if (value_delta_encoded_ || global_seqno_state_ != nullptr ||
|
|
871
|
+
pad_min_timestamp_) {
|
|
828
872
|
return decoded_value_;
|
|
829
873
|
} else {
|
|
830
874
|
IndexValue entry;
|
|
@@ -899,6 +943,10 @@ class IndexBlockIter final : public BlockIter<IndexValue> {
|
|
|
899
943
|
|
|
900
944
|
std::unique_ptr<GlobalSeqnoState> global_seqno_state_;
|
|
901
945
|
|
|
946
|
+
// Buffers the `first_internal_key` referred by `decoded_value_` when
|
|
947
|
+
// `pad_min_timestamp_` is true.
|
|
948
|
+
std::string first_internal_key_with_ts_;
|
|
949
|
+
|
|
902
950
|
// Set *prefix_may_exist to false if no key possibly share the same prefix
|
|
903
951
|
// as `target`. If not set, the result position should be the same as total
|
|
904
952
|
// order Seek.
|