Commit b5dd612
fix(nimble): Keep nulls in dictionary reads without AVX2 (facebookincubator#18621)
Summary:
Reading a Nimble string column that keeps its dictionary encoding dropped every null on any platform where `process::hasAvx2()` is false, which is all of aarch64. A 200-row column holding `always_the_same` with a null every 7th row came back as a `DictionaryVector` carrying no null flags, so row 0 read as `always_the_same` instead of null.
The dense dictionary-index path wrote nulls only into the reader's read-range bitmap. It then relied on `returnReaderNulls_` to hand that bitmap back from `resultNulls()`. `setReturnNullsMode` clears that flag whenever `useBulkPath()` is false, and `process::hasAvx2()` makes that permanent off AVX2. `resultNulls()` then returns the output-indexed buffer instead, which nothing on this path filled. It now copies the read-range nulls into that buffer, the way the sparse row-set path already did.
Reviewed By: vandreykiv
Differential Revision: D1168332801 parent 29357c4 commit b5dd612
3 files changed
Lines changed: 122 additions & 70 deletions
File tree
- velox/dwio/nimble
- encodings
- common
- tests
- velox/selective/tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
527 | 527 | | |
528 | 528 | | |
529 | 529 | | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
530 | 549 | | |
531 | 550 | | |
532 | 551 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4256 | 4256 | | |
4257 | 4257 | | |
4258 | 4258 | | |
4259 | | - | |
| 4259 | + | |
| 4260 | + | |
| 4261 | + | |
| 4262 | + | |
| 4263 | + | |
| 4264 | + | |
4260 | 4265 | | |
4261 | | - | |
| 4266 | + | |
| 4267 | + | |
| 4268 | + | |
4262 | 4269 | | |
4263 | 4270 | | |
4264 | 4271 | | |
| |||
0 commit comments