After you create table with fields with dots and after alter table clickhouse throw exception about bad cast
version 20.12.3

How to reproduce

```
CREATE TABLE test_nested
(
    `id` String,
    `with_dot.str` String,
    `with_dot.array` Array(Int32)
)
ENGINE = MergeTree()
ORDER BY id


Insert Into test_nested (id,`with_dot.str`, `with_dot.array`) VALUES('123','asd',[1,2])

select * FROM test_nested


SELECT *
FROM test_nested

Query id: 42f26a6e-7573-4169-a4a1-9fe7022ba656

┌─id──┬─with_dot.str─┬─with_dot.array─┐
│ 123 │ asd          │ [1,2]          │
└─────┴──────────────┴────────────────┘

alter table test_nested ADD COLUMN `with_dot.bool` UInt8


SELECT *
FROM test_nested

Query id: 3ea8ae6b-1e0a-4ae5-b4d0-dcdcb6b7b8f8


Received exception from server (version 20.12.3):
Code: 49. DB::Exception: Received from localhost:9000. DB::Exception: Bad cast from type DB::DataTypeNumber<char8_t> to DB::DataTypeArray: (while reading from part /var/lib/clickhouse/store...
```

I think that happend because clickhouse after altert think that field `with_dot.bool` is nested and trying to cast to array, but i'm not creating nested field, i'm only use field name with `.`

{
    String table_name = Nested::extractTableName(column_name);
    for (const auto & part_column : data_part->getColumns())
    {
        if (typeid_cast<const DataTypeArray *>(part_column.type.get()))
        {
            auto position = data_part->getColumnPosition(part_column.name);
            if (position && Nested::extractTableName(part_column.name) == table_name)
                return position;
        }
    }
    return {};
}
void IMergeTreeReader::checkNumberOfColumns(size_t num_columns_to_read) const
{
    if (num_columns_to_read != columns.size())
        throw Exception("invalid number of columns passed to MergeTreeReader::readRows. "
                        "Expected " + toString(columns.size()) + ", "
                        "got " + toString(num_columns_to_read), ErrorCodes::LOGICAL_ERROR);
}
}