| 247 | } |
| 248 | |
| 249 | bool IDataType::hasDynamicSubcolumns() const |
| 250 | { |
| 251 | if (hasDynamicSubcolumnsData()) |
| 252 | return true; |
| 253 | |
| 254 | bool has_dynamic_subcolumns = false; |
| 255 | auto data = SubstreamData(getDefaultSerialization()).withType(getPtr()); |
| 256 | auto callback = [&](const SubstreamPath &, const String &, const SubstreamData & subcolumn_data) |
| 257 | { |
| 258 | has_dynamic_subcolumns |= subcolumn_data.type && subcolumn_data.type->hasDynamicSubcolumnsData(); |
| 259 | }; |
| 260 | forEachSubcolumn(callback, data); |
| 261 | return has_dynamic_subcolumns; |
| 262 | } |
| 263 | |
| 264 | DataTypePtr IDataType::tryGetSubcolumnType(std::string_view subcolumn_name) const |
| 265 | { |
no test coverage detected