Commit 0e1a6bb
committed
feat(client-v2): validate QBit vector dimension on write
QBit(element_type, dimension) is a fixed-size vector: the server requires
exactly `dimension` elements and rejects any other length over RowBinary with
a late SERIALIZATION_ERROR (verified against server 26.5). The write path
reused serializeArrayData, which wrote the actual array/list length without
checking it, so a wrong-sized (including empty) vector was serialized like a
normal Array and only failed on the server after a round-trip.
Split the QBit case out of the Array fall-through into serializeQBitData, which
validates the element count against column.getPrecision() (the dimension) and
throws a clear IllegalArgumentException naming the column, expected dimension,
and actual length before delegating to serializeArrayData. This mirrors the
client-side length enforcement already applied to the other fixed-size type,
FixedString(N). A correctly-sized QBit is still byte-for-byte identical to
Array(element_type).
Addresses Cursor Bugbot review on PR #2939.1 parent 0328db3 commit 0e1a6bb
3 files changed
Lines changed: 70 additions & 2 deletions
File tree
- client-v2/src
- main/java/com/clickhouse/client/api/data_formats/internal
- test/java/com/clickhouse/client/api/data_formats/internal
- docs
Lines changed: 28 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | | - | |
| 67 | + | |
| 68 | + | |
68 | 69 | | |
69 | 70 | | |
70 | 71 | | |
| |||
472 | 473 | | |
473 | 474 | | |
474 | 475 | | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
475 | 502 | | |
476 | 503 | | |
477 | 504 | | |
| |||
Lines changed: 41 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
146 | 187 | | |
147 | 188 | | |
148 | 189 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| |||
0 commit comments