Vertical merges of wide parts fail if there is an array in the table and not all columns are present in parts.
```sql
CREATE TABLE aaa 
(
  a   Array(Int16),
  b   Int8
)
ENGINE = MergeTree
ORDER BY tuple() 
settings
    vertical_merge_algorithm_min_columns_to_activate=1,
    vertical_merge_algorithm_min_rows_to_activate=1,
    min_bytes_for_wide_part=0;

insert into aaa select [], 0;
alter table aaa clear column b;

optimize table aaa final;

Received exception from server (version 22.4.2):
Code: 16. DB::Exception: Received from localhost:9000. 
DB::Exception: There is no column a.size0 in table. (NO_SUCH_COLUMN_IN_TABLE)
```
{
    serialization_infos = new_infos;
}
SerializationPtr IMergeTreeDataPart::getSerialization(const NameAndTypePair & column) const
{
    auto it = serialization_infos.find(column.getNameInStorage());
    return it == serialization_infos.end()
        ? IDataType::getSerialization(column)
        : IDataType::getSerialization(column, *it->second);
}
void IMergeTreeDataPart::removeIfNeeded()
{
    assert(assertHasValidVersionMetadata());
    if (!is_temp && state != State::DeleteOnDestroy)
        return;
    try
    {
        auto path = getFullRelativePath();
        if (!volume->getDisk()->exists(path))
            return;
        if (is_temp)
        {
            String file_name = fileName(relative_path);
            if (file_name.empty())
                throw Exception(ErrorCodes::LOGICAL_ERROR, "relative_path {} of part {} is invalid or not set", relative_path, name);
            if (!startsWith(file_name, "tmp") && !endsWith(file_name, ".tmp_proj"))
            {
                LOG_ERROR(
                    storage.log,
                    "~DataPart() should remove part {} but its name doesn't start with \"tmp\" or end with \".tmp_proj\". Too "