Clickhouse version: 21.2.5.5

Got wrong result when excuting mutation on Memory table engine.

```sql
CREATE TABLE mem_test(id Int64) ENGINE=Memory();
INSERT INTO mem_test VALUES (1), (2), (3);
ALTER TABLE mem_test UPDATE id=4 WHERE id=1;
SELECT count(*) FROM mem_test;

┌─count()─┐
│      24 │
└─────────┘

SELECT * FROM mem_test;

┌─id─┐
│  4 │
│  2 │
│  3 │
└────┘

3 rows in set. Elapsed: 0.001 sec.
```

protected:
    Chunk generate() override
    {
        if (initializer_func)
        {
            initializer_func(data);
            initializer_func = {};
        }
        size_t current_index = getAndIncrementExecutionIndex();
        if (!data || current_index >= data->size())
        {
            return {};
        }
        const Block & src = (*data)[current_index];
        Columns columns;
        columns.reserve(columns.size());
        
        for (const auto & elem : column_names_and_types)
        {
            auto current_column = src.getByName(elem.getNameInStorage()).column;
            current_column = current_column->decompress();
            if (elem.isSubcolumn())
                columns.emplace_back(elem.getTypeInStorage()->getSubcolumn(elem.getSubcolumnName(), *current_column));
            else
                columns.emplace_back(std::move(current_column));
        }
        return Chunk(std::move(columns), src.rows());
    }
private:
    size_t getAndIncrementExecutionIndex()