| 380 | } |
| 381 | |
| 382 | SerializationPtr DataTypeTuple::getSerialization(const SerializationInfo & info) const |
| 383 | { |
| 384 | SerializationTuple::ElementSerializations serializations(elems.size()); |
| 385 | const auto & info_tuple = assert_cast<const SerializationInfoTuple &>(info); |
| 386 | |
| 387 | for (size_t i = 0; i < elems.size(); ++i) |
| 388 | { |
| 389 | String elem_name = has_explicit_names ? names[i] : toString(i + 1); |
| 390 | auto serialization = elems[i]->getSerialization(*info_tuple.getElementInfo(i)); |
| 391 | serializations[i] = std::static_pointer_cast<const SerializationNamed>(SerializationNamed::create(serialization, elem_name, SubstreamType::TupleElement)); |
| 392 | } |
| 393 | |
| 394 | auto kinds = info.getKindStack(); |
| 395 | /// Compatibility with older version that may propagate Sparse serialization for Tuple itself (in serialization.json) |
| 396 | std::erase(kinds, ISerialization::Kind::SPARSE); |
| 397 | return wrapSerializationBasedOnKindStack(SerializationTuple::create(std::move(serializations), has_explicit_names), kinds, info.getSettings()); |
| 398 | } |
| 399 | |
| 400 | MutableSerializationInfoPtr DataTypeTuple::createSerializationInfo(const SerializationInfoSettings & settings) const |
| 401 | { |
no test coverage detected