MCPcopy Create free account
hub / github.com/apache/impala / ProcessProbeRowInnerJoin

Method ProcessProbeRowInnerJoin

be/src/exec/partitioned-hash-join-node-ir.cc:42–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40}
41
42bool IR_ALWAYS_INLINE PartitionedHashJoinNode::ProcessProbeRowInnerJoin(
43 ScalarExprEvaluator* const* other_join_conjunct_evals,
44 int num_other_join_conjuncts, ScalarExprEvaluator* const* conjunct_evals,
45 int num_conjuncts, RowBatch::Iterator* out_batch_iterator, int* remaining_capacity) {
46 DCHECK(current_probe_row_ != NULL);
47 TupleRow* out_row = out_batch_iterator->Get();
48 for (; !hash_tbl_iterator_.AtEnd(); hash_tbl_iterator_.NextDuplicate()) {
49 TupleRow* matched_build_row = hash_tbl_iterator_.GetRow();
50 DCHECK(matched_build_row != NULL);
51
52 ClearExprResultsPool(num_conjuncts, num_other_join_conjuncts);
53
54 // Create an output row with all probe/build tuples and evaluate the
55 // non-equi-join conjuncts.
56 CreateOutputRow(out_row, current_probe_row_, matched_build_row);
57 if (!EvalOtherJoinConjuncts(other_join_conjunct_evals, num_other_join_conjuncts,
58 out_row)) {
59 continue;
60 }
61 if (ExecNode::EvalConjuncts(conjunct_evals, num_conjuncts, out_row)) {
62 --(*remaining_capacity);
63 if (*remaining_capacity == 0) {
64 hash_tbl_iterator_.NextDuplicate();
65 return false;
66 }
67 out_row = out_batch_iterator->Next();
68 }
69 }
70 return true;
71}
72
73template<int const JoinOp>
74bool IR_ALWAYS_INLINE PartitionedHashJoinNode::ProcessProbeRowRightSemiJoins(

Callers

nothing calls this directly

Calls 5

NextDuplicateMethod · 0.80
GetMethod · 0.45
AtEndMethod · 0.45
GetRowMethod · 0.45
NextMethod · 0.45

Tested by

no test coverage detected