**Describe the bug**
```
clickhouse-client --max_block_size 123 -n < 01130_in_memory_parts_nested.sql
```

Outputs an array with huge number of zeros that is definitely incorrect.
{
    if (!continue_reading)
        total_rows_read = 0;
    size_t total_marks = data_part->index_granularity.getMarksCount();
    if (from_mark >= total_marks)
        throw Exception("Mark " + toString(from_mark) + " is out of bound. Max mark: "
            + toString(total_marks), ErrorCodes::ARGUMENT_OUT_OF_BOUND);
    size_t num_columns = res_columns.size();
    checkNumberOfColumns(num_columns);
    size_t part_rows = part_in_memory->block.rows();
    if (total_rows_read >= part_rows)
        throw Exception("Cannot read data in MergeTreeReaderInMemory. Rows already read: "
            + toString(total_rows_read) + ". Rows in part: " + toString(part_rows), ErrorCodes::CANNOT_READ_ALL_DATA);
    size_t rows_to_read = std::min(max_rows_to_read, part_rows - total_rows_read);
    auto column_it = columns.begin();
    for (size_t i = 0; i < num_columns; ++i, ++column_it)
    {
        auto [name, type] = getColumnFromPart(*column_it);
        
        auto offsets_it = positions_for_offsets.find(name);
        if (offsets_it != positions_for_offsets.end())
        {
            const auto & source_offsets = assert_cast<const ColumnArray &>(
                *part_in_memory->block.getByPosition(offsets_it->second).column).getOffsets();