ClickHouse / ClickHouse/clickhouse-java

[jdbc-v2] [output format] SQL Error [HY000]: Only RowBinaryWithNameAndTypes is supported for output format. Please check your query.

オープン
#2,715 コメント 4 件 リアクション 1 件 担当者 0 名 GitHub で見る
area:data-type bug
主要言語
Java
スター
1.6k
フォーク
636
平均マージ
2日 23時間
マージ済み PR(30日)
29

説明

## Description
Migrating from clickhouse jdbc driver 0.6.5 to clickhouse jdbc v2 driver 0.9.6, some queries stopped working.

### Steps to reproduce
1. `SELECT 1 as x FORMAT JSON`
### Error Log or Exception StackTrace

```
Exception in thread "main" java.sql.SQLException: Only RowBinaryWithNameAndTypes is supported for output format. Please check your query.
at com.clickhouse.jdbc.StatementImpl.executeQueryImpl(StatementImpl.java:164)
at com.clickhouse.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:144)
at ClickHouseTest.main(ClickHouseTest.java:18)
```

Clickhouse server does not produce any error, and 'clickhouse client' executes the above query without issues, therefore, I assume, there is some issue at the jdbc client side.

### Expected output
```
{
"meta":
[
{
"name": "x",
"type": "UInt8"
}
],

"data":
[
{
"x": 1
}
],

"rows": 1,

"statistics":
{
"elapsed": 0.001607,
"rows_read": 1,
"bytes_read": 1
}
}
```

### Sample code
implementation "com.clickhouse:clickhouse-jdbc-all:0.9.6"

```
import javax.sql.DataSource;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class ClickHouseTest {

public static void main(String[] args) throws Exception {
Properties properties = new Properties();
properties.setProperty("user", "default");
properties.setProperty("password", "");

DataSource dataSource = new com.clickhouse.jdbc.DataSourceImpl("jdbc:clickhouse://127.0.0.1:8123", properties);
Connection connection = dataSource.getConnection();
PreparedStatement stmt = connection.prepareStatement("SELECT 1 as x FORMAT JSON");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
String json = rs.getString(1);
System.out.println(json);
}
stmt.close();
connection.close();
}
}

```

#### Environment
* [ ] Cloud
* Client version: 0.9.6
* Language version: 21
* OS:

#### ClickHouse Server
* ClickHouse Server version: 26.1.1.399
* ClickHouse Server non-default settings, if any:

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

StatementImpl.java:164 の com.clickhouse.jdbc.StatementImpl.executeQueryImpl にある失敗するパスから始め、PreparedStatementImpl.java:144 からの呼び出しを追跡します。SELECT 1 as x FORMAT JSON を使用して ClickHouseTest.java で問題を再現し、その後、出力形式を拒否するのではなく、JDBC クエリが期待される JSON 結果を生成することを確認します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
database
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
58/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。