| 154 | |
| 155 | template<typename offsetsT> |
| 156 | static void scanArrowArrayBLOB(const ArrowArray* array, ValueVector& outputVector, |
| 157 | ArrowNullMaskTree* mask, uint64_t srcOffset, uint64_t dstOffset, uint64_t count) { |
| 158 | auto offsets = ((const offsetsT*)array->buffers[1]) + srcOffset; |
| 159 | auto arrayBuffer = (const uint8_t*)array->buffers[2]; |
| 160 | |
| 161 | mask->copyToValueVector(&outputVector, dstOffset, count); |
| 162 | |
| 163 | rowIter(outputVector, count, [&](auto i) { |
| 164 | if (!mask->isNull(i)) { |
| 165 | auto curOffset = offsets[i], nextOffset = offsets[i + 1]; |
| 166 | const uint8_t* data = arrayBuffer + curOffset; |
| 167 | auto length = nextOffset - curOffset; |
| 168 | BlobVector::addBlob(&outputVector, i + dstOffset, data, length); |
| 169 | } |
| 170 | }); |
| 171 | } |
| 172 | |
| 173 | static void scanArrowArrayBLOBView(const ArrowArray* array, ValueVector& outputVector, |
| 174 | ArrowNullMaskTree* mask, uint64_t srcOffset, uint64_t dstOffset, uint64_t count) { |
nothing calls this directly
no test coverage detected