(
src_nulls: Option<&NullBuffer>,
mask: &BooleanBuffer,
output_len: usize,
selectivity: f64,
)
| 203 | } |
| 204 | |
| 205 | fn scatter_null_mask( |
| 206 | src_nulls: Option<&NullBuffer>, |
| 207 | mask: &BooleanBuffer, |
| 208 | output_len: usize, |
| 209 | selectivity: f64, |
| 210 | ) -> Option<NullBuffer> { |
| 211 | let false_count = output_len - mask.count_set_bits(); |
| 212 | let src_null_count = src_nulls.map(|n| n.null_count()).unwrap_or(0); |
| 213 | |
| 214 | if src_null_count == 0 { |
| 215 | if false_count == 0 { |
| 216 | None |
| 217 | } else { |
| 218 | Some(NullBuffer::new(mask.clone())) |
| 219 | } |
| 220 | } else { |
| 221 | let src_nulls = src_nulls.unwrap(); |
| 222 | let scattered = scatter_bits(src_nulls.inner(), mask, output_len, selectivity); |
| 223 | Some(NullBuffer::new(scattered)).filter(|n| n.null_count() > 0) |
| 224 | } |
| 225 | } |
| 226 | |
| 227 | fn scatter_primitive<T: ArrowPrimitiveType>( |
| 228 | truthy: &PrimitiveArray<T>, |
no test coverage detected
searching dependent graphs…