MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / parseType

Function parseType

src/Processors/Formats/Impl/NpyRowInputFormat.cpp:94–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92}
93
94std::shared_ptr<NumpyDataType> parseType(String type)
95{
96 /// Parse endianness
97 NumpyDataType::Endianness endianness = {};
98 if (type[0] == '<')
99 endianness = NumpyDataType::Endianness::LITTLE;
100 else if (type[0] == '>')
101 endianness = NumpyDataType::Endianness::BIG;
102 else if (type[0] == '|')
103 endianness = NumpyDataType::Endianness::NONE;
104 else
105 throw Exception(ErrorCodes::BAD_ARGUMENTS, "Wrong header data");
106
107 /// Parse type
108 if (type[1] == 'i')
109 return std::make_shared<NumpyDataTypeInt>(endianness, parseTypeSize(type.substr(2)), true);
110 if (type[1] == 'b')
111 return std::make_shared<NumpyDataTypeInt>(endianness, parseTypeSize(type.substr(2)), false);
112 if (type[1] == 'u')
113 return std::make_shared<NumpyDataTypeInt>(endianness, parseTypeSize(type.substr(2)), false);
114 if (type[1] == 'f')
115 return std::make_shared<NumpyDataTypeFloat>(endianness, parseTypeSize(type.substr(2)));
116 if (type[1] == 'S')
117 return std::make_shared<NumpyDataTypeString>(endianness, parseTypeSize(type.substr(2)));
118 if (type[1] == 'U')
119 return std::make_shared<NumpyDataTypeUnicode>(endianness, parseTypeSize(type.substr(2)));
120 if (type[1] == 'c')
121 throw Exception(ErrorCodes::BAD_ARGUMENTS, "ClickHouse doesn't support complex numeric type");
122 if (type[1] == 'O')
123 throw Exception(ErrorCodes::BAD_ARGUMENTS, "ClickHouse doesn't support object types");
124 throw Exception(ErrorCodes::BAD_ARGUMENTS, "ClickHouse doesn't support numpy type '{}'", type);
125}
126
127std::vector<size_t> parseShape(String shape_string)
128{

Callers 3

parseHeaderFunction · 0.85
fromBackupEntryMethod · 0.85

Calls 2

parseTypeSizeFunction · 0.85
ExceptionClass · 0.50

Tested by

no test coverage detected