| 368 | } |
| 369 | |
| 370 | Status PartitionedHashJoinNode::NextProbeRowBatch( |
| 371 | RuntimeState* state, RowBatch* out_batch, bool* eos) { |
| 372 | DCHECK_ENUM_EQ(probe_state_, ProbeState::PROBING_END_BATCH); |
| 373 | DCHECK(probe_batch_pos_ == probe_batch_->num_rows() || probe_batch_pos_ == -1); |
| 374 | if (builder_->state() == HashJoinState::PARTITIONING_PROBE) { |
| 375 | DCHECK(input_partition_ == nullptr); |
| 376 | RETURN_IF_ERROR(NextProbeRowBatchFromChild(state, out_batch, eos)); |
| 377 | } else { |
| 378 | DCHECK(builder_->state() == HashJoinState::REPARTITIONING_PROBE |
| 379 | || builder_->state() == HashJoinState::PROBING_SPILLED_PARTITION) |
| 380 | << builder_->DebugString(); |
| 381 | DCHECK(probe_side_eos_); |
| 382 | DCHECK(input_partition_ != nullptr); |
| 383 | RETURN_IF_ERROR(NextSpilledProbeRowBatch(state, out_batch, eos)); |
| 384 | } |
| 385 | // Free expr result allocations of the probe side expressions only after |
| 386 | // ExprValuesCache has been reset. |
| 387 | DCHECK(ht_ctx_->expr_values_cache()->AtEnd()); |
| 388 | probe_expr_results_pool_->Clear(); |
| 389 | return Status::OK(); |
| 390 | } |
| 391 | |
| 392 | Status PartitionedHashJoinNode::NextProbeRowBatchFromChild( |
| 393 | RuntimeState* state, RowBatch* out_batch, bool* eos) { |
nothing calls this directly
no test coverage detected