**Use case**

If FixedString is used with more than 256 bytes in size, it is suspicious and most likely indicates misusage.
Forbid this by default and add a setting to override it; ATTACH queries should allow creating tables nevertheless.

See also: `allow_suspicious_low_cardinality_types`.

{
    elem.query_kind = "Create";
    if (!as_table_saved.empty())
    {
        String database = backQuoteIfNeed(as_database_saved.empty() ? getContext()->getCurrentDatabase() : as_database_saved);
        elem.query_databases.insert(database);
        elem.query_tables.insert(database + "." + backQuoteIfNeed(as_table_saved));
    }
}
void InterpreterCreateQuery::addColumnsDescriptionToCreateQueryIfNecessary(ASTCreateQuery & create, const StoragePtr & storage)
{
    if (create.is_dictionary || (create.columns_list && create.columns_list->columns && !create.columns_list->columns->children.empty()))
        return;
    auto ast_storage = std::make_shared<ASTStorage>();
    auto query_from_storage = DB::getCreateQueryFromStorage(storage, ast_storage, false,
                                                            getContext()->getSettingsRef().max_parser_depth, true);
    auto & create_query_from_storage = query_from_storage->as<ASTCreateQuery &>();
    if (!create.columns_list)
    {
        ASTPtr columns_list = std::make_shared<ASTColumns>(*create_query_from_storage.columns_list);
        create.set(create.columns_list, columns_list);
    }
    else
    {
        ASTPtr columns = std::make_shared<ASTExpressionList>(*create_query_from_storage.columns_list->columns);
        create.columns_list->set(create.columns_list->columns, columns);
    }
}
}