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

Method registerDataType

src/DataTypes/DataTypeFactory.cpp:289–308  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

287}
288
289void DataTypeFactory::registerDataType(const String & family_name, Value creator, Case case_sensitiveness, Documentation documentation)
290{
291 if (creator == nullptr)
292 throw Exception(ErrorCodes::LOGICAL_ERROR, "DataTypeFactory: the data type family {} has been provided a null constructor", family_name);
293
294 String family_name_lowercase = Poco::toLower(family_name);
295
296 if (isAlias(family_name) || isAlias(family_name_lowercase))
297 throw Exception(ErrorCodes::LOGICAL_ERROR, "DataTypeFactory: the data type family name '{}' is already registered as alias", family_name);
298
299 if (!data_types.emplace(family_name, creator).second)
300 throw Exception(ErrorCodes::LOGICAL_ERROR, "DataTypeFactory: the data type family name '{}' is not unique",
301 family_name);
302
303 if (case_sensitiveness == Case::Insensitive
304 && !case_insensitive_data_types.emplace(family_name_lowercase, creator).second)
305 throw Exception(ErrorCodes::LOGICAL_ERROR, "DataTypeFactory: the case insensitive data type family name '{}' is not unique", family_name);
306
307 data_type_documentations.emplace(family_name, std::move(documentation));
308}
309
310void DataTypeFactory::registerSimpleDataType(const String & name, SimpleCreator creator, Case case_sensitiveness, Documentation documentation)
311{

Callers 15

registerDataTypeArrayFunction · 0.80
registerDataTypeNumbersFunction · 0.80
registerDataTypeStringFunction · 0.80
registerDataTypeDateTimeFunction · 0.80
registerDataTypeTimeFunction · 0.80
registerDataTypeEnumFunction · 0.80
registerDataTypeDecimalFunction · 0.80
registerDataTypeJSONFunction · 0.80
registerDataTypeTupleFunction · 0.80
registerDataTypeMapFunction · 0.80
registerDataTypeDynamicFunction · 0.80

Calls 3

ExceptionClass · 0.50
toLowerFunction · 0.50
emplaceMethod · 0.45

Tested by

no test coverage detected