[v0.10.0-rc1] Binary String Support #2911
Conversation
…rted to StringValue
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
extend AGENTS.md based on CONTIBUTING.md
|
Repository collaborators can run the JMH benchmark suite against this PR by commenting: Optional regression threshold override (Δ% on Time or Alloc/op; defaults to 10%): Only one benchmark run per PR is active at a time — issuing a new |
TriageCategory: Summary What this impacts
Concerns
Required reviewer action
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cbd500f. Configure here.
| featureManager.unsupportedFeatureThrow("getBinaryStream"); | ||
|
|
||
| return null; | ||
| return getBinaryStream(getSchema().nameToColumnIndex(columnLabel)); |
There was a problem hiding this comment.
JDBC Object getObject returns StringValue
Medium Severity
With binary_string_support enabled, getObject returns internal StringValue for String/FixedString columns without proper conversion. This causes issues when callers expect String (for Object.class) or byte[] (for byte[].class), as JdbcUtils.convert lacks StringValue handling. getString, getBytes, and getBinaryStream are unaffected.
Reviewed by Cursor Bugbot for commit cbd500f. Configure here.
| private Object readNestedValue(ClickHouseColumn column) throws IOException { | ||
| return readValue(column, null, false); | ||
| } | ||
|
|
There was a problem hiding this comment.
skipValue still loads string blobs
Medium Severity
skipValue still calls full readValue for every column. With binary_string_support enabled, skipped top-level String/FixedString columns still allocate a StringValue and backing bytes, so readToPOJO with unmapped large string fields can OOM despite the feature’s lazy-read goal.
Reviewed by Cursor Bugbot for commit cbd500f. Configure here.


Summary
There are a few problems with reading binary strings:
This PR introduces
StringValuethat acts asbyte[]holder to createStringad-hoc instead of when read. So strings that suppose to be read viabyte[]will stay asbyte[].This affects also JDBC where
ResultSethasgetBinaryStreamfor such cases. Now it is supported operation.Part of #2263
Checklist
Delete items not relevant to your PR: