| 331 | } |
| 332 | |
| 333 | Status RunEndEncodedBuilder::CloseRun(int64_t run_length) { |
| 334 | // TODO(felipecrv): gracefully fragment runs bigger than INT32_MAX |
| 335 | if (ARROW_PREDICT_FALSE(run_length > std::numeric_limits<int32_t>::max())) { |
| 336 | return Status::Invalid( |
| 337 | "Run-length of run-encoded arrays must fit in a 32-bit signed integer."); |
| 338 | } |
| 339 | int64_t run_end; |
| 340 | if (internal::AddWithOverflow(committed_logical_length_, run_length, &run_end)) { |
| 341 | return Status::Invalid("Run end value must fit on run ends type."); |
| 342 | } |
| 343 | RETURN_NOT_OK(AppendRunEnd(/*run_end=*/run_end)); |
| 344 | UpdateDimensions(run_end, 0); |
| 345 | return Status::OK(); |
| 346 | } |
| 347 | |
| 348 | ArrayBuilder& RunEndEncodedBuilder::run_end_builder() { return *children_[0]; } |
| 349 | ArrayBuilder& RunEndEncodedBuilder::value_builder() { return *children_[1]; } |
no test coverage detected