@@ -1226,25 +1226,41 @@ void ChangeCompactionStyleCommand::DoCommand() {
1226
1226
1227
1227
class InMemoryHandler : public WriteBatch ::Handler {
1228
1228
public:
1229
+ InMemoryHandler (stringstream& row, bool print_values) : Handler(),row_(row) {
1230
+ print_values_ = print_values;
1231
+ }
1229
1232
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
+ }
1232
1242
}
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);
1235
1247
}
1236
- virtual ~InMemoryHandler () { };
1237
1248
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);
1240
1252
}
1241
- vector<string> DeleteList () {
1242
- return deleteList_;
1253
+
1254
+ virtual void Delete (const Slice& key) {
1255
+ row_ <<" ,DELETE : " ;
1256
+ row_ << LDBCommand::StringToHex (key.ToString ()) << " " ;
1243
1257
}
1244
1258
1259
+ virtual ~InMemoryHandler () { };
1260
+
1245
1261
private:
1246
- map<string, string> putMap_ ;
1247
- vector<string> deleteList_ ;
1262
+ stringstream & row_ ;
1263
+ bool print_values_ ;
1248
1264
};
1249
1265
1250
1266
const string WALDumperCommand::ARG_WAL_FILE = " walfile" ;
@@ -1322,26 +1338,8 @@ void WALDumperCommand::DoCommand() {
1322
1338
row<<WriteBatchInternal::Count (&batch)<<" ," ;
1323
1339
row<<WriteBatchInternal::ByteSize (&batch)<<" ," ;
1324
1340
row<<reader.LastRecordOffset ()<<" ," ;
1325
- InMemoryHandler handler;
1341
+ InMemoryHandler handler (row, print_values_) ;
1326
1342
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
- }
1345
1343
row<<" \n " ;
1346
1344
}
1347
1345
cout<<row.str ();
0 commit comments