| 1554 | |
| 1555 | template <bool ignoreNullKeys> |
| 1556 | uint64_t HashTable<ignoreNullKeys>::setHasherMode( |
| 1557 | const std::vector<std::unique_ptr<VectorHasher>>& hashers, |
| 1558 | const std::vector<bool>& useRange, |
| 1559 | const std::vector<uint64_t>& rangeSizes, |
| 1560 | const std::vector<uint64_t>& distinctSizes) { |
| 1561 | uint64_t multiplier = 1; |
| 1562 | // A group by leaves 50% space for values not yet seen. |
| 1563 | for (int i = 0; i < hashers.size(); ++i) { |
| 1564 | multiplier = useRange.size() > i && useRange[i] |
| 1565 | ? hashers[i]->enableValueRange(multiplier, reservePct()) |
| 1566 | : hashers[i]->enableValueIds(multiplier, reservePct()); |
| 1567 | BOLT_CHECK_NE(multiplier, VectorHasher::kRangeTooLarge); |
| 1568 | } |
| 1569 | return multiplier; |
| 1570 | } |
| 1571 | |
| 1572 | template <bool ignoreNullKeys> |
| 1573 | void HashTable<ignoreNullKeys>::clearUseRange(std::vector<bool>& useRange) { |
nothing calls this directly
no test coverage detected