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

Function serializeRowVector

bolt/serializers/PrestoSerializer.cpp:1824–1863  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1822}
1823
1824void 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
1865void serializeArrayVector(
1866 const BaseVector* vector,

Callers 1

serializeColumnFunction · 0.85

Calls 15

serializeColumnFunction · 0.85
nwordsFunction · 0.85
gatherBitsFunction · 0.85
indicesOfSetBitsFunction · 0.85
transposeFunction · 0.85
appendLengthMethod · 0.80
childAtMethod · 0.80
rawNullsMethod · 0.80
appendLengthsMethod · 0.80
typeMethod · 0.45

Tested by

no test coverage detected