| 280 | } |
| 281 | |
| 282 | const DataTypeTuple * tryGetFlattenableTuple(const DataTypePtr & type) |
| 283 | { |
| 284 | const auto * tuple_type = typeid_cast<const DataTypeTuple *>(type.get()); |
| 285 | if (tuple_type && !tuple_type->getElements().empty() && !type->hasCustomName()) |
| 286 | return tuple_type; |
| 287 | return nullptr; |
| 288 | } |
| 289 | |
| 290 | /// Recursively flattens one (column, type) into its leaf columns, calling |
| 291 | /// `emit_leaf(column, type, name, ancestors)` once per leaf. A leaf is anything |
no test coverage detected