Skip to content

Commit fa88cbc

Browse files
[Log dumper broken when merge operator is in log]
Summary: $title Test Plan: on my dev box Revert Plan: OK Task ID: # Reviewers: emayanke, dhruba, haobo Reviewed By: haobo CC: leveldb Differential Revision: https://reviews.facebook.net/D14451
1 parent 97aa401 commit fa88cbc

File tree

1 file changed

+28
-30
lines changed

1 file changed

+28
-30
lines changed

util/ldb_cmd.cc

+28-30
Original file line numberDiff line numberDiff line change
@@ -1226,25 +1226,41 @@ void ChangeCompactionStyleCommand::DoCommand() {
12261226

12271227
class InMemoryHandler : public WriteBatch::Handler {
12281228
public:
1229+
InMemoryHandler(stringstream& row, bool print_values) : Handler(),row_(row) {
1230+
print_values_ = print_values;
1231+
}
12291232

1230-
virtual void Put(const Slice& key, const Slice& value) {
1231-
putMap_[key.ToString()] = value.ToString();
1233+
void commonPutMerge(const Slice& key, const Slice& value) {
1234+
string k = LDBCommand::StringToHex(key.ToString());
1235+
if (print_values_) {
1236+
string v = LDBCommand::StringToHex(value.ToString());
1237+
row_ << k << " : ";
1238+
row_ << v << " ";
1239+
} else {
1240+
row_ << k << " ";
1241+
}
12321242
}
1233-
virtual void Delete(const Slice& key) {
1234-
deleteList_.push_back(key.ToString(true));
1243+
1244+
virtual void Put(const Slice& key, const Slice& value) {
1245+
row_ << "PUT : ";
1246+
commonPutMerge(key, value);
12351247
}
1236-
virtual ~InMemoryHandler() { };
12371248

1238-
map<string, string> PutMap() {
1239-
return putMap_;
1249+
virtual void Merge(const Slice& key, const Slice& value) {
1250+
row_ << "MERGE : ";
1251+
commonPutMerge(key, value);
12401252
}
1241-
vector<string> DeleteList() {
1242-
return deleteList_;
1253+
1254+
virtual void Delete(const Slice& key) {
1255+
row_ <<",DELETE : ";
1256+
row_ << LDBCommand::StringToHex(key.ToString()) << " ";
12431257
}
12441258

1259+
virtual ~InMemoryHandler() { };
1260+
12451261
private:
1246-
map<string, string> putMap_;
1247-
vector<string> deleteList_;
1262+
stringstream & row_;
1263+
bool print_values_;
12481264
};
12491265

12501266
const string WALDumperCommand::ARG_WAL_FILE = "walfile";
@@ -1322,26 +1338,8 @@ void WALDumperCommand::DoCommand() {
13221338
row<<WriteBatchInternal::Count(&batch)<<",";
13231339
row<<WriteBatchInternal::ByteSize(&batch)<<",";
13241340
row<<reader.LastRecordOffset()<<",";
1325-
InMemoryHandler handler;
1341+
InMemoryHandler handler(row, print_values_);
13261342
batch.Iterate(&handler);
1327-
row << "PUT : ";
1328-
if (print_values_) {
1329-
for (auto& kv : handler.PutMap()) {
1330-
string k = StringToHex(kv.first);
1331-
string v = StringToHex(kv.second);
1332-
row << k << " : ";
1333-
row << v << " ";
1334-
}
1335-
}
1336-
else {
1337-
for(auto& kv : handler.PutMap()) {
1338-
row << StringToHex(kv.first) << " ";
1339-
}
1340-
}
1341-
row<<",DELETE : ";
1342-
for(string& s : handler.DeleteList()) {
1343-
row << StringToHex(s) << " ";
1344-
}
13451343
row<<"\n";
13461344
}
13471345
cout<<row.str();

0 commit comments

Comments
 (0)