| 527 | class NullPropagator { |
| 528 | public: |
| 529 | NullPropagator(KernelContext* ctx, const ExecSpan& batch, ArrayData* output) |
| 530 | : ctx_(ctx), batch_(batch), output_(output) { |
| 531 | for (const ExecValue& value : batch_.values) { |
| 532 | auto null_generalization = NullGeneralization::Get(value); |
| 533 | if (null_generalization == NullGeneralization::ALL_NULL) { |
| 534 | is_all_null_ = true; |
| 535 | } |
| 536 | if (null_generalization != NullGeneralization::ALL_VALID && value.is_array()) { |
| 537 | arrays_with_nulls_.push_back(&value.array); |
| 538 | } |
| 539 | } |
| 540 | if (output->buffers[0] != nullptr) { |
| 541 | bitmap_preallocated_ = true; |
| 542 | bitmap_ = output_->buffers[0]->mutable_data(); |
| 543 | } |
| 544 | } |
| 545 | |
| 546 | Status EnsureAllocated() { |
| 547 | if (bitmap_preallocated_) { |
nothing calls this directly
no test coverage detected