| // Copyright (c) 2011-present, Facebook, Inc. All rights reserved. |
| // This source code is licensed under both the GPLv2 (found in the |
| // COPYING file in the root directory) and Apache 2.0 License |
| // (found in the LICENSE.Apache file in the root directory). |
| #pragma once |
| #ifndef ROCKSDB_LITE |
| |
| #include <string> |
| #include <vector> |
| #include "db/dbformat.h" |
| #include "include/rocksdb/env.h" |
| #include "include/rocksdb/listener.h" |
| #include "include/rocksdb/options.h" |
| #include "include/rocksdb/status.h" |
| #include "options/cf_options.h" |
| #include "table/block_based_table_reader.h" |
| |
| namespace rocksdb { |
| |
| struct ColDeclaration; |
| struct KVPairColDeclarations; |
| |
| class ColumnAwareEncodingReader { |
| public: |
| explicit ColumnAwareEncodingReader(const std::string& file_name); |
| |
| void GetKVPairsFromDataBlocks(std::vector<KVPairBlock>* kv_pair_blocks); |
| |
| void EncodeBlocksToRowFormat(WritableFile* out_file, |
| CompressionType compression_type, |
| const std::vector<KVPairBlock>& kv_pair_blocks, |
| std::vector<std::string>* blocks); |
| |
| void DecodeBlocksFromRowFormat(WritableFile* out_file, |
| const std::vector<std::string>* blocks); |
| |
| void DumpDataColumns(const std::string& filename, |
| const KVPairColDeclarations& kvp_col_declarations, |
| const std::vector<KVPairBlock>& kv_pair_blocks); |
| |
| Status EncodeBlocks(const KVPairColDeclarations& kvp_col_declarations, |
| WritableFile* out_file, CompressionType compression_type, |
| const std::vector<KVPairBlock>& kv_pair_blocks, |
| std::vector<std::string>* blocks, bool print_column_stat); |
| |
| void DecodeBlocks(const KVPairColDeclarations& kvp_col_declarations, |
| WritableFile* out_file, |
| const std::vector<std::string>* blocks); |
| |
| static void GetColDeclarationsPrimary( |
| std::vector<ColDeclaration>** key_col_declarations, |
| std::vector<ColDeclaration>** value_col_declarations, |
| ColDeclaration** value_checksum_declaration); |
| |
| static void GetColDeclarationsSecondary( |
| std::vector<ColDeclaration>** key_col_declarations, |
| std::vector<ColDeclaration>** value_col_declarations, |
| ColDeclaration** value_checksum_declaration); |
| |
| private: |
| // Init the TableReader for the sst file |
| void InitTableReader(const std::string& file_path); |
| |
| std::string file_name_; |
| EnvOptions soptions_; |
| |
| Options options_; |
| |
| Status init_result_; |
| std::unique_ptr<BlockBasedTable> table_reader_; |
| std::unique_ptr<RandomAccessFileReader> file_; |
| |
| const ImmutableCFOptions ioptions_; |
| InternalKeyComparator internal_comparator_; |
| std::unique_ptr<TableProperties> table_properties_; |
| }; |
| |
| } // namespace rocksdb |
| |
| #endif // ROCKSDB_LITE |