**Describe the unexpected behaviour**
Have a table with the following column definition:
```
endUserIDs Tuple(
      _experience Tuple(
          aaid Tuple(
              id Nullable(String),
              namespace Tuple(
                  code LowCardinality(Nullable(String))
              ),
              primary LowCardinality(Nullable(UInt8))
          ),
          mcid Tuple(
              id Nullable(String),
              namespace Tuple(
                  code LowCardinality(Nullable(String))
              ),
              primary LowCardinality(Nullable(UInt8))
          )
      )
  )
```
When I select a tuple element `endUserIDs._experience`, server crashes with null pointer exception:

**How to reproduce**
* 22.1.2.2
* clickhouse-client
* select endUserIDs._experience from table limit 10;

**Expected behavior**
Query should succeed (This was working on version 21.10)

**Error message and/or stacktrace**
```
2022.01.20 15:24:47.705230 [ 2793 ] {} <Fatal> BaseDaemon: ########################################
2022.01.20 15:24:47.705370 [ 2793 ] {} <Fatal> BaseDaemon: (version 22.1.2.2 (official build), build id: D4467B3558D29571) (from thread 2577) (query_id: 0e011ee7-27f7-4053-89ce-d2fe0e678170) Received signal Segmentation fault (11)
2022.01.20 15:24:47.705406 [ 2793 ] {} <Fatal> BaseDaemon: Address: NULL pointer. Access: read. Unknown si_code.
2022.01.20 15:24:47.705439 [ 2793 ] {} <Fatal> BaseDaemon: Stack trace: 0x13245f59 0x1323a5f9 0x143a2fd3 0x14b1dd2e 0x14b226e0 0x14b20ed5 0x14b16da8 0x14b17ead 0x14b16620 0x1483f655 0x1483f21a 0x14a8a802 0x1485ecc3 0x1485353e 0x14852389 0x14852098 0x148627e7 0xa86e077 0xa871a7d 0x7f74452ac609 0x7f74451d3293
2022.01.20 15:24:47.705512 [ 2793 ] {} <Fatal> BaseDaemon: 2. DB::IDataType::createColumn(DB::ISerialization const&) const @ 0x13245f59 in /usr/bin/clickhouse
2022.01.20 15:24:47.705547 [ 2793 ] {} <Fatal> BaseDaemon: 3. DB::DataTypeTuple::createColumn(DB::ISerialization const&) const @ 0x1323a5f9 in /usr/bin/clickhouse
2022.01.20 15:24:47.705579 [ 2793 ] {} <Fatal> BaseDaemon: 4. DB::MergeTreeReaderWide::readRows(unsigned long, unsigned long, bool, unsigned long, std::__1::vector<COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::immutable_ptr<DB::IColumn> > >&) @ 0x143a2fd3 in /usr/bin/clickhouse
2022.01.20 15:24:47.705614 [ 2793 ] {} <Fatal> BaseDaemon: 5. DB::MergeTreeRangeReader::DelayedStream::finalize(std::__1::vector<COW<DB::IColumn>::immutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::immutable_ptr<DB::IColumn> > >&) @ 0x14b1dd2e in /usr/bin/clickhouse
2022.01.20 15:24:47.705674 [ 2793 ] {} <Fatal> BaseDaemon: 6. DB::MergeTreeRangeReader::startReadingChain(unsigned long, std::__1::deque<DB::MarkRange, std::__1::allocator<DB::MarkRange> >&) @ 0x14b226e0 in /usr/bin/clickhouse
2022.01.20 15:24:47.705713 [ 2793 ] {} <Fatal> BaseDaemon: 7. DB::MergeTreeRangeReader::read(unsigned long, std::__1::deque<DB::MarkRange, std::__1::allocator<DB::MarkRange> >&) @ 0x14b20ed5 in /usr/bin/clickhouse
2022.01.20 15:24:47.705743 [ 2793 ] {} <Fatal> BaseDaemon: 8. DB::MergeTreeBaseSelectProcessor::readFromPartImpl() @ 0x14b16da8 in /usr/bin/clickhouse
2022.01.20 15:24:47.705765 [ 2793 ] {} <Fatal> BaseDaemon: 9. DB::MergeTreeBaseSelectProcessor::readFromPart() @ 0x14b17ead in /usr/bin/clickhouse
2022.01.20 15:24:47.705885 [ 2793 ] {} <Fatal> BaseDaemon: 10. DB::MergeTreeBaseSelectProcessor::generate() @ 0x14b16620 in /usr/bin/clickhouse
2022.01.20 15:24:47.705946 [ 2793 ] {} <Fatal> BaseDaemon: 11. DB::ISource::tryGenerate() @ 0x1483f655 in /usr/bin/clickhouse
2022.01.20 15:24:47.705981 [ 2793 ] {} <Fatal> BaseDaemon: 12. DB::ISource::work() @ 0x1483f21a in /usr/bin/clickhouse
2022.01.20 15:24:47.706010 [ 2793 ] {} <Fatal> BaseDaemon: 13. DB::SourceWithProgress::work() @ 0x14a8a802 in /usr/bin/clickhouse
2022.01.20 15:24:47.706033 [ 2793 ] {} <Fatal> BaseDaemon: 14. DB::ExecutionThreadContext::executeTask() @ 0x1485ecc3 in /usr/bin/clickhouse
2022.01.20 15:24:47.706063 [ 2793 ] {} <Fatal> BaseDaemon: 15. DB::PipelineExecutor::executeStepImpl(unsigned long, std::__1::atomic<bool>*) @ 0x1485353e in /usr/bin/clickhouse
2022.01.20 15:24:47.706109 [ 2793 ] {} <Fatal> BaseDaemon: 16. DB::PipelineExecutor::executeImpl(unsigned long) @ 0x14852389 in /usr/bin/clickhouse
2022.01.20 15:24:47.706142 [ 2793 ] {} <Fatal> BaseDaemon: 17. DB::PipelineExecutor::execute(unsigned long) @ 0x14852098 in /usr/bin/clickhouse
2022.01.20 15:24:47.706172 [ 2793 ] {} <Fatal> BaseDaemon: 18. ? @ 0x148627e7 in /usr/bin/clickhouse
2022.01.20 15:24:47.706220 [ 2793 ] {} <Fatal> BaseDaemon: 19. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xa86e077 in /usr/bin/clickhouse
2022.01.20 15:24:47.706268 [ 2793 ] {} <Fatal> BaseDaemon: 20. ? @ 0xa871a7d in /usr/bin/clickhouse
2022.01.20 15:24:47.706302 [ 2793 ] {} <Fatal> BaseDaemon: 21. ? @ 0x7f74452ac609 in ?
2022.01.20 15:24:47.706344 [ 2793 ] {} <Fatal> BaseDaemon: 22. __clone @ 0x7f74451d3293 in ?
2022.01.20 15:24:47.841121 [ 2793 ] {} <Fatal> BaseDaemon: Calculated checksum of the binary: 1DADB85040C1C3668E7B676D9BDFA079. There is no information about the reference checksum.
```


**Additional context**
Add any other context about the problem here.

{
    SerializationTuple::ElementSerializations serializations(elems.size());
    const auto & info_tuple = assert_cast<const SerializationInfoTuple &>(info);
    bool use_explicit_names = have_explicit_names && serialize_names;
    for (size_t i = 0; i < elems.size(); ++i)
    {
        String elem_name = use_explicit_names ? names[i] : toString(i + 1);
        auto serialization = elems[i]->getSerialization(*info_tuple.getElementInfo(i));
        serializations[i] = std::make_shared<SerializationNamed>(serialization, elem_name);
    }
    return std::make_shared<SerializationTuple>(std::move(serializations), use_explicit_names);
}
MutableSerializationInfoPtr DataTypeTuple::createSerializationInfo(const SerializationInfo::Settings & settings) const
{
    MutableSerializationInfos infos;
    infos.reserve(elems.size());
    for (const auto & elem : elems)
        infos.push_back(elem->createSerializationInfo(settings));
    return std::make_shared<SerializationInfoTuple>(std::move(infos), settings);
}
static DataTypePtr create(const ASTPtr & arguments)