| 248 | } |
| 249 | |
| 250 | Status RunEndEncodedBuilder::AppendArraySlice(const ArraySpan& array, int64_t offset, |
| 251 | int64_t length) { |
| 252 | ARROW_DCHECK(array.type->Equals(type_)); |
| 253 | |
| 254 | // Ensure any open run is closed before appending the array slice. |
| 255 | RETURN_NOT_OK(value_run_builder_->FinishCurrentRun()); |
| 256 | |
| 257 | if (length == 0) { |
| 258 | return Status::OK(); |
| 259 | } |
| 260 | |
| 261 | switch (type_->run_end_type()->id()) { |
| 262 | case Type::INT16: |
| 263 | RETURN_NOT_OK(DoAppendArraySlice<int16_t>(array, offset, length)); |
| 264 | break; |
| 265 | case Type::INT32: |
| 266 | RETURN_NOT_OK(DoAppendArraySlice<int32_t>(array, offset, length)); |
| 267 | break; |
| 268 | case Type::INT64: |
| 269 | RETURN_NOT_OK(DoAppendArraySlice<int64_t>(array, offset, length)); |
| 270 | break; |
| 271 | default: |
| 272 | return Status::Invalid("Invalid type for run ends array: ", type_->run_end_type()); |
| 273 | } |
| 274 | |
| 275 | return Status::OK(); |
| 276 | } |
| 277 | |
| 278 | std::shared_ptr<DataType> RunEndEncodedBuilder::type() const { return type_; } |
| 279 |
no test coverage detected