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

Method arrayVector

bolt/vector/tests/utils/VectorMaker.cpp:219–254  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

217}
218
219ArrayVectorPtr VectorMaker::arrayVector(
220 const std::vector<vector_size_t>& offsets,
221 const VectorPtr& elements,
222 const std::vector<vector_size_t>& nulls) {
223 const auto size = offsets.size();
224 BufferPtr offsetsBuffer = allocateOffsets(size, pool_);
225 BufferPtr sizesBuffer = allocateSizes(size, pool_);
226 BufferPtr nullsBuffer = nullptr;
227 auto rawOffsets = offsetsBuffer->asMutable<vector_size_t>();
228 auto rawSizes = sizesBuffer->asMutable<vector_size_t>();
229
230 for (int i = 0; i < size - 1; i++) {
231 rawSizes[i] = offsets[i + 1] - offsets[i];
232 }
233 rawSizes[size - 1] = elements->size() - offsets.back();
234
235 memcpy(rawOffsets, offsets.data(), size * sizeof(vector_size_t));
236
237 if (!nulls.empty()) {
238 nullsBuffer = AlignedBuffer::allocate<bool>(size, pool_, bits::kNotNull);
239 auto rawNulls = nullsBuffer->asMutable<uint64_t>();
240
241 for (int i = 0; i < nulls.size(); i++) {
242 bits::setNull(rawNulls, nulls[i]);
243 }
244 }
245
246 return std::make_shared<ArrayVector>(
247 pool_,
248 ARRAY(elements->type()),
249 nullsBuffer,
250 size,
251 offsetsBuffer,
252 sizesBuffer,
253 elements);
254}
255
256MapVectorPtr VectorMaker::mapVector(
257 const std::vector<vector_size_t>& offsets,

Callers 6

TEST_FFunction · 0.45
makeArrayVectorMethod · 0.45
BENCHMARK_MULTIFunction · 0.45
TEST_FFunction · 0.45
createInputMethod · 0.45
createResultsMethod · 0.45

Calls 10

allocateOffsetsFunction · 0.85
allocateSizesFunction · 0.85
memcpyFunction · 0.85
ARRAYFunction · 0.85
backMethod · 0.80
setNullFunction · 0.50
sizeMethod · 0.45
dataMethod · 0.45
emptyMethod · 0.45
typeMethod · 0.45

Tested by

no test coverage detected