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   │
└─────────────────────┴──────┘
```
all_mark_ranges(std::move(mark_ranges_)),
    part_index_in_query(part_index_in_query_),
    path(data_part->getFullRelativePath())
{
    
    for (const auto & range : all_mark_ranges)
        total_marks_count += range.end - range.begin;
    size_t total_rows = data_part->index_granularity.getTotalRows();
    if (!quiet)
        LOG_TRACE(log, "Reading {} ranges in reverse order from part {}, approx. {}, up to {} rows starting from {}",
            all_mark_ranges.size(), data_part->name, total_rows,
            data_part->index_granularity.getRowsCountInRanges(all_mark_ranges),
            data_part->index_granularity.getMarkStartingRow(all_mark_ranges.front().begin));
    addTotalRowsApprox(total_rows);
    ordered_names = header_without_virtual_columns.getNames();
    task_columns = getReadTaskColumns(storage, metadata_snapshot, data_part, required_columns, prewhere_info, check_columns);
    
    const auto & column_names = task_columns.columns.getNames();
    column_name_set = NameSet{column_names.begin(), column_names.end()};
    if (use_uncompressed_cache)
        owned_uncompressed_cache = storage.global_context.getUncompressedCache();
    owned_mark_cache = storage.global_context.getMarkCache();
    reader = data_part->getReader(task_columns.columns, metadata_snapshot,
        all_mark_ranges, owned_uncompressed_cache.get(),
        owned_mark_cache.get(), reader_settings);
    if (prewhere_info)
        pre_reader = data_part->getReader(task_columns.pre_columns, metadata_snapshot, all_mark_ranges,
            owned_uncompressed_cache.get(), owned_mark_cache.get(), reader_settings);
}
bool MergeTreeReverseSelectProcessor::getNewTask()