MCPcopy Create free account
hub / github.com/ByConity/ByConity / getLeastCommonTypeForTuple

Function getLeastCommonTypeForTuple

src/DataTypes/ObjectUtils.cpp:395–420  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

393}
394
395static DataTypePtr getLeastCommonTypeForTuple(
396 const DataTypeTuple & type, const DataTypes & concrete_types, bool check_ambiguos_paths)
397{
398 const auto & element_types = type.getElements();
399 DataTypes new_element_types(element_types.size());
400
401 for (size_t i = 0; i < element_types.size(); ++i)
402 {
403 DataTypes concrete_element_types;
404 concrete_element_types.reserve(concrete_types.size());
405
406 for (const auto & type_concrete : concrete_types)
407 {
408 const auto * type_tuple_conctete = typeid_cast<const DataTypeTuple *>(type_concrete.get());
409 if (!type_tuple_conctete)
410 throw Exception(ErrorCodes::TYPE_MISMATCH, "Expected Tuple type, got {}", type_concrete->getName());
411
412 concrete_element_types.push_back(type_tuple_conctete->getElement(i));
413 }
414
415 new_element_types[i] = getLeastCommonTypeForDynamicColumnsImpl(
416 element_types[i], concrete_element_types, check_ambiguos_paths);
417 }
418
419 return recreateTupleWithElements(type, new_element_types);
420}
421
422static DataTypePtr getLeastCommonTypeForDynamicColumnsImpl(
423 const DataTypePtr & type_in_storage, const DataTypes & concrete_types, bool check_ambiguos_paths)

Calls 10

getElementMethod · 0.80
ExceptionClass · 0.50
getElementsMethod · 0.45
sizeMethod · 0.45
reserveMethod · 0.45
getMethod · 0.45
getNameMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected