| 537 | } |
| 538 | |
| 539 | void 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 | |
| 579 | void readMapVector( |
| 580 | ByteInputStream* source, |
nothing calls this directly
no test coverage detected