@nxtedition/rocksdb 15.4.1 → 15.5.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/binding.cc +24 -15
- package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
- package/deps/rocksdb/rocksdb/BUCK +42 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
- package/deps/rocksdb/rocksdb/Makefile +59 -32
- package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
- package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
- package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
- package/deps/rocksdb/rocksdb/db/builder.h +7 -0
- package/deps/rocksdb/rocksdb/db/c.cc +373 -57
- package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
- package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
- package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
- package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
- package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
- package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
- package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
- package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
- package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
- package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
- package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
- package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
- package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
- package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
- package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
- package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
- package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
- package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
- package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
- package/deps/rocksdb/rocksdb/env/env.cc +1 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
- package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
- package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
- package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
- package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
- package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
- package/deps/rocksdb/rocksdb/folly.mk +22 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
- package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
- package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
- package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
- package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
- package/deps/rocksdb/rocksdb/options/options.cc +5 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
- package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
- package/deps/rocksdb/rocksdb/port/lang.h +4 -0
- package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
- package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
- package/deps/rocksdb/rocksdb/src.mk +12 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
- package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
- package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
- package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
- package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
- package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
- package/deps/rocksdb/rocksdb/table/format.cc +27 -15
- package/deps/rocksdb/rocksdb/table/format.h +41 -15
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
- package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
- package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
- package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
- package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
- package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
- package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
- package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
- package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
- package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
- package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
- package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
- package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
- package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
- package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
- package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
- package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
- package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
- package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
- package/deps/rocksdb/rocksdb/util/coding.h +14 -27
- package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
- package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
- package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
- package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
- package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
- package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
- package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
- package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
- package/deps/rocksdb/rocksdb/util/math.h +3 -1
- package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
- package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
- package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
- package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
- package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
- package/deps/rocksdb/rocksdb/util/status.cc +3 -1
- package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
- package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
- package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
- package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
- package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
- package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
- package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
- package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
- package/deps/rocksdb/rocksdb.gyp +7 -0
- package/iterator.js +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
|
@@ -6,18 +6,28 @@
|
|
|
6
6
|
#pragma once
|
|
7
7
|
|
|
8
8
|
#include <cstdint>
|
|
9
|
+
#include <limits>
|
|
9
10
|
#include <string>
|
|
11
|
+
#include <utility>
|
|
12
|
+
#include <vector>
|
|
10
13
|
|
|
14
|
+
#include "db/dbformat.h"
|
|
11
15
|
#include "rocksdb/rocksdb_namespace.h"
|
|
12
16
|
#include "rocksdb/status.h"
|
|
13
17
|
#include "rocksdb/wide_columns.h"
|
|
14
18
|
|
|
15
19
|
namespace ROCKSDB_NAMESPACE {
|
|
16
20
|
|
|
21
|
+
class BlobFetcher;
|
|
22
|
+
class BlobIndex;
|
|
23
|
+
class FilePrefetchBuffer;
|
|
24
|
+
class PinnableSlice;
|
|
25
|
+
class PrefetchBufferCollection;
|
|
17
26
|
class Slice;
|
|
18
27
|
|
|
19
28
|
// Wide-column serialization/deserialization primitives.
|
|
20
29
|
//
|
|
30
|
+
// Version 1 Layout:
|
|
21
31
|
// The two main parts of the layout are 1) a sorted index containing the column
|
|
22
32
|
// names and column value sizes and 2) the column values themselves. Keeping the
|
|
23
33
|
// index and the values separate will enable selectively reading column values
|
|
@@ -40,16 +50,224 @@ class Slice;
|
|
|
40
50
|
// ...---+----------+-------+----------+-------+---...---+-------+
|
|
41
51
|
// | varint32 | bytes | varint32 | bytes | | bytes |
|
|
42
52
|
// ...---+----------+-------+----------+-------+---...---+-------+
|
|
53
|
+
//
|
|
54
|
+
// Version 2 Layout (with blob index support):
|
|
55
|
+
// Groups all metadata upfront before variable-length data. This enables
|
|
56
|
+
// efficient access patterns: index-based value access skips name data
|
|
57
|
+
// entirely, default column access is O(1), and type checks are O(1).
|
|
58
|
+
//
|
|
59
|
+
// Legend: cn = column name, cv = column value, cns = column name size,
|
|
60
|
+
// cvs = column value size, ct = column type.
|
|
61
|
+
//
|
|
62
|
+
// Section 1: HEADER (2 varints)
|
|
63
|
+
// +----------+--------------+
|
|
64
|
+
// | version | # of columns |
|
|
65
|
+
// | varint32 | varint32 |
|
|
66
|
+
// +----------+--------------+
|
|
67
|
+
//
|
|
68
|
+
// Section 2: SKIP INFO (3 varints)
|
|
69
|
+
// +-------------------+---------------------+------------------+
|
|
70
|
+
// | name_sizes_bytes | value_sizes_bytes | names_bytes |
|
|
71
|
+
// | varint32 | varint32 | varint32 |
|
|
72
|
+
// +-------------------+---------------------+------------------+
|
|
73
|
+
// name_sizes_bytes = byte size of NAME SIZES section (section 4)
|
|
74
|
+
// value_sizes_bytes = byte size of VALUE SIZES section (section 5)
|
|
75
|
+
// names_bytes = byte size of NAMES section (section 6)
|
|
76
|
+
//
|
|
77
|
+
// Placed immediately after the header so that header + skip info form
|
|
78
|
+
// a contiguous varint sequence (5 varints), enabling future SIMD-based
|
|
79
|
+
// varint decoding.
|
|
80
|
+
//
|
|
81
|
+
// Section 3: COLUMN TYPES (N bytes, fixed-size)
|
|
82
|
+
// +------+------+---...---+--------+
|
|
83
|
+
// | ct_0 | ct_1 | | ct_N-1 |
|
|
84
|
+
// | byte | byte | | byte |
|
|
85
|
+
// +------+------+---...---+--------+
|
|
86
|
+
// ct values are ValueType entries from db/dbformat.h, e.g.:
|
|
87
|
+
// kTypeValue (0x01) = inline value
|
|
88
|
+
// kTypeBlobIndex (0x11) = blob index reference
|
|
89
|
+
// Future per-column types (kTypeMerge, kTypeDeletion, etc.) can be
|
|
90
|
+
// added without format changes.
|
|
91
|
+
//
|
|
92
|
+
// Section 4: NAME SIZES (N varints)
|
|
93
|
+
// +----------+----------+---...---+------------+
|
|
94
|
+
// | cns_0 | cns_1 | | cns_{N-1} |
|
|
95
|
+
// | varint32 | varint32 | | varint32 |
|
|
96
|
+
// +----------+----------+---...---+------------+
|
|
97
|
+
//
|
|
98
|
+
// Section 5: VALUE SIZES (N varints)
|
|
99
|
+
// +----------+----------+---...---+------------+
|
|
100
|
+
// | cvs_0 | cvs_1 | | cvs_{N-1} |
|
|
101
|
+
// | varint32 | varint32 | | varint32 |
|
|
102
|
+
// +----------+----------+---...---+------------+
|
|
103
|
+
//
|
|
104
|
+
// Section 6: COLUMN NAMES (concatenated, sorted)
|
|
105
|
+
// +------+------+---...---+--------+
|
|
106
|
+
// | cn_0 | cn_1 | | cn_N-1 |
|
|
107
|
+
// | bytes| bytes| | bytes |
|
|
108
|
+
// +------+------+---...---+--------+
|
|
109
|
+
//
|
|
110
|
+
// Section 7: COLUMN VALUES (concatenated)
|
|
111
|
+
// +------+------+---...---+--------+
|
|
112
|
+
// | cv_0 | cv_1 | | cv_N-1 |
|
|
113
|
+
// | bytes| bytes| | bytes |
|
|
114
|
+
// +------+------+---...---+--------+
|
|
115
|
+
//
|
|
116
|
+
// When ct = kTypeBlobIndex, the cv contains a serialized BlobIndex.
|
|
43
117
|
|
|
44
118
|
class WideColumnSerialization {
|
|
45
119
|
public:
|
|
120
|
+
// Version constants for wide column serialization format.
|
|
121
|
+
// - kVersion1: Original format with inline column values only.
|
|
122
|
+
// - kVersion2: Extended format that supports blob index references in
|
|
123
|
+
// columns. Used when large column values are stored in blob
|
|
124
|
+
// files.
|
|
125
|
+
static constexpr uint32_t kVersion1 = 1;
|
|
126
|
+
static constexpr uint32_t kVersion2 = 2;
|
|
127
|
+
|
|
128
|
+
// Serialize columns using version 1 format (no blob support)
|
|
46
129
|
static Status Serialize(const WideColumns& columns, std::string& output);
|
|
47
130
|
|
|
131
|
+
// Serialize columns with some columns replaced by blob indices (version 2)
|
|
132
|
+
// columns: vector of (column_name, column_value) pairs
|
|
133
|
+
// blob_columns: vector of (column_index, blob_index) pairs indicating which
|
|
134
|
+
// columns should be stored as blob references
|
|
135
|
+
static Status SerializeV2(
|
|
136
|
+
const std::vector<std::pair<std::string, std::string>>& columns,
|
|
137
|
+
const std::vector<std::pair<size_t, BlobIndex>>& blob_columns,
|
|
138
|
+
std::string& output);
|
|
139
|
+
|
|
140
|
+
// Overload that takes Slice-based WideColumns directly, avoiding the
|
|
141
|
+
// need to copy column names and values into string pairs.
|
|
142
|
+
static Status SerializeV2(
|
|
143
|
+
const WideColumns& columns,
|
|
144
|
+
const std::vector<std::pair<size_t, BlobIndex>>& blob_columns,
|
|
145
|
+
std::string& output);
|
|
146
|
+
|
|
147
|
+
// Deserialize columns (version 1 format only)
|
|
48
148
|
static Status Deserialize(Slice& input, WideColumns& columns);
|
|
49
149
|
|
|
150
|
+
// Deserialize columns and separate inline columns from blob columns
|
|
151
|
+
// columns: receives inline column values
|
|
152
|
+
// blob_columns: receives (column_index, blob_index) pairs for blob references
|
|
153
|
+
static Status DeserializeV2(
|
|
154
|
+
Slice& input, std::vector<WideColumn>& columns,
|
|
155
|
+
std::vector<std::pair<size_t, BlobIndex>>& blob_columns);
|
|
156
|
+
|
|
157
|
+
// Check if the serialized entity has any blob column references.
|
|
158
|
+
// Sets *has_blob_columns to true if version >= 2 and at least one column
|
|
159
|
+
// has blob type; false otherwise.
|
|
160
|
+
// Returns Status::Corruption on decode errors.
|
|
161
|
+
static Status HasBlobColumns(const Slice& input, bool& has_blob_columns);
|
|
162
|
+
|
|
50
163
|
static Status GetValueOfDefaultColumn(Slice& input, Slice& value);
|
|
51
164
|
|
|
52
|
-
|
|
165
|
+
// Resolves all blob column references in a V2 wide-column entity,
|
|
166
|
+
// fetches the blob values, and re-serializes as a V1 entity (all inline).
|
|
167
|
+
// Handles inlined blobs (IsInlined) defensively.
|
|
168
|
+
//
|
|
169
|
+
// Used by the read path (GetContext, DBIter) when a V2 entity with blob
|
|
170
|
+
// column references needs to be converted to V1 format for consumption by
|
|
171
|
+
// APIs that only support V1 (e.g., TimedFullMerge,
|
|
172
|
+
// PinnableWideColumns::SetWideColumnValue).
|
|
173
|
+
//
|
|
174
|
+
// Sets *resolved to false and leaves resolved_entity unchanged when
|
|
175
|
+
// no blob columns are present.
|
|
176
|
+
//
|
|
177
|
+
// Optional parameters:
|
|
178
|
+
// prefetch_buffers - for prefetch optimization (nullptr = no prefetch)
|
|
179
|
+
// total_bytes_read - accumulates bytes read from blob files (nullptr =
|
|
180
|
+
// skip) num_blobs_resolved - count of blob columns resolved (nullptr =
|
|
181
|
+
// skip)
|
|
182
|
+
static Status ResolveEntityBlobColumns(
|
|
183
|
+
const Slice& entity_value, const Slice& user_key,
|
|
184
|
+
const BlobFetcher* blob_fetcher,
|
|
185
|
+
PrefetchBufferCollection* prefetch_buffers, std::string& resolved_entity,
|
|
186
|
+
bool& resolved, uint64_t* total_bytes_read, uint64_t* num_blobs_resolved);
|
|
187
|
+
|
|
188
|
+
// Extracts the default column value from a V2 entity, resolving its
|
|
189
|
+
// blob reference if needed. The default column (empty name) is always
|
|
190
|
+
// at index 0 when present (columns are sorted).
|
|
191
|
+
//
|
|
192
|
+
// Sets result to the resolved default column value (fetching from blob
|
|
193
|
+
// file if it's a blob reference). If there is no default column, result
|
|
194
|
+
// is set to empty. Sets *resolved to true if a blob was found for the
|
|
195
|
+
// default column, false otherwise.
|
|
196
|
+
static Status GetValueOfDefaultColumnResolvingBlobs(
|
|
197
|
+
const Slice& entity_value, const Slice& user_key,
|
|
198
|
+
const BlobFetcher* blob_fetcher, PinnableSlice& result, bool& resolved);
|
|
199
|
+
|
|
200
|
+
private:
|
|
201
|
+
friend class WideColumnSerializationTest;
|
|
202
|
+
// Get the serialization version from the input.
|
|
203
|
+
// Sets *version to the version number.
|
|
204
|
+
// Returns Status::Corruption on decode errors.
|
|
205
|
+
static Status GetVersion(const Slice& input, uint32_t& version);
|
|
206
|
+
|
|
207
|
+
// Merges deserialized columns with resolved blob values and serializes
|
|
208
|
+
// the result using version 1 format (all values inline).
|
|
209
|
+
static Status SerializeResolvedEntity(
|
|
210
|
+
const std::vector<WideColumn>& columns,
|
|
211
|
+
const std::vector<std::pair<size_t, BlobIndex>>& blob_columns,
|
|
212
|
+
const std::vector<std::string>& resolved_blob_values,
|
|
213
|
+
std::string& output);
|
|
214
|
+
|
|
215
|
+
// Returns InvalidArgument with the given message if size exceeds uint32_t.
|
|
216
|
+
static Status ValidateWideColumnLimit(size_t size, const char* msg) {
|
|
217
|
+
if (size > static_cast<size_t>(std::numeric_limits<uint32_t>::max())) {
|
|
218
|
+
return Status::InvalidArgument(msg);
|
|
219
|
+
}
|
|
220
|
+
return Status::OK();
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Returns Corruption if prev_name >= name (columns must be strictly ordered).
|
|
224
|
+
static Status ValidateColumnOrder(const Slice& prev_name, const Slice& name) {
|
|
225
|
+
if (prev_name.compare(name) >= 0) {
|
|
226
|
+
return Status::Corruption("Wide columns out of order");
|
|
227
|
+
}
|
|
228
|
+
return Status::OK();
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Shared implementation for both SerializeV2 overloads.
|
|
232
|
+
// get_name(i): returns Slice for column i's name
|
|
233
|
+
// get_value(i): returns Slice for column i's inline value
|
|
234
|
+
template <typename GetName, typename GetValue>
|
|
235
|
+
static Status SerializeV2Impl(
|
|
236
|
+
size_t num_columns,
|
|
237
|
+
const std::vector<std::pair<size_t, BlobIndex>>& blob_columns,
|
|
238
|
+
std::string& output, GetName get_name, GetValue get_value);
|
|
239
|
+
|
|
240
|
+
// Validates num_columns limit and builds a per-column lookup map from
|
|
241
|
+
// blob_columns. Returns InvalidArgument on validation failure.
|
|
242
|
+
static Status BuildBlobIndexMap(
|
|
243
|
+
size_t num_columns,
|
|
244
|
+
const std::vector<std::pair<size_t, BlobIndex>>& blob_columns,
|
|
245
|
+
std::vector<const BlobIndex*>& blob_index_map);
|
|
246
|
+
|
|
247
|
+
// Parses V1 layout (interleaved name/value_size pairs followed by values)
|
|
248
|
+
// into columns. Used by both Deserialize and DeserializeV2 to avoid
|
|
249
|
+
// code duplication.
|
|
250
|
+
static Status DeserializeV1(Slice& input, uint32_t num_columns,
|
|
251
|
+
std::vector<WideColumn>& columns);
|
|
252
|
+
|
|
253
|
+
// Parses V2 layout sections 2-7 (skip info through values) into columns and
|
|
254
|
+
// column types. Used by both Deserialize and DeserializeV2 to avoid
|
|
255
|
+
// code duplication.
|
|
256
|
+
static Status DeserializeV2Impl(Slice& input, uint32_t num_columns,
|
|
257
|
+
std::vector<WideColumn>& columns,
|
|
258
|
+
std::vector<ValueType>& column_types);
|
|
259
|
+
|
|
260
|
+
// Returns true if t is a supported per-column ValueType. Currently only
|
|
261
|
+
// kTypeValue (inline) and kTypeBlobIndex are supported. Notably,
|
|
262
|
+
// kTypeWideColumnEntity is rejected to prevent recursive nesting.
|
|
263
|
+
static bool IsValidColumnValueType(ValueType t) {
|
|
264
|
+
return t == kTypeValue || t == kTypeBlobIndex;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// Returns true if any of the first num_columns type bytes equals
|
|
268
|
+
// kTypeBlobIndex. Typical entities have <10 columns, so a linear
|
|
269
|
+
// scan is sufficient; SIMD could be considered if column counts grow.
|
|
270
|
+
static bool ContainsBlobType(const char* type_bytes, uint32_t num_columns);
|
|
53
271
|
};
|
|
54
272
|
|
|
55
273
|
} // namespace ROCKSDB_NAMESPACE
|