| 1822 | } |
| 1823 | |
| 1824 | void serializeRowVector( |
| 1825 | const BaseVector* vector, |
| 1826 | const folly::Range<const IndexRange*>& ranges, |
| 1827 | VectorStream* stream) { |
| 1828 | if (isTimestampWithTimeZoneType(vector->type())) { |
| 1829 | auto rowVector = dynamic_cast<const RowVector*>(vector); |
| 1830 | serializeTimestampWithTimeZone(rowVector, ranges, stream); |
| 1831 | return; |
| 1832 | } |
| 1833 | |
| 1834 | const std::vector<VectorPtr>* children; |
| 1835 | size_t childrenSize; |
| 1836 | if (vector->encoding() == VectorEncoding::Simple::ROW) { |
| 1837 | auto rowVector = vector->asUnchecked<RowVector>(); |
| 1838 | children = &rowVector->children(); |
| 1839 | childrenSize = rowVector->childrenSize(); |
| 1840 | } else { |
| 1841 | auto variantVector = vector->asUnchecked<VariantVector>(); |
| 1842 | children = &variantVector->children(); |
| 1843 | childrenSize = variantVector->childrenSize(); |
| 1844 | } |
| 1845 | |
| 1846 | std::vector<IndexRange> childRanges; |
| 1847 | for (int32_t i = 0; i < ranges.size(); ++i) { |
| 1848 | auto begin = ranges[i].begin; |
| 1849 | auto end = begin + ranges[i].size; |
| 1850 | for (auto offset = begin; offset < end; ++offset) { |
| 1851 | if (vector->isNullAt(offset)) { |
| 1852 | stream->appendNull(); |
| 1853 | } else { |
| 1854 | stream->appendNonNull(); |
| 1855 | stream->appendLength(1); |
| 1856 | childRanges.push_back(IndexRange{offset, 1}); |
| 1857 | } |
| 1858 | } |
| 1859 | } |
| 1860 | for (int32_t i = 0; i < childrenSize; ++i) { |
| 1861 | serializeColumn((*children)[i].get(), childRanges, stream->childAt(i)); |
| 1862 | } |
| 1863 | } |
| 1864 | |
| 1865 | void serializeArrayVector( |
| 1866 | const BaseVector* vector, |
no test coverage detected