From 9202d9b6257de423155a35003b1f46f7958b34ce Mon Sep 17 00:00:00 2001 From: sdong Date: Thu, 12 Jun 2014 10:54:57 -0700 Subject: [PATCH] Fix sst_dump for PlainTable Summary: sst_dump now doesn't work well for PlainTable. Not sure when it started, but this should fix it. Test Plan: Run sst_dump against a file that used to fail. Reviewers: yhchiang, haobo, igor Reviewed By: igor Subscribers: dhruba, ljin, leveldb Differential Revision: https://reviews.facebook.net/D19023 --- tools/sst_dump.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/sst_dump.cc b/tools/sst_dump.cc index e314713956..63fb80d9ec 100644 --- a/tools/sst_dump.cc +++ b/tools/sst_dump.cc @@ -82,7 +82,9 @@ SstFileReader::SstFileReader(const std::string& file_path, } extern uint64_t kBlockBasedTableMagicNumber; +extern uint64_t kLegacyBlockBasedTableMagicNumber; extern uint64_t kPlainTableMagicNumber; +extern uint64_t kLegacyPlainTableMagicNumber; Status SstFileReader::NewTableReader(const std::string& file_path) { uint64_t magic_number; @@ -104,8 +106,10 @@ Status SstFileReader::NewTableReader(const std::string& file_path) { } if (s.ok()) { - if (magic_number == kPlainTableMagicNumber) { + if (magic_number == kPlainTableMagicNumber || + magic_number == kLegacyPlainTableMagicNumber) { soptions_.use_mmap_reads = true; + options_.env->NewRandomAccessFile(file_path, &file_, soptions_); } options_.comparator = &internal_comparator_; s = ReadTableProperties(magic_number, file_.get(), file_size); @@ -136,7 +140,8 @@ Status SstFileReader::ReadTableProperties(uint64_t table_magic_number, Status SstFileReader::SetTableOptionsByMagicNumber( uint64_t table_magic_number) { assert(table_properties_); - if (table_magic_number == kBlockBasedTableMagicNumber) { + if (table_magic_number == kBlockBasedTableMagicNumber || + table_magic_number == kLegacyBlockBasedTableMagicNumber) { options_.table_factory = std::make_shared(); fprintf(stdout, "Sst file format: block-based\n"); auto& props = table_properties_->user_collected_properties; @@ -149,7 +154,8 @@ Status SstFileReader::SetTableOptionsByMagicNumber( options_.prefix_extractor.reset(NewNoopTransform()); } } - } else if (table_magic_number == kPlainTableMagicNumber) { + } else if (table_magic_number == kPlainTableMagicNumber || + table_magic_number == kLegacyPlainTableMagicNumber) { options_.allow_mmap_reads = true; options_.table_factory = std::make_shared( table_properties_->fixed_key_len, 2, 0.8);