You have to provide the following information whenever possible.

**Describe the bug**

When use chinese as field name for nested type and query:

````
SELECT * from table array join `xxxx`;
````

it will raise error:

No columns in nested table xxx

**Does it reproduce on recent release?**

ClickHouse server version 21.3.5 revision 54447.

**How to reproduce**

1. create table

````
CREATE TABLE tmp.test1 (`id` String, `products` Nested (`产品` Array(String), `销量` Array(Int32))) ENGINE = ReplacingMergeTree ORDER BY id
````

2.  query

````
SELECT * FROM tmp.test2 array join products;
````

Error：

````
Received exception from server (version 21.3.5):
Code: 208. DB::Exception: Received from localhost:9000. DB::Exception: No columns in nested table products. 
````


**Additional Information**

I've tried using english character as field name, and it works.
{
    return nested_table_name + "." + nested_field_name;
}
/** Name can be treated as compound if and only if both parts are simple identifiers.
  */
std::pair<std::string, std::string> splitName(const std::string & name)
{
    const char * begin = name.data();
    const char * pos = begin;
    const char * end = begin + name.size();
    if (pos >= end || !isValidIdentifierBegin(*pos))
        return {name, {}};
    ++pos;
    while (pos < end && isWordCharASCII(*pos))
        ++pos;
    if (pos >= end || *pos != '.')
        return {name, {}};
    const char * first_end = pos;
    ++pos;
    const char * second_begin = pos;
    if (pos >= end || !isValidIdentifierBegin(*pos))
        return {name, {}};
    ++pos;
    while (pos < end && isWordCharASCII(*pos))
        ++pos;
    if (pos != end)
        return {name, {}};
    return {{ begin, first_end }, { second_begin, end }};
}
std::string extractTableName(const std::string & nested_name)