MCPcopy Create free account
hub / github.com/bytedance/bolt / readArrayVector

Function readArrayVector

bolt/serializers/PrestoSerializer.cpp:539–577  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

537}
538
539void readArrayVector(
540 ByteInputStream* source,
541 const TypePtr& type,
542 bolt::memory::MemoryPool* pool,
543 VectorPtr& result,
544 vector_size_t resultOffset,
545 bool useLosslessTimestamp) {
546 ArrayVector* arrayVector = result->as<ArrayVector>();
547
548 const auto resultElementsOffset = arrayVector->elements()->size();
549
550 std::vector<TypePtr> childTypes = {type->childAt(0)};
551 std::vector<VectorPtr> children{arrayVector->elements()};
552 readColumns(
553 source,
554 pool,
555 childTypes,
556 children,
557 resultElementsOffset,
558 useLosslessTimestamp);
559
560 vector_size_t size = source->read<int32_t>();
561 arrayVector->resize(resultOffset + size);
562 arrayVector->setElements(children[0]);
563
564 BufferPtr offsets = arrayVector->mutableOffsets(resultOffset + size);
565 auto rawOffsets = offsets->asMutable<vector_size_t>();
566 BufferPtr sizes = arrayVector->mutableSizes(resultOffset + size);
567 auto rawSizes = sizes->asMutable<vector_size_t>();
568 int32_t base = source->read<int32_t>();
569 for (int32_t i = 0; i < size; ++i) {
570 int32_t offset = source->read<int32_t>();
571 rawOffsets[resultOffset + i] = resultElementsOffset + base;
572 rawSizes[resultOffset + i] = offset - base;
573 base = offset;
574 }
575
576 readNulls(source, size, *arrayVector, resultOffset);
577}
578
579void readMapVector(
580 ByteInputStream* source,

Callers

nothing calls this directly

Calls 8

childAtMethod · 0.80
setElementsMethod · 0.80
mutableOffsetsMethod · 0.80
mutableSizesMethod · 0.80
readColumnsFunction · 0.70
readNullsFunction · 0.70
sizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected