ClickHouse / ClickHouse/clickhouse-java

Query parameters can not be parsed in `DESCRIBE TABLE` query with client-v2

Abierto
#2,400 4 comentarios 0 reacciones 0 asignados Ver en GitHub
area:general bug client-api-v2
Lenguaje dominante
Java
Estrellas
1.6k
Forks
636
Merge medio
2 d 23 h
PR fusionados (30 d)
29

Descripción

## Description

Bug with `Client#query(sql, params)` for a `DESCRIBE TABLE` query.

### Steps to reproduce

See the unit test below.
The parameter name is not substituted.

### Error Log or Exception StackTrace

```
com.clickhouse.client.api.ServerException: Code: 62. DB::Exception: Syntax error: failed at position 33 (}): }. Expected substitution type (identifier). (SYNTAX_ERROR)
```

### Expected Behaviour

### Code Example

```java
@Test
void testWeirdBugWithParams() throws Exception {
final Client client = new Client.Builder()
.addEndpoint(Protocol.HTTP, "localhost", 8123, false)
.setUsername("default")
.setPassword("")
.build();
final Map params = Map.of("table_name", "`system`.`tables`");
// This query should not throw an exception
client.query("DESCRIBE TABLE {table_name:String}", params).get();
}

```

### Configuration

#### Client Configuration

See above.
#### Environment
* [ ] Cloud
* Client version: 0.8.6
* Language version: Java 17
* OS: Linux

#### ClickHouse Server
* ClickHouse Server version: 25.3.3.42 (official build)

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Start with Client#query(sql, params) and reproduce the issue using the provided test case and DESCRIBE TABLE query. Trace how the table_name parameter is parsed and substituted; done means the query completes without the syntax error and the regression test passes.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
api, databases
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
58/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.