**Describe the bug**
I am working with parameterized queries and they work fine for me so far for updates and selects.
The behaviour does though seem to break, when `DESCRIBE` is involved.

**Does it reproduce on recent release?**
Version used: 21.4.6.55 (server) -- yes

 
**How to reproduce**
* Which ClickHouse server version to use
  * Version used: 21.4.6.55 (server)
* Which interface to use, if matters
  * CLI and HTTP
* Non-default settings, if any
  * no

When using the CLI on a simple `SELECT` example, the parameter work fine:

```sh
$ clickhouse client --param_p0="2" -q "SELECT {p0:String}"
2
```

When using it in a `DESCRIBE` part it does break though:

```sh
$ clickhouse client --param_p0="2" -q "DESCRIBE TABLE (SELECT {p0:String})"
Received exception from server (version 21.4.6):
Code: 456. DB::Exception: Received from localhost:9000. DB::Exception: Query parameter `p0` was not set.
```

**Expected behavior**
It would be expected to return to correct types like:

```sh
$ clickhouse client -q "DESCRIBE TABLE (SELECT '2')"
\'2\'   String
```

**Error message and/or stacktrace**

As written above the following message appears:

```
Received exception from server (version 21.4.6):
Code: 456. DB::Exception: Received from localhost:9000. DB::Exception: Query parameter `p0` was not set.
```

**Additional context**
Possibly related to #10976

{
    const auto & ast_param = ast->as<ASTQueryParameter &>();
    const String & value = getParamValue(ast_param.name);
    const String & type_name = ast_param.type;
    String alias = ast_param.alias;
    const auto data_type = DataTypeFactory::instance().get(type_name);
    auto temp_column_ptr = data_type->createColumn();
    IColumn & temp_column = *temp_column_ptr;
    ReadBufferFromString read_buffer{value};
    FormatSettings format_settings;
    data_type->getDefaultSerialization()->deserializeTextEscaped(temp_column, read_buffer, format_settings);
    if (!read_buffer.eof())
        throw Exception(ErrorCodes::BAD_QUERY_PARAMETER,
            "Value {} cannot be parsed as {} for query parameter '{}'"
            " because it isn't parsed completely: only {} of {} bytes was parsed: {}",
            value, type_name, ast_param.name, read_buffer.count(), value.size(), value.substr(0, read_buffer.count()));
    Field literal;
    
    
    if (data_type->getCustomSerialization())
        literal = value;
    else
        literal = temp_column[0];
    ast = addTypeConversionToAST(std::make_shared<ASTLiteral>(literal), type_name);
    
    ast->setAlias(alias);
}
void ReplaceQueryParameterVisitor::visitIdentifier(ASTPtr & ast)