| 2051 | template <bool ignoreNullKeys> |
| 2052 | template <RowContainer::ProbeType probeType> |
| 2053 | int32_t HashTable<ignoreNullKeys>::listRows( |
| 2054 | RowsIterator* iter, |
| 2055 | int32_t maxRows, |
| 2056 | uint64_t maxBytes, |
| 2057 | char** rows) { |
| 2058 | if (iter->hashTableIndex_ == -1) { |
| 2059 | auto numRows = rows_->listRows<probeType>( |
| 2060 | &iter->rowContainerIterator_, maxRows, maxBytes, rows); |
| 2061 | if (numRows) { |
| 2062 | return numRows; |
| 2063 | } |
| 2064 | iter->hashTableIndex_ = 0; |
| 2065 | iter->rowContainerIterator_.reset(); |
| 2066 | } |
| 2067 | while (iter->hashTableIndex_ < otherTables_.size()) { |
| 2068 | auto numRows = |
| 2069 | otherTables_[iter->hashTableIndex_] |
| 2070 | ->rows() |
| 2071 | ->template listRows<probeType>( |
| 2072 | &iter->rowContainerIterator_, maxRows, maxBytes, rows); |
| 2073 | if (numRows) { |
| 2074 | return numRows; |
| 2075 | } |
| 2076 | ++iter->hashTableIndex_; |
| 2077 | iter->rowContainerIterator_.reset(); |
| 2078 | } |
| 2079 | |
| 2080 | return 0; |
| 2081 | } |
| 2082 | |
| 2083 | template <bool ignoreNullKeys> |
| 2084 | int32_t HashTable<ignoreNullKeys>::listNotProbedRows( |