| 77 | using NonNestedChunkedArrayBuilder::NonNestedChunkedArrayBuilder; |
| 78 | |
| 79 | void Insert(int64_t block_index, const std::shared_ptr<Field>&, |
| 80 | const std::shared_ptr<Array>& unconverted) override { |
| 81 | std::unique_lock<std::mutex> lock(mutex_); |
| 82 | if (chunks_.size() <= static_cast<size_t>(block_index)) { |
| 83 | chunks_.resize(static_cast<size_t>(block_index) + 1, nullptr); |
| 84 | } |
| 85 | lock.unlock(); |
| 86 | |
| 87 | auto self = shared_from_this(); |
| 88 | |
| 89 | task_group_->Append([self, block_index, unconverted] { |
| 90 | std::shared_ptr<Array> converted; |
| 91 | RETURN_NOT_OK(self->converter_->Convert(unconverted, &converted)); |
| 92 | std::unique_lock<std::mutex> lock(self->mutex_); |
| 93 | self->chunks_[block_index] = std::move(converted); |
| 94 | return Status::OK(); |
| 95 | }); |
| 96 | } |
| 97 | }; |
| 98 | |
| 99 | class InferringChunkedArrayBuilder |