| 1863 | } |
| 1864 | |
| 1865 | void serializeArrayVector( |
| 1866 | const BaseVector* vector, |
| 1867 | const folly::Range<const IndexRange*>& ranges, |
| 1868 | VectorStream* stream) { |
| 1869 | auto arrayVector = dynamic_cast<const ArrayVector*>(vector); |
| 1870 | auto rawSizes = arrayVector->rawSizes(); |
| 1871 | auto rawOffsets = arrayVector->rawOffsets(); |
| 1872 | std::vector<IndexRange> childRanges; |
| 1873 | childRanges.reserve(ranges.size()); |
| 1874 | for (int32_t i = 0; i < ranges.size(); ++i) { |
| 1875 | int32_t begin = ranges[i].begin; |
| 1876 | int32_t end = begin + ranges[i].size; |
| 1877 | for (int32_t offset = begin; offset < end; ++offset) { |
| 1878 | if (arrayVector->isNullAt(offset)) { |
| 1879 | stream->appendNull(); |
| 1880 | } else { |
| 1881 | stream->appendNonNull(); |
| 1882 | auto size = rawSizes[offset]; |
| 1883 | stream->appendLength(size); |
| 1884 | if (size > 0) { |
| 1885 | childRanges.emplace_back<IndexRange>({rawOffsets[offset], size}); |
| 1886 | } |
| 1887 | } |
| 1888 | } |
| 1889 | } |
| 1890 | serializeColumn( |
| 1891 | arrayVector->elements().get(), childRanges, stream->childAt(0)); |
| 1892 | } |
| 1893 | |
| 1894 | void serializeMapVector( |
| 1895 | const BaseVector* vector, |
no test coverage detected