| 69 | /// nothing. In this case, HashBuild operators finishes early without |
| 70 | /// processing all the input and without finishing building the hash table. |
| 71 | struct HashBuildResult { |
| 72 | HashBuildResult( |
| 73 | std::shared_ptr<BaseHashTable> _table, |
| 74 | std::optional<SpillPartitionId> _restoredPartitionId, |
| 75 | SpillPartitionIdSet _spillPartitionIds, |
| 76 | bool _hasNullKeys, |
| 77 | SpillOffsetToBitsSet _offsetToJoinBits) |
| 78 | : hasNullKeys(_hasNullKeys), |
| 79 | table(std::move(_table)), |
| 80 | restoredPartitionId(std::move(_restoredPartitionId)), |
| 81 | spillPartitionIds(std::move(_spillPartitionIds)), |
| 82 | offsetToJoinBits(_offsetToJoinBits) {} |
| 83 | |
| 84 | HashBuildResult() : hasNullKeys(true) {} |
| 85 | |
| 86 | bool hasNullKeys; |
| 87 | std::shared_ptr<BaseHashTable> table; |
| 88 | std::optional<SpillPartitionId> restoredPartitionId; |
| 89 | SpillPartitionIdSet spillPartitionIds; |
| 90 | SpillOffsetToBitsSet offsetToJoinBits{nullptr}; |
| 91 | }; |
| 92 | |
| 93 | /// Invoked by HashProbe operator to get the table to probe which is built by |
| 94 | /// HashBuild operators. If HashProbe operator calls this early, 'future' will |