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

Method fillFilterInput

bolt/exec/HashProbe.cpp:1272–1310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1270}
1271
1272RowVectorPtr HashProbe::fillFilterInput(vector_size_t size) {
1273 std::vector<VectorPtr> filterColumns(filterInputType_->size());
1274 for (auto projection : filterInputProjections_) {
1275 if (std::any_of(
1276 projectedInputColumns_.begin(),
1277 projectedInputColumns_.end(),
1278 [&](const auto& p) {
1279 return p.inputChannel == projection.inputChannel;
1280 })) {
1281 // If the column is projected to the output, ensure it's loaded if it's
1282 // lazy in case the filter only loads an incomplete subset of the rows
1283 // that will be output.
1284 ensureLoaded(projection.inputChannel);
1285 } else {
1286 // If the column isn't projected to the output, the Vector will only be
1287 // reused if we've broken the input batch into multiple output batches,
1288 // i.e. if results_ is not at the end of the iterator.
1289 ensureLoadedIfNotAtEnd(projection.inputChannel);
1290 }
1291 }
1292
1293 wrapIndirectChildren(
1294 filterInputProjections_,
1295 input_->children(),
1296 size,
1297 outputRowMapping_,
1298 filterColumns);
1299
1300 extractColumns(
1301 table_.get(),
1302 folly::Range<char**>(outputTableRows_.data(), size),
1303 filterTableProjections_,
1304 pool(),
1305 filterInputType_->children(),
1306 filterColumns);
1307
1308 return std::make_shared<RowVector>(
1309 pool(), filterInputType_, nullptr, size, std::move(filterColumns));
1310}
1311
1312void HashProbe::prepareFilterRowsForNullAwareJoin(
1313 const RowVector* filterInput,

Callers

nothing calls this directly

Calls 9

wrapIndirectChildrenFunction · 0.85
extractColumnsFunction · 0.85
poolFunction · 0.50
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
childrenMethod · 0.45
getMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected