| 715 | } |
| 716 | |
| 717 | Status GroupingAggregator::CheckAndResizeHashPartitions( |
| 718 | bool partitioning_aggregated_rows, int num_rows, HashTableCtx* ht_ctx) { |
| 719 | DCHECK(!is_streaming_preagg_); |
| 720 | for (int i = 0; i < PARTITION_FANOUT; ++i) { |
| 721 | Partition* partition = hash_partitions_[i]; |
| 722 | if (partition == nullptr) continue; |
| 723 | while (!partition->is_spilled()) { |
| 724 | { |
| 725 | SCOPED_TIMER(ht_resize_timer_); |
| 726 | bool resized; |
| 727 | RETURN_IF_ERROR(partition->hash_tbl->CheckAndResize(num_rows, ht_ctx, &resized)); |
| 728 | if (resized) break; |
| 729 | } |
| 730 | RETURN_IF_ERROR(SpillPartition(partitioning_aggregated_rows)); |
| 731 | } |
| 732 | } |
| 733 | return Status::OK(); |
| 734 | } |
| 735 | |
| 736 | Status GroupingAggregator::NextPartition() { |
| 737 | DCHECK(output_partition_ == nullptr); |
nothing calls this directly
no test coverage detected