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.
```

{
    using InitializerFunc = std::function<void(std::shared_ptr<const Blocks> &)>;
public:
    MemorySource(
        Names column_names_,
        const StorageMemory & storage,
        const StorageMetadataPtr & metadata_snapshot,
        std::shared_ptr<const Blocks> data_,
        std::shared_ptr<std::atomic<size_t>> parallel_execution_index_,
        InitializerFunc initializer_func_ = {})
        : SourceWithProgress(metadata_snapshot->getSampleBlockForColumns(column_names_, storage.getVirtuals(), storage.getStorageID()))
        , column_names_and_types(metadata_snapshot->getColumns().getAllWithSubcolumns().addTypes(std::move(column_names_)))
        , data(data_)
        , parallel_execution_index(parallel_execution_index_)
        , initializer_func(std::move(initializer_func_))
    {
    }
    String getName() const override { return "Memory"; }