| 704 | } |
| 705 | |
| 706 | void MergeHasMatch() { |
| 707 | if (hash_table_empty_) { |
| 708 | return; |
| 709 | } |
| 710 | |
| 711 | int32_t num_rows = hash_table_keys_.num_rows(); |
| 712 | has_match_.resize(bit_util::BytesForBits(num_rows)); |
| 713 | memset(has_match_.data(), 0, bit_util::BytesForBits(num_rows)); |
| 714 | |
| 715 | for (size_t tid = 0; tid < local_states_.size(); ++tid) { |
| 716 | if (!local_states_[tid].is_initialized) { |
| 717 | continue; |
| 718 | } |
| 719 | if (!local_states_[tid].is_has_match_initialized) { |
| 720 | continue; |
| 721 | } |
| 722 | arrow::internal::BitmapOr(has_match_.data(), 0, local_states_[tid].has_match.data(), |
| 723 | 0, num_rows, 0, has_match_.data()); |
| 724 | } |
| 725 | } |
| 726 | |
| 727 | static constexpr int64_t hash_table_scan_unit_ = 32 * 1024; |
| 728 | static constexpr int64_t output_batch_size_ = 32 * 1024; |