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