| 87 | } |
| 88 | |
| 89 | MutableDataPartPtr buildPartFromMeta(const MergeTreeMetaBase & storage, const String & part_name, const Protos::DataPartModel & part_data) |
| 90 | { |
| 91 | MergeTreePartInfo part_info; |
| 92 | if (!MergeTreePartInfo::tryParsePartName(part_name, &part_info, storage.format_version)) |
| 93 | throw Exception("Cannot parse part info from name : " + part_name, ErrorCodes::BROKEN_META_DATA); |
| 94 | |
| 95 | DiskPtr disk_ptr = storage.getStoragePolicy(IStorage::StorageLocation::MAIN)->getDiskByID(part_data.disk_id()); |
| 96 | if (!disk_ptr) |
| 97 | throw Exception("Cannot get the disk with id '" + std::to_string(part_data.disk_id()) + "' for part : " + part_name, ErrorCodes::UNKNOWN_DISK); |
| 98 | |
| 99 | auto single_disk_volume = std::make_shared<SingleDiskVolume>("volume_" + part_name, disk_ptr, 0); |
| 100 | MergeTreeDataPartType type; |
| 101 | type.fromString(part_data.type()); |
| 102 | MutableDataPartPtr part = storage.createPart(part_name, type, part_info, single_disk_volume, part_name); |
| 103 | |
| 104 | deserializePartCommon(part_data, part); |
| 105 | |
| 106 | return part; |
| 107 | } |
| 108 | |
| 109 | MutableDataPartPtr buildProjectionFromMeta(const MergeTreeMetaBase & storage, const String & projection_name, const Protos::DataPartModel & part_data, const IMergeTreeDataPart * parent) |
| 110 | { |
no test coverage detected