MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / scanArrowArrayBLOBView

Function scanArrowArrayBLOBView

src/common/arrow/arrow_array_scan.cpp:173–197  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

171}
172
173static void scanArrowArrayBLOBView(const ArrowArray* array, ValueVector& outputVector,
174 ArrowNullMaskTree* mask, uint64_t srcOffset, uint64_t dstOffset, uint64_t count) {
175 auto arrayBuffer = (const uint8_t*)(array->buffers[1]);
176 auto valueBuffs = (const uint8_t**)(array->buffers + 2);
177 // BLOB value buffers begin from index 2 onwards
178
179 mask->copyToValueVector(&outputVector, dstOffset, count);
180
181 rowIter(outputVector, count, [&](auto i) {
182 if (!mask->isNull(i)) {
183 auto curView = (const int32_t*)(arrayBuffer + (i + srcOffset) * 16);
184 // view structures are 16 bytes long
185 auto viewLength = curView[0];
186 if (viewLength <= 12) {
187 BlobVector::addBlob(&outputVector, i + dstOffset, (uint8_t*)(curView + 1),
188 viewLength);
189 } else {
190 auto bufIndex = curView[2];
191 auto offset = curView[3];
192 BlobVector::addBlob(&outputVector, i + dstOffset, valueBuffs[bufIndex] + offset,
193 viewLength);
194 }
195 }
196 });
197}
198
199static void scanArrowArrayFixedBLOB(const ArrowArray* array, ValueVector& outputVector,
200 ArrowNullMaskTree* mask, int64_t BLOBsize, uint64_t srcOffset, uint64_t dstOffset,

Callers 1

fromArrowArrayMethod · 0.85

Calls 4

rowIterFunction · 0.85
addBlobFunction · 0.85
copyToValueVectorMethod · 0.80
isNullMethod · 0.45

Tested by

no test coverage detected