rocksdb/table
Josh Kang ea72ee89da Support Pinnable Reads In SstFileReader (#14500)
Summary:
Add `SstFileReader::Get` (single-key) and `SstFileReader::MultiGet` (PinnableSlice) overloads to enable zero-copy point lookups directly from SST files. The existing `MultiGet(std::string*)` is refactored to delegate to the new `MultiGet(PinnableSlice*)`, which writes results directly into caller-provided `PinnableSlice` values instead of copying through an intermediate buffer. The single-key `Get` uses `TableReader::Get` with a `GetContext` for efficient single-key lookups without the overhead of MultiGet's sorting and batching machinery.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/14500

Test Plan: - New unit tests

Reviewed By: xingbowang

Differential Revision: D97825648

Pulled By: joshkang97

fbshipit-source-id: 17f3edd59bbf4747d17309c44ef12f0d952ea4eb
2026-04-10 12:34:59 -07:00
..
adaptive DROP support for block-based SST format_version < 2 (#14315) 2026-02-11 14:43:41 -08:00
block_based Fix MultiScanIndexIterator crash on reseek after exhaustion (#14581) 2026-04-09 22:44:06 -07:00
cuckoo Standardize on clang-format version 18 (#13233) 2024-12-19 10:58:40 -08:00
plain Update error message for plain table reader max file size (#14056) 2025-10-17 11:12:35 -07:00
block_fetcher.cc Add per-block-type block read byte perf counters (#14473) 2026-03-19 14:54:24 -07:00
block_fetcher.h Experimental, preliminary support for custom CompressionManager (#13626) 2025-05-21 10:09:46 -07:00
block_fetcher_test.cc DROP support for block-based SST format_version < 2 (#14315) 2026-02-11 14:43:41 -08:00
cleanable_test.cc Reformat source files (#14331) 2026-02-13 11:56:22 -08:00
compaction_merging_iterator.cc Revert #14122 "Fix a bug where compaction ..." (#14170) 2025-12-04 12:28:01 -08:00
compaction_merging_iterator.h Track the total number of compaction sorted runs from inside CompactionMergingIterator (#13325) 2025-02-06 13:25:51 -08:00
external_table.cc Support ExternalTable PinnableSlice Get (#14497) 2026-04-10 12:34:54 -07:00
format.cc Add block_decompress_count to PerfContext (#14557) 2026-04-09 22:43:16 -07:00
format.h DROP support for block-based SST format_version < 2 (#14315) 2026-02-11 14:43:41 -08:00
get_context.cc Fix kBlockCacheTier read when merge-chain base value is in a blob file (#12462) 2024-03-21 12:38:53 -07:00
get_context.h Fix kBlockCacheTier read when merge-chain base value is in a blob file (#12462) 2024-03-21 12:38:53 -07:00
internal_iterator.h Introduction of MultiScanOptions (#13837) 2025-08-08 10:33:36 -07:00
iter_heap.h Format files under table/ by clang-format (#10852) 2022-10-25 11:50:38 -07:00
iterator.cc Fix a bug for surfacing write unix time (#13057) 2024-10-08 11:31:51 -07:00
iterator_wrapper.h Introduction of MultiScanOptions (#13837) 2025-08-08 10:33:36 -07:00
merger_test.cc internal_repo_rocksdb (435146444452818992) (#12115) 2023-12-01 11:15:17 -08:00
merging_iterator.cc Add new heauristic 'num_collapsible_entry_reads_sampled' (#14434) 2026-03-09 16:42:41 -07:00
merging_iterator.h Fix possible double-free on TruncatedRangeDelIterator (#12805) 2024-06-24 11:51:16 -07:00
meta_blocks.cc Separate keys and values in data blocks (#14287) 2026-02-23 12:42:05 -08:00
meta_blocks.h Remove obsolete code for block-based format_version < 2 (after #14315) (#14327) 2026-02-17 23:31:30 -08:00
mock_table.cc Record newest_key_time as a table property (#13083) 2024-11-01 10:08:35 -07:00
mock_table.h Record newest_key_time as a table property (#13083) 2024-11-01 10:08:35 -07:00
multiget_context.h Use C++20 in public API, fix CI (#13915) 2025-09-08 13:11:28 -07:00
persistent_cache_helper.cc Remove extra semi colon from internal_repo_rocksdb/repo/db/table_cache_sync_and_async.h 2024-03-04 06:34:44 -08:00
persistent_cache_helper.h Change internal headers with duplicate names (#11408) 2023-05-17 11:27:09 -07:00
persistent_cache_options.h Change internal headers with duplicate names (#11408) 2023-05-17 11:27:09 -07:00
sst_file_dumper.cc Remove obsolete code for block-based format_version < 2 (after #14315) (#14327) 2026-02-17 23:31:30 -08:00
sst_file_dumper.h Remove obsolete code for block-based format_version < 2 (after #14315) (#14327) 2026-02-17 23:31:30 -08:00
sst_file_reader.cc Support Pinnable Reads In SstFileReader (#14500) 2026-04-10 12:34:59 -07:00
sst_file_reader_test.cc Support Pinnable Reads In SstFileReader (#14500) 2026-04-10 12:34:59 -07:00
sst_file_writer.cc Remove deprecated SstFileWriter::Add() and skip_filters parameter (#14352) 2026-02-19 22:10:47 -08:00
sst_file_writer_collectors.h Add CompactForTieringCollector to support automatically trigger compaction for tiering use case (#12760) 2024-06-18 10:51:29 -07:00
table_builder.h Remove deprecated SstFileWriter::Add() and skip_filters parameter (#14352) 2026-02-19 22:10:47 -08:00
table_factory.cc Remove FactoryFunc from LoadXXXObject (#11203) 2023-02-17 12:54:07 -08:00
table_iterator.h Add support in SstFileReader to get a raw table iterator (#12385) 2024-04-02 21:23:06 -07:00
table_properties.cc Separate keys and values in data blocks (#14287) 2026-02-23 12:42:05 -08:00
table_properties_internal.h Improve / clean up meta block code & integrity (#9163) 2021-11-18 11:43:44 -08:00
table_reader.h Improve sst_dump raw mode dump result (#14166) 2025-12-04 11:52:58 -08:00
table_reader_bench.cc Remove deprecated DB::Open raw pointer variants (and more) (#14335) 2026-02-17 23:33:39 -08:00
table_test.cc Support Pinnable Reads In SstFileReader (#14500) 2026-04-10 12:34:59 -07:00
two_level_iterator.cc internal_repo_rocksdb (435146444452818992) (#12115) 2023-12-01 11:15:17 -08:00
two_level_iterator.h Remove unnecessary, confusing 'extern' (#12300) 2024-01-29 10:38:08 -08:00
unique_id.cc Reformat source files (#14331) 2026-02-13 11:56:22 -08:00
unique_id_impl.h Reformat source files (#14331) 2026-02-13 11:56:22 -08:00