Fix HLL_UNION_AGG AnalyticFn result in BE core by adding hll_get_value (#2653)
This commit is contained in:
@ -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();
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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));
|
||||
|
||||
Reference in New Issue
Block a user