Fix HLL_UNION_AGG AnalyticFn result in BE core by adding hll_get_value (#2653)

This commit is contained in:
kangkaisen
2020-01-03 19:23:56 +08:00
committed by ZHAO Chun
parent c098178f7a
commit 5dff936243
3 changed files with 11 additions and 1 deletions

View File

@ -80,6 +80,12 @@ BigIntVal HllFunctions::hll_finalize(FunctionContext*, const StringVal &src) {
return result;
}
BigIntVal HllFunctions::hll_get_value(FunctionContext*, const StringVal &src) {
auto* src_hll = reinterpret_cast<HyperLogLog*>(src.ptr);
BigIntVal result(src_hll->estimate_cardinality());
return result;
}
BigIntVal HllFunctions::hll_cardinality(FunctionContext* ctx, const StringVal& input) {
if (input.is_null) {
return BigIntVal::null();

View File

@ -36,6 +36,10 @@ public:
static BigIntVal hll_finalize(FunctionContext*, const StringVal& src);
// Get the hll cardinality, the difference from hll_finalize method is
// hll_get_value method doesn't free memory
static BigIntVal hll_get_value(FunctionContext*, const StringVal& src);
static StringVal hll_serialize(FunctionContext* ctx, const StringVal& src);
static BigIntVal hll_cardinality(FunctionContext* ctx, const StringVal& src);

View File

@ -1000,7 +1000,7 @@ public class FunctionSet {
HLL_UNION_AGG_UPDATE_SYMBOL.get(t),
"_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_",
"_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE",
"_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE",
"_ZN5doris12HllFunctions13hll_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE",
null,
"_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE",
true, true, true));