Clickhouse server drops when I send ALTER TABLE request with COMMENT COLUMN for DICTIONARY.

I know the request is incorrect. But instead of returning the error, the server simply stops working.

Server version: (version 21.12.2.17 (official build))

Reproduce:

1. Create any dictionary. Example:

```sql
CREATE DICTIONARY stores (
    storeId UInt64,
    storeName String,
    shopId UInt32,
    status UInt8,
    lat Float32,
    lon Float32,
    address String,
    storeCountry String,
    storeRegion String,
    storeCity String,
    city_id UInt32,
    email String,
    storeParams String
)
PRIMARY KEY storeId
SOURCE(MYSQL(
    port 3306
    user 'user'
    password 'pass'
    replica(host '10.20.20.12' priority 1)
    db 'db'
    table 'stores'
))
LAYOUT(FLAT())
LIFETIME(300);
```

2. Send ALTER TABLE for this dictionary. Example:

```sql
ALTER TABLE stores COMMENT COLUMN storeId 'any comment';
```

```
2021.12.28 09:17:05.578111 [ 251 ] {} <Fatal> BaseDaemon: ########################################
2021.12.28 09:17:05.582661 [ 251 ] {} <Fatal> BaseDaemon: (version 21.12.2.17 (official build), build id: 29EDA0CC01FD10E7) (from thread 96) (query_id: 780d68be-8e65-43c5-b454-0af77e7264a8) Received signal Segmentation fault (11)
2021.12.28 09:17:05.591963 [ 251 ] {} <Fatal> BaseDaemon: Address: 0x18 Access: read. Address not mapped to object.
2021.12.28 09:17:05.599694 [ 251 ] {} <Fatal> BaseDaemon: Stack trace: 0x12b47423 0x12b46d9b 0x12b251ca 0x1362c344 0x12f480b7 0x12f45d52 0x134cff90 0x134d341c 0x13d3426e 0x13d389c7 0x13f9b38a 0x16ee23af 0x16ee4801 0x16ff3589 0x16ff0c80 0x7f14c5f93609 0x7f14c5eba293
2021.12.28 09:17:05.607719 [ 251 ] {} <Fatal> BaseDaemon: 2. void DB::IAST::replace<DB::ASTExpressionList>(DB::ASTExpressionList*&, std::__1::shared_ptr<DB::IAST> const&) @ 0x12b47423 in /usr/bin/clickhouse
2021.12.28 09:17:05.614280 [ 251 ] {} <Fatal> BaseDaemon: 3. DB::applyMetadataChangesToCreateQuery(std::__1::shared_ptr<DB::IAST> const&, DB::StorageInMemoryMetadata const&) @ 0x12b46d9b in /usr/bin/clickhouse
2021.12.28 09:17:05.620176 [ 251 ] {} <Fatal> BaseDaemon: 4. DB::DatabaseOrdinary::alterTable(std::__1::shared_ptr<DB::Context const>, DB::StorageID const&, DB::StorageInMemoryMetadata const&) @ 0x12b251ca in /usr/bin/clickhouse
2021.12.28 09:17:05.629057 [ 251 ] {} <Fatal> BaseDaemon: 5. DB::IStorage::alter(DB::AlterCommands const&, std::__1::shared_ptr<DB::Context const>, std::__1::unique_lock<std::__1::timed_mutex>&) @ 0x1362c344 in /usr/bin/clickhouse
2021.12.28 09:17:05.634461 [ 251 ] {} <Fatal> BaseDaemon: 6. DB::InterpreterAlterQuery::executeToTable(DB::ASTAlterQuery const&) @ 0x12f480b7 in /usr/bin/clickhouse
2021.12.28 09:17:05.644173 [ 251 ] {} <Fatal> BaseDaemon: 7. DB::InterpreterAlterQuery::execute() @ 0x12f45d52 in /usr/bin/clickhouse
2021.12.28 09:17:05.651961 [ 251 ] {} <Fatal> BaseDaemon: 8. ? @ 0x134cff90 in /usr/bin/clickhouse
2021.12.28 09:17:05.661756 [ 251 ] {} <Fatal> BaseDaemon: 9. DB::executeQuery(DB::ReadBuffer&, DB::WriteBuffer&, bool, std::__1::shared_ptr<DB::Context>, std::__1::function<void (std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>, std::__1::optional<DB::FormatSettings> const&) @ 0x134d341c in /usr/bin/clickhouse
2021.12.28 09:17:05.673192 [ 251 ] {} <Fatal> BaseDaemon: 10. DB::HTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTMLForm&, DB::HTTPServerResponse&, DB::HTTPHandler::Output&, std::__1::optional<DB::CurrentThread::QueryScope>&) @ 0x13d3426e in /usr/bin/clickhouse
2021.12.28 09:17:05.682933 [ 251 ] {} <Fatal> BaseDaemon: 11. DB::HTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&) @ 0x13d389c7 in /usr/bin/clickhouse
```
Full logs:  
[clickhouse-server.log](https://github.com/ClickHouse/ClickHouse/files/7784075/clickhouse-server.log)
[clickhouse-server.err.log](https://github.com/ClickHouse/ClickHouse/files/7784077/clickhouse-server.err.log)


{
    return {
        {"key", std::make_shared<DataTypeString>()}
    };
}
void StorageSystemDictionaries::fillData(MutableColumns & res_columns, ContextPtr context, const SelectQueryInfo & ) const
{
    const auto access = context->getAccess();
    const bool check_access_for_dictionaries = access->isGranted(AccessType::SHOW_DICTIONARIES);
    const auto & external_dictionaries = context->getExternalDictionariesLoader();
    if (!check_access_for_dictionaries)
        return;
    for (const auto & load_result : external_dictionaries.getLoadResults())
    {
        const auto dict_ptr = std::dynamic_pointer_cast<const IDictionary>(load_result.object);
        DictionaryStructure dictionary_structure = ExternalDictionariesLoader::getDictionaryStructure(*load_result.config);
        StorageID dict_id = StorageID::createEmpty();
        if (dict_ptr)
            dict_id = dict_ptr->getDictionaryID();
        else if (load_result.config)
            dict_id = StorageID::fromDictionaryConfig(*load_result.config->config, load_result.config->key_in_config);
        else
            dict_id.table_name = load_result.name;
        String db_or_tag = dict_id.database_name.empty() ? IDictionary::NO_DATABASE_TAG : dict_id.database_name;
        if (!access->isGranted(AccessType::SHOW_DICTIONARIES, db_or_tag, dict_id.table_name))
            continue;