| 568 | } |
| 569 | |
| 570 | void NestedLoopJoinProbe::evaluateJoinFilter(const RowVectorPtr& buildVector) { |
| 571 | // First step to process is to get a batch so we can evaluate the join |
| 572 | // filter. |
| 573 | auto filterInput = getNextCrossProductBatch( |
| 574 | buildVector, |
| 575 | filterInputType_, |
| 576 | filterProbeProjections_, |
| 577 | filterBuildProjections_); |
| 578 | |
| 579 | if (filterInputRows_.size() != filterInput->size()) { |
| 580 | filterInputRows_.resizeFill(filterInput->size(), true); |
| 581 | } |
| 582 | BOLT_CHECK(filterInputRows_.isAllSelected()); |
| 583 | |
| 584 | std::vector<VectorPtr> filterResult; |
| 585 | EvalCtx evalCtx( |
| 586 | operatorCtx_->execCtx(), joinCondition_.get(), filterInput.get()); |
| 587 | joinCondition_->eval(0, 1, true, filterInputRows_, evalCtx, filterResult); |
| 588 | filterOutput_ = filterResult[0]; |
| 589 | decodedFilterResult_.decode(*filterOutput_, filterInputRows_); |
| 590 | } |
| 591 | |
| 592 | RowVectorPtr NestedLoopJoinProbe::getNextCrossProductBatch( |
| 593 | const RowVectorPtr& buildVector, |
nothing calls this directly
no test coverage detected