Commit f1ee06f
authored
Restore arrow-UDF null filtering for rows where some columns are null (#454)
The previous code marked null rows invalid on result before calling
`VectorOperations::Copy`, but that `Copy` unconditionally overwrites the
target validity from the source, wiping the markings, so every "nulls in
some columns" row got the next non-null UDF output instead of NULL.
Defer the null marking until after the Copy, walking selvec once to call
`SetNull(result, i, true)` only on the rows that were filtered out. This
also handles struct/array child propagation correctly via SetNull's
existing recursion.
Also: fix the misleading inverted-selvec comment to match the actual
behavior.1 file changed
Lines changed: 15 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
203 | 203 | | |
204 | 204 | | |
205 | 205 | | |
206 | | - | |
207 | 206 | | |
208 | 207 | | |
209 | 208 | | |
| |||
261 | 260 | | |
262 | 261 | | |
263 | 262 | | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
268 | 269 | | |
269 | 270 | | |
270 | | - | |
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
274 | 274 | | |
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
278 | 282 | | |
279 | | - | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
280 | 288 | | |
281 | 289 | | |
282 | 290 | | |
| |||
0 commit comments