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 <490103...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org