| 1591 | } |
| 1592 | |
| 1593 | Status Sorter::ExecuteIntermediateMerge(Sorter::Run* merged_run) { |
| 1594 | RowBatch intermediate_merge_batch( |
| 1595 | output_row_desc_, state_->batch_size(), mem_tracker_); |
| 1596 | bool eos = false; |
| 1597 | while (!eos) { |
| 1598 | // Copy rows into the new run until done. |
| 1599 | int num_copied; |
| 1600 | RETURN_IF_CANCELLED(state_); |
| 1601 | // Clear any temporary allocations made by the merger. |
| 1602 | expr_results_pool_.Clear(); |
| 1603 | RETURN_IF_ERROR(merger_->GetNext(&intermediate_merge_batch, &eos)); |
| 1604 | RETURN_IF_ERROR( |
| 1605 | merged_run->AddIntermediateBatch(&intermediate_merge_batch, 0, &num_copied)); |
| 1606 | |
| 1607 | DCHECK_EQ(num_copied, intermediate_merge_batch.num_rows()); |
| 1608 | intermediate_merge_batch.Reset(); |
| 1609 | } |
| 1610 | |
| 1611 | RETURN_IF_ERROR(merged_run->FinalizeInput()); |
| 1612 | return Status::OK(); |
| 1613 | } |
| 1614 | |
| 1615 | bool Sorter::HasSpilledRuns() const { |
| 1616 | // All runs in 'merging_runs_' are spilled. 'sorted_runs_' can contain at most one |
nothing calls this directly
no test coverage detected