mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Add the property block for the plain table
Summary: This is the last diff that adds the property block to plain table. The format resembles that of the block-based table: https://github.com/facebook/rocksdb/wiki/Rocksdb-table-format [data block] [meta block 1: stats block] [meta block 2: future extended block] ... [meta block K: future extended block] (we may add more meta blocks in the future) [metaindex block] [index block: we only have the placeholder here, we can add persistent index block in the future] [Footer: contains magic number, handle to metaindex block and index block] <end_of_file> Test Plan: extended existing property block test. Reviewers: haobo, sdong, dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D14523
This commit is contained in:
@@ -15,9 +15,11 @@
|
||||
|
||||
namespace rocksdb {
|
||||
|
||||
class BlockHandle;
|
||||
class BlockBuilder;
|
||||
class BlockHandle;
|
||||
class Env;
|
||||
class Logger;
|
||||
class RandomAccessFile;
|
||||
struct TableProperties;
|
||||
|
||||
// An STL style comparator that does the bytewise comparator comparasion
|
||||
@@ -49,11 +51,6 @@ class MetaIndexBuilder {
|
||||
Slice Finish();
|
||||
|
||||
private:
|
||||
// * Key: meta block name
|
||||
// * Value: block handle to that meta block
|
||||
struct Rep;
|
||||
Rep* rep_;
|
||||
|
||||
// store the sorted key/handle of the metablocks.
|
||||
BytewiseSortedMap meta_block_handles_;
|
||||
std::unique_ptr<BlockBuilder> meta_index_block_;
|
||||
@@ -103,4 +100,21 @@ bool NotifyCollectTableCollectorsOnFinish(
|
||||
Logger* info_log,
|
||||
PropertyBlockBuilder* builder);
|
||||
|
||||
// Read the properties from the table.
|
||||
Status ReadProperties(
|
||||
const Slice& handle_value,
|
||||
RandomAccessFile* file,
|
||||
Env* env,
|
||||
Logger* logger,
|
||||
TableProperties* table_properties);
|
||||
|
||||
// Directly read the properties from the properties block of a plain table.
|
||||
Status ReadTableProperties(
|
||||
RandomAccessFile* file,
|
||||
uint64_t file_size,
|
||||
uint64_t table_magic_number,
|
||||
Env* env,
|
||||
Logger* info_log,
|
||||
TableProperties* properties);
|
||||
|
||||
} // namespace rocksdb
|
||||
|
||||
Reference in New Issue
Block a user