Add bitmap_hash function (#2439)

Add a bitmap_hash function.
Add a murmur_hash3_32 hash function.
This commit is contained in:
kangkaisen
2019-12-12 16:55:07 +08:00
committed by ZHAO Chun
parent ded247f001
commit a5f52f80df
8 changed files with 86 additions and 14 deletions

View File

@ -97,6 +97,18 @@ StringVal BitmapFunctions::to_bitmap(doris_udf::FunctionContext* ctx, const dori
return AnyValUtil::from_string_temp(ctx, buf);
}
StringVal BitmapFunctions::bitmap_hash(doris_udf::FunctionContext* ctx, const doris_udf::StringVal& src) {
RoaringBitmap bitmap;
if (!src.is_null) {
uint32_t hash_value = HashUtil::murmur_hash3_32(src.ptr, src.len, HashUtil::MURMUR3_32_SEED);
bitmap.update(hash_value);
}
std::string buf;
buf.resize(bitmap.size());
bitmap.serialize((char*)buf.c_str());
return AnyValUtil::from_string_temp(ctx, buf);
}
StringVal BitmapFunctions::bitmap_serialize(FunctionContext* ctx, const StringVal& src) {
auto* src_bitmap = reinterpret_cast<RoaringBitmap*>(src.ptr);
StringVal result(ctx, src_bitmap->size());