**Describe the bug**
Here's my table:
```sql
CREATE TABLE table2
(
        EventDate Date,
        Id Int32,
        Value Int32
)
Engine = MergeTree()
PARTITION BY toYYYYMM(EventDate)
ORDER BY Id;
```

Modify default value (intentionally wrong):
```
>>> alter table table2 modify column Value default 'some_string';

ALTER TABLE table2
    MODIFY COLUMN `Value` DEFAULT 'some_string'

Ok.

0 rows in set. Elapsed: 0.007 sec. 
```

Now you obviously cannot insert anything to this table, because:
```
>>> insert into table2 (EventDate, Id) values (1234567890, 2)

INSERT INTO table2 (EventDate, Id) VALUES

Received exception from server (version 20.9.3):
Code: 6. DB::Exception: Received from localhost:9000. DB::Exception: Cannot parse string 'some_string' as Int32: syntax error at begin of string. Note: there are toInt32OrZero and toInt32OrNull functions, which returns zero/NULL instead of throwing exception.. 

1 rows in set. Elapsed: 0.002 sec. 
```

**How to reproduce**
* Which ClickHouse server version to use: 20.9.3
* Which interface to use, if matters: I used standard CLI

**Expected behavior**
Currently ClickHouse doesn't check types compability while setting a DEFAULT value for a column. Maybe ClickHouse should validate DEFAULT values for type compability?

}
            } 
            else if (all_columns.has(column_name) && command.data_type)
            {
                auto column_in_table = all_columns.get(column_name);
                
                if (!column_in_table.default_desc.expression)
                    continue;
                const auto & final_column_name = column_name;
                const auto tmp_column_name = final_column_name + "_tmp";
                const auto data_type_ptr = command.data_type;
                default_expr_list->children.emplace_back(setAlias(
                    addTypeConversionToAST(std::make_shared<ASTIdentifier>(tmp_column_name), data_type_ptr->getName()), final_column_name));
                default_expr_list->children.emplace_back(setAlias(column_in_table.default_desc.expression->clone(), tmp_column_name));
            }
        }
    }
    if (all_columns.empty())
        throw Exception{"Cannot DROP or CLEAR all columns", ErrorCodes::BAD_ARGUMENTS};
    validateColumnsDefaultsAndGetSampleBlock(default_expr_list, all_columns.getAll(), context);
}
bool AlterCommands::isSettingsAlter() const
{
    return std::all_of(begin(), end(), [](const AlterCommand & c) { return c.isSettingsAlter(); });
}
bool AlterCommands::isCommentAlter() const
{
    return std::all_of(begin(), end(), [](const AlterCommand & c) { return c.isCommentAlter(); });
}
static MutationCommand createMaterializeTTLCommand()