| 355 | |
| 356 | template<typename offsetsT> |
| 357 | static void scanArrowArrayDictionaryEncoded(const ArrowSchema* schema, const ArrowArray* array, |
| 358 | ValueVector& outputVector, ArrowNullMaskTree* mask, uint64_t srcOffset, uint64_t dstOffset, |
| 359 | uint64_t count) { |
| 360 | |
| 361 | auto values = ((const offsetsT*)array->buffers[1]) + srcOffset; |
| 362 | |
| 363 | mask->copyToValueVector(&outputVector, dstOffset, count); |
| 364 | |
| 365 | rowIter(outputVector, count, [&](auto i) { |
| 366 | if (!mask->isNull(i)) { |
| 367 | auto dictOffseted = mask->getDictionary()->offsetBy(values[i]); |
| 368 | ArrowConverter::fromArrowArray(schema->dictionary, array->dictionary, outputVector, |
| 369 | &dictOffseted, values[i] + array->dictionary->offset, i + dstOffset, |
| 370 | 1); // possibly inefficient? |
| 371 | } |
| 372 | }); |
| 373 | } |
| 374 | |
| 375 | static void scanArrowArrayRunEndEncoded(const ArrowSchema* schema, const ArrowArray* array, |
| 376 | ValueVector& outputVector, ArrowNullMaskTree* mask, uint64_t srcOffset, uint64_t dstOffset, |
nothing calls this directly
no test coverage detected