client-v2 0.10.0: getTableSchema fails on ClickHouse 26.8 with "Failed to parse column `null` defined by type 'null'" (works on 26.7)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
Research direction
Reproduce the failure against ClickHouse 26.7 and 26.8 using Client.getTableSchema and the two-column example. Read Client.getTableSchemaImpl and internal/TableSchemaParser.java, then inspect the client request and response reaching readTSKV; done means both schema methods return the table's columns on 26.8 without the null-column error.
Written by the indexing model from the issue text.
Description
Describe the bug
Client.getTableSchema(...) and Client.getTableSchemaFromQuery(...) fail against ClickHouse 26.8 with Failed to parse column \null` defined by type 'null'`. The same code against 26.7 works. It reproduces on a two-column table, so it is not schema-specific.
The server appears to be fine: a raw DESCRIBE TABLE issued through the same client on the same connection returns every row correctly, and the server's DESCRIBE ... FORMAT TSKV bytes are identical between 26.7 and 26.8.
Steps to reproduce
try (Client client = new Client.Builder()
.addEndpoint(endpoint)
.setUsername("u").setPassword("p").setDefaultDatabase("d")
.compressClientRequest(false).compressServerResponse(true)
.build()) {
client.execute("CREATE TABLE tiny (a UInt8, b String) ENGINE=MergeTree ORDER BY a").get();
client.getTableSchema("tiny"); // OK on 26.7, throws on 26.8
}
Result:
26.7 tiny OK, columns=2
26.8 tiny FAILED ClientException: Failed to get table schema
root IllegalArgumentException: Non-null columnName and columnType are required
Expected behaviour
getTableSchema returns the table's columns, as it does on 26.7.
Error log
com.clickhouse.client.api.ClientException: Failed to get table schema
at com.clickhouse.client.api.Client.getTableSchemaImpl(Client.java:2044)
at com.clickhouse.client.api.Client.getTableSchema(Client.java:2011)
Caused by: com.clickhouse.client.api.ClientException: Failed to parse column `null` defined by type 'null'
at com.clickhouse.client.api.internal.TableSchemaParser.readTSKV(TableSchemaParser.java:33)
at com.clickhouse.client.api.Client.getTableSchemaImpl(Client.java:2036)
Caused by: java.lang.IllegalArgumentException: Non-null columnName and columnType are required
at com.clickhouse.data.ClickHouseColumn.of(ClickHouseColumn.java:676)
Configuration
- client-v2: 0.10.0
- Server:
clickhouse/clickhouse-server:26.8(fails) vs:26.7(works), official images, default configuration apart fromCLICKHOUSE_DB/USER/PASSWORD - JDK: 25
- OS: Linux container / macOS host
What I ruled out
Each of these was compared 26.7 against 26.8 directly:
- The
DESCRIBEresponse format.DESCRIBE TABLE t FORMAT TSKVover HTTP is byte-identical on both versions, on a trivial table and on a 56-column one withEnum8,Nullable,IPv6,LowCardinalityandDateTime64. Every line carries a well-formedname=…\ttype=…. - Response compression. The LZ4 bodies are identical byte-for-byte, and the failure also occurs with
compressServerResponse(false). describe_include_subcolumns. Identical output on both.default_formatoverriding the inlineFORMATclause. Sendingdefault_format=RowBinaryWithNamesAndTypesalongside... FORMAT TSKVstill returns TSKV on both versions.- Whether the server or connection is unhealthy. A raw
DESCRIBE TABLE tthrough the same client, on the same connection, immediately before the failing call, returns all rows with correct names and types.
Given readTSKV parses each line with java.util.Properties and requires name and type keys, it looks like the response reaching the parser on 26.8 is not the TSKV the server produces for an equivalent request — but I was not able to identify what the client sends differently, and I did not capture the client's own request/response bytes.
I am happy to run further probes against either version if that would help narrow it.
- Dominant language
- Java
- Stars
- 1.6k
- Forks
- 637
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 28
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ClickHouse/clickhouse-java
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
ClickHouse/clickhouse-java#3143 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
ClickHouse/clickhouse-java#3111 ·
-
area:data-type bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ClickHouse/clickhouse-java#3098 · 1 comment ·
-
bug client-api-v2 test
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
ClickHouse/clickhouse-java#3076 ·
-
area:sql-parser bug client-v1
Difficulty 1/5 1-3 hours Newbie friendliness 92/100
ClickHouse/clickhouse-java#3066 ·
All issues in ClickHouse/clickhouse-java
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
infinispan/infinispan#18150 ·
-
area/frontend
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100