rocksdb/utilities/blob_db
Levi Tamasi 61932cdf1d Add blob support to DBIter (#7731)
Summary:
The patch adds iterator support to the integrated BlobDB implementation.
Whenever a blob reference is encountered during iteration, the corresponding
blob is retrieved by calling `Version::GetBlob`, assuming the `expose_blob_index`
(formerly `allow_blob`) flag is *not* set. (Note: the flag is set by the old stacked
BlobDB implementation, which has its own blob file handling/blob retrieval logic.)

In addition, `DBIter` now uniformly returns `Status::NotSupported` with the error
message `"BlobDB does not support merge operator."` when encountering a
blob reference while performing a merge (instead of potentially returning a
message that implies the database should be opened using the stacked BlobDB's
`Open`.)

TODO: We can implement support for lazily retrieving the blob value (or in other
words, bypassing the retrieval of blob values based on key) by extending the `Iterator`
API with a new `PrepareValue` method (similarly to `InternalIterator`, which already
supports lazy values).

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

Test Plan: `make check`

Reviewed By: riversand963

Differential Revision: D25256293

Pulled By: ltamasi

fbshipit-source-id: c39cd782011495a526cdff99c16f5fca400c4811
2020-12-04 21:29:38 -08:00
..
blob_compaction_filter.cc In ParseInternalKey(), include corrupt key info in Status (#7515) 2020-10-28 10:12:58 -07:00
blob_compaction_filter.h Move the blob file format related classes to the main namespace, rename reader/writer (#7086) 2020-07-06 17:18:14 -07:00
blob_db_gc_stats.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
blob_db_impl_filesnapshot.cc Expose the start of the expiration range for TTL blob files through LiveFileMetaData (#7365) 2020-09-10 11:33:33 -07:00
blob_db_impl.cc Add blob support to DBIter (#7731) 2020-12-04 21:29:38 -08:00
blob_db_impl.h Clean up BlobLogReader and rename it to BlobLogSequentialReader (#7517) 2020-10-07 17:48:16 -07:00
blob_db_iterator.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
blob_db_listener.h Replace namespace name "rocksdb" with ROCKSDB_NAMESPACE (#6433) 2020-02-20 12:09:57 -08:00
blob_db_test.cc Remove unused includes (#7604) 2020-10-28 23:22:27 -07:00
blob_db.cc Destroy any ColumnFamilyHandles in BlobDB::Open upon error (#6763) 2020-04-27 16:45:13 -07:00
blob_db.h Move kNoExpiration to blob_db.h (#7018) 2020-06-23 13:45:06 -07:00
blob_dump_tool.cc Fix potential overflow of unsigned type in for loop (#6902) 2020-06-02 15:05:07 -07:00
blob_dump_tool.h Move blob_log_{format,reader,writer}.{cc,h} to db/blob/ (#6960) 2020-06-09 15:16:05 -07:00
blob_file.cc Clean up BlobLogReader and rename it to BlobLogSequentialReader (#7517) 2020-10-07 17:48:16 -07:00
blob_file.h Clean up BlobLogReader and rename it to BlobLogSequentialReader (#7517) 2020-10-07 17:48:16 -07:00