Skip to content

Commit 1c1f43a

Browse files
committed
Revert hashing scheme in query aggregator
1 parent d2bba07 commit 1c1f43a

1 file changed

Lines changed: 11 additions & 22 deletions

File tree

src/reader/Aggregator.cpp

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -914,7 +914,6 @@ struct Aggregator::AggregatorImpl {
914914

915915
struct AggregateEntry {
916916
std::vector<Entry> key;
917-
std::vector<Entry> hash_key;
918917
std::vector<std::unique_ptr<AggregateKernel>> kernels;
919918
std::size_t next_entry_idx;
920919
};
@@ -1020,38 +1019,29 @@ struct Aggregator::AggregatorImpl {
10201019
CaliperMetadataAccessInterface& db
10211020
)
10221021
{
1023-
// --- make hash key from key nodes and immediates
1022+
// --- make key from key nodes and immediates
10241023

1025-
std::vector<Entry> hash_key;
1026-
hash_key.reserve((nodes_end - nodes_begin) + immediates.size());
1027-
hash_key.resize((nodes_end - nodes_begin));
1024+
std::vector<Entry> key;
1025+
key.reserve(immediates.size() + 1);
1026+
key.insert(key.end(), immediates.begin(), immediates.end());
10281027

1029-
std::transform(nodes_begin, nodes_end, hash_key.begin(), [](Node* n){ return Entry(n); });
1030-
hash_key.insert(hash_key.end(), immediates.begin(), immediates.end());
1028+
if (nodes_begin != nodes_end) {
1029+
std::vector<const Node*> rv_nodes(nodes_end - nodes_begin);
1030+
std::reverse_copy(nodes_begin, nodes_end, rv_nodes.begin());
1031+
key.push_back(Entry(db.make_tree_entry(rv_nodes.size(), rv_nodes.data())));
1032+
}
10311033

10321034
// --- lookup key
10331035

1034-
std::size_t hash = compute_key_hash(hash_key) % m_hashmap.size();
1036+
std::size_t hash = compute_key_hash(key) % m_hashmap.size();
10351037
for (size_t i = m_hashmap[hash]; i; i = m_entries[i]->next_entry_idx) {
10361038
auto e = m_entries[i];
1037-
if (hash_key == e->hash_key)
1039+
if (key == e->key)
10381040
return e;
10391041
}
10401042

10411043
// --- hash key not found: create a new entry
10421044

1043-
// -- merge key nodes into new tree entry to create compact key
1044-
1045-
std::vector<Entry> key;
1046-
key.reserve(immediates.size() + 1);
1047-
key.insert(key.end(), immediates.begin(), immediates.end());
1048-
1049-
if (nodes_begin != nodes_end) {
1050-
std::vector<const Node*> rv_nodes(nodes_end - nodes_begin);
1051-
std::reverse_copy(nodes_begin, nodes_end, rv_nodes.begin());
1052-
key.push_back(Entry(db.make_tree_entry(rv_nodes.size(), rv_nodes.data())));
1053-
}
1054-
10551045
std::vector<std::unique_ptr<AggregateKernel>> kernels;
10561046
kernels.reserve(m_kernel_configs.size());
10571047

@@ -1061,7 +1051,6 @@ struct Aggregator::AggregatorImpl {
10611051
auto e = std::make_shared<AggregateEntry>();
10621052

10631053
e->key = std::move(key);
1064-
e->hash_key = std::move(hash_key);
10651054
e->kernels = std::move(kernels);
10661055
e->next_entry_idx = m_hashmap[hash];
10671056

0 commit comments

Comments
 (0)