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

Method EvalAndHashProbePrefetchGroup

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

Source from the content-addressed store, hash-verified

349}
350
351void IR_ALWAYS_INLINE PartitionedHashJoinNode::EvalAndHashProbePrefetchGroup(
352 TPrefetchMode::type prefetch_mode, HashTableCtx* ht_ctx) {
353 RowBatch* probe_batch = probe_batch_.get();
354 HashTableCtx::ExprValuesCache* expr_vals_cache = ht_ctx->expr_values_cache();
355 const int prefetch_size = expr_vals_cache->capacity();
356 DCHECK(expr_vals_cache->AtEnd());
357
358 expr_vals_cache->Reset();
359 FOREACH_ROW_LIMIT(probe_batch, probe_batch_pos_, prefetch_size, batch_iter) {
360 TupleRow* row = batch_iter.Get();
361 if (ht_ctx->EvalAndHashProbe(row)) {
362 if (prefetch_mode != TPrefetchMode::NONE) {
363 uint32_t hash = expr_vals_cache->CurExprValuesHash();
364 const uint32_t partition_idx = hash >> (32 - NUM_PARTITIONING_BITS);
365 HashTable* hash_tbl = hash_tbls_[partition_idx];
366 if (LIKELY(hash_tbl != NULL)) hash_tbl->PrefetchBucket<true>(hash);
367 }
368 } else {
369 expr_vals_cache->SetRowNull();
370 }
371 expr_vals_cache->NextRow();
372 }
373 expr_vals_cache->ResetForRead();
374}
375
376// CreateOutputRow, EvalOtherJoinConjuncts, and EvalConjuncts are replaced by codegen.
377template <int const JoinOp>

Callers

nothing calls this directly

Calls 6

expr_values_cacheMethod · 0.80
ResetForReadMethod · 0.80
getMethod · 0.65
capacityMethod · 0.45
AtEndMethod · 0.45
ResetMethod · 0.45

Tested by

no test coverage detected