[improvement][agg]Process aggregated results in the vectorized way (#11084)

This commit is contained in:
Jerry Hu
2022-07-22 22:04:43 +08:00
committed by GitHub
parent ad31b6c902
commit b7c9007776
14 changed files with 314 additions and 33 deletions

View File

@ -78,6 +78,28 @@ void ColumnVector<T>::serialize_vec_with_null_map(std::vector<StringRef>& keys,
}
}
template <typename T>
void ColumnVector<T>::deserialize_vec(std::vector<StringRef>& keys, const size_t num_rows) {
for (size_t i = 0; i != num_rows; ++i) {
keys[i].data = deserialize_and_insert_from_arena(keys[i].data);
keys[i].size -= sizeof(T);
}
}
template <typename T>
void ColumnVector<T>::deserialize_vec_with_null_map(std::vector<StringRef>& keys,
const size_t num_rows,
const uint8_t* null_map) {
for (size_t i = 0; i < num_rows; ++i) {
if (null_map[i] == 0) {
keys[i].data = deserialize_and_insert_from_arena(keys[i].data);
keys[i].size -= sizeof(T);
} else {
insert_default();
}
}
}
template <typename T>
void ColumnVector<T>::update_hash_with_value(size_t n, SipHash& hash) const {
hash.update(data[n]);