ClickHouse / ClickHouse/clickhouse-java

Table with transaction column name not parsed

Aperta
#1,477 7 commenti 1 reazione 0 assegnatari Vedi su GitHub
bug jdbc-v1 jdbc-v2 usability
Lingua principale
Java
Stelle
1.6k
Fork
636
Merge medio
2g 23h
PR unite (30g)
29

Descrizione

### Describe the bug
Table with transaction column name not parsed

```
create table test_execute_batch(a Int32, transaction String)engine=Memory
```

### Expected behaviour
It should be parsed and the table should be created.

### Code example
```
Assert.assertFalse(stmt.execute("drop table if exists test_execute_batch; "
+ "create table test_execute_batch(a Int32, transaction String)engine=Memory"), "Should not have result set");
```
### Error log
2023-10-23 10:44:09:447 -0400 [main] WARN ClickHouseSqlParser - Parse error at line 1, column 83. Encountered: transaction. If you believe the SQL is valid, please feel free to open an issue on Github with this warning and the following SQL attached.
drop table if exists test_execute_batch; create table test_execute_batch(a Int32, transaction String)engine=Memory

java.sql.SQLException: Code: 62. DB::Exception: Syntax error (Multi-statements are not allowed): failed at position 40 (end of query): ; create table test_execute_batch(a Int32, transaction String)engine=Memory. . (SYNTAX_ERROR) (version 23.2.4.12 (official build))
, server ClickHouseNode [uri=http://localhost:49238/test_statement]@1568086

### Configuration
#### Environment
* Client version:
* Language version:
* OS:

#### ClickHouse server
* ClickHouse Server version:
* ClickHouse Server non-default settings, if any:
* `CREATE TABLE` statements for tables involved:
* Sample data for all these tables, use [clickhouse-obfuscator](https://github.com/ClickHouse/ClickHouse/blob/master/programs/obfuscator/Obfuscator.cpp#L42-L80) if necessary

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Parti da ClickHouseSqlParser e riproduci l’istruzione CREATE TABLE mostrata usando transaction come nome della colonna. Usa l’esempio Assert.execute fornito come scenario di regressione. Il lavoro è completato quando l’istruzione viene analizzata senza l’avviso e la tabella viene creata correttamente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java, sql
Ambito
backend, databases
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
48/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.