20.10.1
```
cat x.sql

drop table if exists enum_test;

create table enum_test(timestamp DateTime, host String, e Enum8('IU' = 1, 'WS' = 2))
Engine = MergeTree PARTITION BY toDate(timestamp) ORDER BY (timestamp, host);

insert into enum_test select '2020-10-09 00:00:00', 'h1', 'WS' from numbers(1000);
alter table enum_test modify column e Enum8('IU' = 1, 'WS' = 2, 'PS' = 3);
insert into enum_test select  '2020-10-09 00:00:00', 'h1', 'PS' from numbers(10);

SELECT * FROM enum_test ORDER BY timestamp DESC LIMIT 1;

Received exception from server (version 20.10.1):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: Block structure mismatch in Pipe::unitePipes stream: different types:
timestamp DateTime UInt32(size = 0), host String String(size = 0), e Enum8('IU' = 1, 'WS' = 2, 'PS' = 3) Int8(size = 0)
timestamp DateTime UInt32(size = 0), host String String(size = 0), e Enum8('IU' = 1, 'WS' = 2) Int8(size = 0).


optimize table enum_test final;
SELECT timestamp, host FROM enum_test ORDER BY timestamp DESC LIMIT 1;
┌───────────timestamp─┬─host─┐
│ 2020-10-09 00:00:00 │ h1   │
└─────────────────────┴──────┘
```
try
{
    if ((chunks.empty() && all_mark_ranges.empty()) || total_marks_count == 0)
    {
        finish();
        return false;
    }
    
    
    if (all_mark_ranges.empty())
        return true;
    
    MarkRanges mark_ranges_for_task = { all_mark_ranges.back() };
    all_mark_ranges.pop_back();
    auto size_predictor = (preferred_block_size_bytes == 0)
        ? nullptr
        : std::make_unique<MergeTreeBlockSizePredictor>(data_part, ordered_names, metadata_snapshot->getSampleBlock());
    task = std::make_unique<MergeTreeReadTask>(
        data_part, mark_ranges_for_task, part_index_in_query, ordered_names, column_name_set,
        task_columns.columns, task_columns.pre_columns, prewhere_info && prewhere_info->remove_prewhere_column,
        task_columns.should_reorder, std::move(size_predictor));
    return true;
}