**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.
```
else if (create.replace_view)
            {
                
                auto drop_ast = std::make_shared<ASTDropQuery>();
                drop_ast->database = create.database;
                drop_ast->table = table_name;
                drop_ast->no_ddl_lock = true;
                InterpreterDropQuery interpreter(drop_ast, context);
                interpreter.execute();
            }
            else
                throw Exception("Table " + create.database + "." + table_name + " already exists.", ErrorCodes::TABLE_ALREADY_EXISTS);
        }
        data_path = database->getTableDataPath(create);
        if (!create.attach && !data_path.empty() && fs::exists(fs::path{context.getPath()} / data_path))
            throw Exception("Directory for table data " + data_path + " already exists", ErrorCodes::TABLE_ALREADY_EXISTS);
    }
    else
    {
        if (create.if_not_exists && context.tryResolveStorageID({"", table_name}, Context::ResolveExternal))
            return false;
        auto temporary_table = TemporaryTableHolder(context, properties.columns, properties.constraints, query_ptr);
        context.getSessionContext().addExternalTable(table_name, std::move(temporary_table));
        return true;
    }
    StoragePtr res;
    
    if (create.as_table_function)
    {
        const auto & table_function = create.as_table_function->as<ASTFunction &>();