Commit 36ba9d5
committed
refactor(clickhouse): drop builder state mutation in bulkInsert(); document Format::serialize() column contract
- bulkInsert() no longer assigns to the fluent insertFormat / insertFormatColumns
fields after the envelope is compiled. The compileFormatInsertEnvelope() helper
is already parameterised, so those assignments were stale state — reusing a
builder instance for a subsequent regular insert() previously inherited the
residual format envelope.
- Format::serialize() PHPDoc now spells out the $columns === null contract:
ordering is derived from the keys of the first row, with no cross-row
consistency check. Positional formats (TabSeparated) corrupt silently on
inconsistent row shapes; named formats (JSONEachRow) tolerate reordering but
the explicit $columns argument acts as a projection filter.
- New tests guard both invariants: builder-reuse after bulkInsert() and the
explicit-columns ordering contract on Format::serialize() across rows whose
keys vary.1 parent ddf9377 commit 36ba9d5
3 files changed
Lines changed: 63 additions & 7 deletions
File tree
- src/Query/Builder
- ClickHouse
- tests/Query/Builder/Feature/ClickHouse
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | 179 | | |
183 | 180 | | |
184 | 181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
23 | | - | |
24 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
25 | 40 | | |
26 | 41 | | |
27 | | - | |
| 42 | + | |
28 | 43 | | |
29 | 44 | | |
30 | 45 | | |
| |||
Lines changed: 44 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
352 | 352 | | |
353 | 353 | | |
354 | 354 | | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
355 | 399 | | |
0 commit comments