| 232 | } |
| 233 | |
| 234 | Status Finish(std::shared_ptr<ChunkedArray>* out) override { |
| 235 | RETURN_NOT_OK(task_group_->Finish()); |
| 236 | |
| 237 | std::shared_ptr<ChunkedArray> value_array; |
| 238 | RETURN_NOT_OK(value_builder_->Finish(&value_array)); |
| 239 | |
| 240 | auto type = list(value_field_->WithType(value_array->type())->WithMetadata(nullptr)); |
| 241 | ArrayVector chunks(null_bitmap_chunks_.size()); |
| 242 | for (size_t i = 0; i < null_bitmap_chunks_.size(); ++i) { |
| 243 | auto value_chunk = value_array->chunk(static_cast<int>(i)); |
| 244 | auto length = offset_chunks_[i]->size() / sizeof(int32_t) - 1; |
| 245 | chunks[i] = std::make_shared<ListArray>(type, length, offset_chunks_[i], |
| 246 | value_chunk, null_bitmap_chunks_[i]); |
| 247 | } |
| 248 | |
| 249 | *out = std::make_shared<ChunkedArray>(std::move(chunks), type); |
| 250 | return Status::OK(); |
| 251 | } |
| 252 | |
| 253 | private: |
| 254 | // call from Insert() only, with mutex_ locked |
no test coverage detected