You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/07/26 10:00:18 UTC
[doris] branch master updated: [UDAF](sample) impl rpc avg udaf (#11132)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 03d466febe [UDAF](sample) impl rpc avg udaf (#11132)
03d466febe is described below
commit 03d466febe774492b52a1f0e522b21e997990f5a
Author: chenlinzhong <49...@qq.com>
AuthorDate: Tue Jul 26 18:00:13 2022 +0800
[UDAF](sample) impl rpc avg udaf (#11132)
---
.../aggregate_functions/aggregate_function_rpc.h | 2 +-
.../cpp_function_service_demo.cpp | 32 ++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/be/src/vec/aggregate_functions/aggregate_function_rpc.h b/be/src/vec/aggregate_functions/aggregate_function_rpc.h
index 5612ce27fd..6a9a3894c8 100644
--- a/be/src/vec/aggregate_functions/aggregate_function_rpc.h
+++ b/be/src/vec/aggregate_functions/aggregate_function_rpc.h
@@ -252,7 +252,7 @@ public:
reinterpret_cast<const DataTypeNullable*>(return_type.get())->get_nested_type();
}
WhichDataType which(result_type);
- if (which.is_float()) {
+ if (which.is_float32()) {
float ret = response.result(0).float_value(0);
to.insert_data((char*)&ret, 0);
}
diff --git a/samples/doris-demo/remote-udaf-cpp-demo/cpp_function_service_demo.cpp b/samples/doris-demo/remote-udaf-cpp-demo/cpp_function_service_demo.cpp
index e15fba65ab..8f8b338f5f 100644
--- a/samples/doris-demo/remote-udaf-cpp-demo/cpp_function_service_demo.cpp
+++ b/samples/doris-demo/remote-udaf-cpp-demo/cpp_function_service_demo.cpp
@@ -59,6 +59,38 @@ public:
}
result->add_int32_value(sum);
}
+ if(fun_name=="rpc_avg_update"){
+ result->mutable_type()->set_id(PGenericType::DOUBLE);
+ double sum=0;
+ int64_t size = request->args(0).int32_value_size();
+ for (size_t i = 0; i < request->args(0).int32_value_size(); ++i) {
+ sum += request->args(0).int32_value(i);
+ }
+ if(request->has_context() && request->context().has_function_context()){
+ sum += request->context().function_context().args_data(0).double_value(0);
+ size += request->context().function_context().args_data(0).int32_value(0);
+ }
+ result->add_double_value(sum);
+ result->add_int32_value(size);
+ }
+ if(fun_name=="rpc_avg_merge"){
+ result->mutable_type()->set_id(PGenericType::INT32);
+ double sum= 0;
+ int32_t size = 0;
+ for (size_t i = 0; i < request->args_size(); ++i) {
+ sum += request->args(i).double_value(0);
+ size += request->args(i).int32_value(0);
+ }
+ result->add_double_value(sum);
+ result->add_int32_value(size);
+ }
+ if(fun_name=="rpc_avg_finalize"){
+ result->mutable_type()->set_id(PGenericType::DOUBLE);
+ double sum = request->context().function_context().args_data(0).double_value(0);
+ int64_t size = request->context().function_context().args_data(0).int32_value(0);
+ double avg = sum / size;
+ result->add_double_value(avg);
+ }
response->mutable_status()->set_status_code(0);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org