| 1 | #include <Storages/MergeTree/ReplicatedMergeTreeMutationEntry.h> | 
|---|---|
| 2 | #include <IO/Operators.h> | 
| 3 | #include <IO/ReadBufferFromString.h> | 
| 4 | #include <IO/WriteBufferFromString.h> | 
| 5 | |
| 6 | |
| 7 | namespace DB | 
| 8 | { | 
| 9 | |
| 10 | void ReplicatedMergeTreeMutationEntry::writeText(WriteBuffer & out) const | 
| 11 | { | 
| 12 | out << "format version: 1\n" | 
| 13 | << "create time: "<< LocalDateTime(create_time ? create_time : time(nullptr)) << "\n" | 
| 14 | << "source replica: "<< source_replica << "\n" | 
| 15 | << "block numbers count: "<< block_numbers.size() << "\n"; | 
| 16 | |
| 17 | for (const auto & kv : block_numbers) | 
| 18 | { | 
| 19 | const String & partition_id = kv.first; | 
| 20 | Int64 number = kv.second; | 
| 21 | out << partition_id << "\t"<< number << "\n"; | 
| 22 | } | 
| 23 | |
| 24 | out << "commands: "; | 
| 25 | commands.writeText(out); | 
| 26 | } | 
| 27 | |
| 28 | void ReplicatedMergeTreeMutationEntry::readText(ReadBuffer & in) | 
| 29 | { | 
| 30 | in >> "format version: 1\n"; | 
| 31 | |
| 32 | LocalDateTime create_time_dt; | 
| 33 | in >> "create time: ">> create_time_dt >> "\n"; | 
| 34 | create_time = create_time_dt; | 
| 35 | |
| 36 | in >> "source replica: ">> source_replica >> "\n"; | 
| 37 | |
| 38 | size_t count; | 
| 39 | in >> "block numbers count: ">> count >> "\n"; | 
| 40 | for (size_t i = 0; i < count; ++i) | 
| 41 | { | 
| 42 | String partition_id; | 
| 43 | Int64 number; | 
| 44 | in >> partition_id >> "\t">> number >> "\n"; | 
| 45 | block_numbers[partition_id] = number; | 
| 46 | } | 
| 47 | |
| 48 | in >> "commands: "; | 
| 49 | commands.readText(in); | 
| 50 | } | 
| 51 | |
| 52 | String ReplicatedMergeTreeMutationEntry::toString() const | 
| 53 | { | 
| 54 | WriteBufferFromOwnString out; | 
| 55 | writeText(out); | 
| 56 | return out.str(); | 
| 57 | } | 
| 58 | |
| 59 | ReplicatedMergeTreeMutationEntry ReplicatedMergeTreeMutationEntry::parse(const String & str, String znode_name) | 
| 60 | { | 
| 61 | ReplicatedMergeTreeMutationEntry res; | 
| 62 | res.znode_name = std::move(znode_name); | 
| 63 | |
| 64 | ReadBufferFromString in(str); | 
| 65 | res.readText(in); | 
| 66 | assertEOF(in); | 
| 67 | |
| 68 | return res; | 
| 69 | } | 
| 70 | |
| 71 | } | 
| 72 | 
