MCPcopy Create free account
hub / github.com/apache/arrow / AppendArraySlice

Method AppendArraySlice

cpp/src/arrow/array/builder_run_end.cc:250–276  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248}
249
250Status 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
278std::shared_ptr<DataType> RunEndEncodedBuilder::type() const { return type_; }
279

Callers 1

Calls 5

FinishCurrentRunMethod · 0.80
OKFunction · 0.50
InvalidFunction · 0.50
EqualsMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected