[client-v2] NativeFormatReader fails for non-null values of Nullable(String)

Aperta
#3,137 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
74/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
java
Ambito
databases

Direzione di ricerca

Start at the NativeFormatReader entry point and reproduce the issue with the provided Nullable(String) queries using client-v2 0.10.0 and ClickHouseFormat.Native. Trace the failing non-null read, then verify that non-null Nullable(String) values are read successfully without EOFException while the NULL query continues to work.

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

Descrizione

bug

I am using client-v2 0.10.0 with ClickHouseFormat.Native.

Given a table:

CREATE TABLE test_table
(
    id String,
    optionalValue Nullable(String)
)
ENGINE = MergeTree
ORDER BY id;

Working query

This works:

SELECT optionalValue
FROM test_table
WHERE optionalValue IS NULL;

Failing query

This fails:

SELECT optionalValue
FROM test_table
WHERE optionalValue IS NOT NULL;

with:

ClientException: Failed to read block
Caused by: EOFException: End of stream reached before reading all data
    at NativeFormatReader.readBlock(...)

Workaround

Casting the column to String works:

SELECT CAST(optionalValue AS String) AS optionalValue
FROM test_table;

Java code

QuerySettings settings =
        new QuerySettings().setFormat(ClickHouseFormat.Native);

try (QueryResponse response =
             client.query(sqlQuery, settings).get()) {

    NativeFormatReader reader =
            (NativeFormatReader) client.newBinaryFormatReader(response);
}

Environment

  • client-v2: 0.10.0
  • ClickHouse server: 25.9.3.48
  • Java: 21
Lingua principale
Java
Stelle
1.6k
Fork
637
Merge medio
2g 12h
PR unite (30g)
28

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ClickHouse/clickhouse-java

Tutte le issue di ClickHouse/clickhouse-java

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.