**Describe the bug**
Table creation with named tuples is broken

**How to reproduce**
ClickHouse server version 20.5.3.27

```
:) SELECT version();

┌─version()─┐
│ 20.5.3.27 │
└───────────┘
```
```
:) CREATE TABLE test.tuple
(
    `j` Tuple( a Int8, b String)
)
ENGINE = Memory;


Received exception from server (version 20.5.3):
Code: 62. DB::Exception: Received from localhost:9000. DB::Exception: Syntax error (data type): failed at position 9: Int8, b String). Expected one of: LIKE, GLOBAL NOT IN, AS, IS, OR, QuestionMark, BETWEEN, NOT LIKE, AND, Comma, alias, IN, Dot, NOT, Arrow, token, NOT IN, GLOBAL IN.
```
```
:) CREATE TABLE test.tuple_from_select
ENGINE = Memory AS
SELECT CAST((1, 'Test'), 'Tuple( a Int8,  b String)') AS j;


Received exception from server (version 20.5.3):
Code: 62. DB::Exception: Received from localhost:9000. DB::Exception: Syntax error (data type): failed at position 9: Int8, b String). Expected one of: LIKE, GLOBAL NOT IN, AS, IS, OR, QuestionMark, BETWEEN, NOT LIKE, AND, Comma, alias, IN, Dot, NOT, Arrow, token, NOT IN, GLOBAL IN.
```

**This works fine on 20.4.6.53:**
```
:) SELECT version();

┌─version()─┐
│ 20.4.6.53 │
└───────────┘
```
```
:) CREATE TABLE test.tuple
(
    `j` Tuple( a Int8, b String)
)
ENGINE = Memory;

Ok.
```
```
:) SHOW CREATE TABLE test.tuple

┌─statement───────────────────────────────────────────────────────────────────────┐
│ CREATE TABLE test.tuple
(
    `j` Tuple(
    a Int8, 
    b String)
)
ENGINE = Memory │
└─────────────────────────────────────────────────────────────────────────────────┘
```
```
:) CREATE TABLE test.tuple_from_select
ENGINE = Memory AS
SELECT CAST((1, 'Test'), 'Tuple( a Int8,  b String)') AS j;

Ok.
```
if (!create.attach && fs::exists(metadata_path))
            throw Exception(ErrorCodes::DATABASE_ALREADY_EXISTS, "Metadata directory {} already exists", metadata_path);
    }
    else
    {
        bool is_on_cluster = context.getClientInfo().query_kind == ClientInfo::QueryKind::SECONDARY_QUERY;
        if (create.uuid != UUIDHelpers::Nil && !is_on_cluster)
            throw Exception("Ordinary database engine does not support UUID", ErrorCodes::INCORRECT_QUERY);
        
        create.uuid = UUIDHelpers::Nil;
        metadata_path = metadata_path / "metadata" / database_name_escaped;
    }
    if (create.storage->engine->name == "MaterializeMySQL" && !context.getSettingsRef().allow_experimental_database_materialize_mysql && !internal)
    {
        throw Exception("MaterializeMySQL is an experimental database engine. "
                        "Enable allow_experimental_database_materialize_mysql to use it.", ErrorCodes::UNKNOWN_DATABASE_ENGINE);
    }
    DatabasePtr database = DatabaseFactory::get(create, metadata_path / "", context);
    if (create.uuid != UUIDHelpers::Nil)
        create.database = TABLE_WITH_UUID_NAME_PLACEHOLDER;
    bool need_write_metadata = !create.attach || !fs::exists(metadata_file_path);
    if (need_write_metadata)
    {
        create.attach = true;
        create.if_not_exists = false;
        std::ostringstream statement_stream;
        formatAST(create, statement_stream, false);
        statement_stream << '\n';
        String statement = statement_stream.str();