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   │
└─────────────────────┴──────┘
```
catch (...)
{
    
    if (getCurrentExceptionCode() != ErrorCodes::MEMORY_LIMIT_EXCEEDED)
        storage.reportBrokenPart(data_part->name);
    throw;
}
Chunk MergeTreeReverseSelectProcessor::readFromPart()
{
    Chunk res;
    if (!chunks.empty())
    {
        res = std::move(chunks.back());
        chunks.pop_back();
        return res;
    }
    if (!task->range_reader.isInitialized())
        initializeRangeReaders(*task);
    while (!task->isFinished())
    {
        Chunk chunk = readFromPartImpl();
        chunks.push_back(std::move(chunk));
    }
    if (chunks.empty())
        return {};
    res = std::move(chunks.back());
    chunks.pop_back();
    return res;
}
void MergeTreeReverseSelectProcessor::finish()