(you don't have to strictly follow this form)

**Describe the bug**
Join fails if table names contain some special symbols (e.g. '/').

**How to reproduce**
* Which ClickHouse server version to use
version 20.11.4
* Which interface to use, if matters
* Non-default settings, if any
* `CREATE TABLE` statements for all tables involved
create table "/t0" (a Int64, b Int64) engine = MergeTree() partition by a order by a;
create table "/t1" (a Int64, b Int64) engine = MergeTree() partition by a order by a;
* Sample data for all these tables
insert into "/t0" values (0, 0);
insert into "/t1" values (0, 1);
* Queries to run that lead to unexpected result
select * from "/t0" join "/t1" using a
**Expected behavior**
A clear and concise description of what you expected to happen.

**Error message and/or stacktrace**

Received exception from server (version 20.11.4):
Code: 62. DB::Exception: Received from localhost:9000. DB::Exception: Syntax error (table or subquery or table function): failed at position 16 ('/'): /t1) as /t1. Expected one of: SELECT subquery, compound identifier, identifier, element of expression with optional alias, list of elements, function, table, table function, subquery or list of joined tables, table or subquery or table function.

**Additional context**

When I rename tables with "t0" and "t1" everything works fine. It looks like ClickHouse rewrites query somehow and uses table names without quotes.

extern const int AMBIGUOUS_COLUMN_NAME;
    extern const int LOGICAL_ERROR;
}
namespace
{
void replaceJoinedTable(const ASTSelectQuery & select_query)
{
    const ASTTablesInSelectQueryElement * join = select_query.join();
    if (!join || !join->table_expression)
        return;
    
    const auto & table_join = join->table_join->as<ASTTableJoin &>();
    if (table_join.kind == ASTTableJoin::Kind::Cross)
        return;
    auto & table_expr = join->table_expression->as<ASTTableExpression &>();
    if (table_expr.database_and_table_name)
    {
        const auto & table_id = table_expr.database_and_table_name->as<ASTTableIdentifier &>();
        String expr = "(select * from " + table_id.name() + ") as " + table_id.shortName();
        
        
        
        if (table_id.alias.empty() && table_id.isShort())
        {
            ParserTableExpression parser;
            table_expr = parseQuery(parser, expr, 0, DBMS_DEFAULT_MAX_PARSER_DEPTH)->as<ASTTableExpression &>();
        }
    }
}
class RenameQualifiedIdentifiersMatcher