ClickHouse / ClickHouse/clickhouse-java

[client-v2] getTableSchema and insert concatenate the raw table name into SQL — names needing backquotes cannot be used

Abierto
#3,089 3 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
1.6k
Forks
636
Merge medio
2 d 23 h
PR fusionados (30 d)
29

Descripción

### Describe the bug

`Client.getTableSchema(table, database)` and `Client.insert(tableName, ...)` paste the table name into SQL as-is:

```java
"DESCRIBE TABLE " + table // Client.java:2010 (0.10.0)
"INSERT INTO " + tableName // Client.java:1592 (0.10.0)
```

So a valid table name that needs backquotes, like `my-table`, fails with a server syntax error even though the table exists.

### Steps to reproduce

```java
client.queryAll("CREATE TABLE `my-table` (id Int64) ENGINE = MergeTree ORDER BY id");
client.getTableSchema("my-table", "default"); // server syntax error
client.insert("my-table", data, settings); // same
```

### Expected behaviour

The parameter is documented as a table name, so the client should quote it when building the SQL:

```sql
DESCRIBE TABLE `my-table`
INSERT INTO `my-table`
```

Back-compat: pre-quoted names (`` `my-table` `` passed by the caller) work today as a workaround, so already-quoted input should be detected and passed through unchanged (like JDBC's `Statement.enquoteIdentifier`).

### Configuration

- client-v2 0.9.5 and 0.10.0 (latest) are both affected.

### Additional context

[flink-connector-clickhouse](https://github.com/ClickHouse/flink-connector-clickhouse) uses both methods and currently has to reject table names that need quoting; once this is fixed the connector can lift that restriction (a canary test watches for it).

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Start in Client.java at getTableSchema around line 2010 and insert around line 1592, then trace how their SQL is assembled. Reproduce the issue with the provided my-table example and verify that ordinary names are quoted, pre-quoted names remain unchanged, and both operations succeed for names requiring backquotes.

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

Evaluación

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.