| 879 | |
| 880 | |
| 881 | MergeTreeMetaBase::MutableDataPartPtr MergeTreeMetaBase::createPart( |
| 882 | const String & name, |
| 883 | MergeTreeDataPartType type, |
| 884 | const MergeTreePartInfo & part_info, |
| 885 | const VolumePtr & volume, |
| 886 | const String & relative_path, |
| 887 | const IMergeTreeDataPart * parent_part, |
| 888 | StorageLocation location) const |
| 889 | { |
| 890 | switch (type.getValue()) |
| 891 | { |
| 892 | case MergeTreeDataPartType::COMPACT: |
| 893 | return std::make_shared<MergeTreeDataPartCompact>(*this, name, part_info, volume, relative_path, parent_part, location); |
| 894 | case MergeTreeDataPartType::WIDE: |
| 895 | return std::make_shared<MergeTreeDataPartWide>(*this, name, part_info, volume, relative_path, parent_part, location); |
| 896 | case MergeTreeDataPartType::IN_MEMORY: |
| 897 | return std::make_shared<MergeTreeDataPartInMemory>(*this, name, part_info, volume, relative_path, parent_part, location); |
| 898 | case MergeTreeDataPartType::CNCH: |
| 899 | if (location != StorageLocation::MAIN) |
| 900 | { |
| 901 | throw Exception("Create CNCH part in auxility storage is forbidden", |
| 902 | ErrorCodes::LOGICAL_ERROR); |
| 903 | } |
| 904 | return std::make_shared<MergeTreeDataPartCNCH>(*this, name, part_info, volume, relative_path, parent_part); |
| 905 | case MergeTreeDataPartType::UNKNOWN: |
| 906 | throw Exception("Unknown type of part " + relative_path, ErrorCodes::UNKNOWN_PART_TYPE); |
| 907 | } |
| 908 | |
| 909 | __builtin_unreachable(); |
| 910 | } |
| 911 | |
| 912 | static MergeTreeDataPartType getPartTypeFromMarkExtension(const String & mrk_ext) |
| 913 | { |
no test coverage detected