ClickHouse / ClickHouse/clickhouse-java

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

Open
#2,715 4 comments 1 reaction 0 assignees View on GitHub
area:data-type bug
Dominant language
Java
Stars
1.6k
Forks
637
Avg merge
2d 23h
Merged PRs (30d)
29

Description

## 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:

Contributor guide

Open the contributing guide

Research direction

Start with the failing path in com.clickhouse.jdbc.StatementImpl.executeQueryImpl at StatementImpl.java:164 and follow the call from PreparedStatementImpl.java:144. Reproduce the issue with ClickHouseTest.java using SELECT 1 as x FORMAT JSON, then verify that the JDBC query produces the expected JSON result instead of rejecting the output format.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
database
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.