| 2731 | } |
| 2732 | |
| 2733 | Status StartScanHashTable(int64_t thread_id) { |
| 2734 | if (IsCancelled()) { |
| 2735 | return status(); |
| 2736 | } |
| 2737 | |
| 2738 | bool need_to_scan = |
| 2739 | (join_type_ == JoinType::RIGHT_SEMI || join_type_ == JoinType::RIGHT_ANTI || |
| 2740 | join_type_ == JoinType::RIGHT_OUTER || join_type_ == JoinType::FULL_OUTER); |
| 2741 | |
| 2742 | if (need_to_scan) { |
| 2743 | hash_table_.MergeHasMatch(); |
| 2744 | int64_t num_tasks = bit_util::CeilDiv(hash_table_.num_rows(), kNumRowsPerScanTask); |
| 2745 | |
| 2746 | return CancelIfNotOK(start_task_group_callback_(task_group_scan_, num_tasks)); |
| 2747 | } else { |
| 2748 | return CancelIfNotOK(OnScanHashTableFinished()); |
| 2749 | } |
| 2750 | } |
| 2751 | |
| 2752 | Status ScanTask(size_t thread_id, int64_t task_id) { |
| 2753 | if (IsCancelled()) { |
nothing calls this directly
no test coverage detected