| 637 | } |
| 638 | |
| 639 | BlockingReason HashProbe::isBlocked(ContinueFuture* future) { |
| 640 | switch (state_) { |
| 641 | case ProbeOperatorState::kWaitForBuild: |
| 642 | BOLT_CHECK_NULL(table_); |
| 643 | if (!future_.valid()) { |
| 644 | setRunning(); |
| 645 | asyncWaitForHashTable(); |
| 646 | } |
| 647 | break; |
| 648 | case ProbeOperatorState::kRunning: |
| 649 | BOLT_CHECK_NOT_NULL(table_); |
| 650 | if (spillInputReader_ != nullptr) { |
| 651 | addSpillInput(); |
| 652 | } |
| 653 | break; |
| 654 | case ProbeOperatorState::kWaitForPeers: |
| 655 | BOLT_CHECK(hasMoreSpillData()); |
| 656 | if (!future_.valid()) { |
| 657 | setRunning(); |
| 658 | } |
| 659 | break; |
| 660 | case ProbeOperatorState::kFinish: |
| 661 | break; |
| 662 | default: |
| 663 | BOLT_UNREACHABLE(probeOperatorStateName(state_)); |
| 664 | break; |
| 665 | } |
| 666 | |
| 667 | if (future_.valid()) { |
| 668 | BOLT_CHECK(!isRunning()); |
| 669 | *future = std::move(future_); |
| 670 | } |
| 671 | return fromStateToBlockingReason(state_); |
| 672 | } |
| 673 | |
| 674 | void HashProbe::clearDynamicFilters() { |
| 675 | BOLT_CHECK(!hasMoreSpillData()); |
nothing calls this directly
no test coverage detected