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

Function getSubcolumnsOfNested

src/DataTypes/NestedUtils.cpp:119–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117using NameToDataType = std::map<String, DataTypePtr>;
118
119NameToDataType getSubcolumnsOfNested(const NamesAndTypesList & names_and_types)
120{
121 std::unordered_map<String, NamesAndTypesList> nested;
122 for (const auto & name_type : names_and_types)
123 {
124 const DataTypeArray * type_arr = typeid_cast<const DataTypeArray *>(name_type.type.get());
125
126 /// Ignore true Nested type, but try to unite flatten arrays to Nested type.
127 if (!isNested(name_type.type) && type_arr)
128 {
129 auto split = splitName(name_type.name);
130 if (!split.second.empty())
131 nested[split.first].emplace_back(split.second, type_arr->getNestedType());
132 }
133 }
134
135 std::map<String, DataTypePtr> nested_types;
136
137 for (const auto & [name, elems] : nested)
138 nested_types.emplace(name, createNested(elems.getTypes(), elems.getNames()));
139
140 return nested_types;
141}
142
143}
144

Callers 2

collectFunction · 0.85
convertToSubcolumnsFunction · 0.85

Calls 10

isNestedFunction · 0.85
splitNameFunction · 0.85
createNestedFunction · 0.85
getNestedTypeMethod · 0.80
getTypesMethod · 0.80
getMethod · 0.45
emptyMethod · 0.45
emplace_backMethod · 0.45
emplaceMethod · 0.45
getNamesMethod · 0.45

Tested by

no test coverage detected