This is an automated email from the ASF dual-hosted git repository.

lgbo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 6383199ae8 [GLUTEN-11849][CH] Fix diff for var_samp returns NaN 
instead of NULL when effective row count < 2 (#11850)
6383199ae8 is described below

commit 6383199ae8c52f7baa03ca1c49f8de32b1230911
Author: exmy <[email protected]>
AuthorDate: Tue Apr 7 18:21:39 2026 +0800

    [GLUTEN-11849][CH] Fix diff for var_samp returns NaN instead of NULL when 
effective row count < 2 (#11850)
    
    Co-authored-by: xumingyong <[email protected]>
---
 .../org/apache/gluten/execution/GlutenClickHouseTPCHSuite.scala   | 8 ++++++++
 cpp-ch/local-engine/Parser/AggregateFunctionParser.cpp            | 4 +++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/GlutenClickHouseTPCHSuite.scala
 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/GlutenClickHouseTPCHSuite.scala
index b4cefc3a77..a853cf7e4c 100644
--- 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/GlutenClickHouseTPCHSuite.scala
+++ 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/GlutenClickHouseTPCHSuite.scala
@@ -427,6 +427,14 @@ class GlutenClickHouseTPCHSuite extends MergeTreeSuite {
 
   }
 
+  test("var_samp returns null instead of NaN") {
+    val sql1 = "select var_samp(id) from range(1)"
+    val sql2 = "select covar_samp(id, id) from range(1)"
+
+    compareResultsAgainstVanillaSpark(sql1, true, { _ => })
+    compareResultsAgainstVanillaSpark(sql2, true, { _ => })
+  }
+
   test("existence join") {
     spark.sql("create table t1(a int, b int) using parquet")
     spark.sql("create table t2(a int, b int) using parquet")
diff --git a/cpp-ch/local-engine/Parser/AggregateFunctionParser.cpp 
b/cpp-ch/local-engine/Parser/AggregateFunctionParser.cpp
index 696f5352f2..5bc055d08e 100644
--- a/cpp-ch/local-engine/Parser/AggregateFunctionParser.cpp
+++ b/cpp-ch/local-engine/Parser/AggregateFunctionParser.cpp
@@ -219,7 +219,9 @@ const DB::ActionsDAG::Node * 
AggregateFunctionParser::convertNodeTypeIfNeeded(
 const DB::ActionsDAG::Node * AggregateFunctionParser::convertNanToNullIfNeed(
     const CommonFunctionInfo & func_info, const DB::ActionsDAG::Node * 
func_node, DB::ActionsDAG & actions_dag) const
 {
-    if (getCHFunctionName(func_info) != "corr" || 
!func_node->result_type->isNullable())
+    const auto function_name = getCHFunctionName(func_info);
+    if ((function_name != "corr" && function_name != "varSamp" && 
function_name != "covarSamp")
+        || !func_node->result_type->isNullable())
         return func_node;
 
     /// result is nullable.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to