This is an automated email from the ASF dual-hosted git repository.
jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 1e771ea458 Fix behavior for distinct sum and distinct avg when all
values are null (#14069)
1e771ea458 is described below
commit 1e771ea45838ecad99c0d7558c8147a99bd7ab17
Author: Yash Mayya <[email protected]>
AuthorDate: Tue Sep 24 22:55:17 2024 +0530
Fix behavior for distinct sum and distinct avg when all values are null
(#14069)
---
.../function/DistinctAvgAggregationFunction.java | 4 +++
.../function/DistinctSumAggregationFunction.java | 4 +++
.../function/DistinctAggregationFunctionTest.java | 30 ++++++++++++++++++++++
3 files changed, 38 insertions(+)
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAvgAggregationFunction.java
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAvgAggregationFunction.java
index 7194783910..affcf4b3be 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAvgAggregationFunction.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctAvgAggregationFunction.java
@@ -63,6 +63,10 @@ public class DistinctAvgAggregationFunction extends
BaseDistinctAggregateAggrega
@Override
public Double extractFinalResult(Set intermediateResult) {
+ if (_nullHandlingEnabled && intermediateResult.isEmpty()) {
+ return null;
+ }
+
Double distinctSum = 0.0;
for (Object obj : intermediateResult) {
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctSumAggregationFunction.java
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctSumAggregationFunction.java
index 602017da65..8e9bb34a0c 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctSumAggregationFunction.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctSumAggregationFunction.java
@@ -63,6 +63,10 @@ public class DistinctSumAggregationFunction extends
BaseDistinctAggregateAggrega
@Override
public Double extractFinalResult(Set intermediateResult) {
+ if (_nullHandlingEnabled && intermediateResult.isEmpty()) {
+ return null;
+ }
+
Double distinctSum = 0.0;
for (Object obj : intermediateResult) {
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunctionTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunctionTest.java
index 2067a4c914..43c1095434 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunctionTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/DistinctAggregationFunctionTest.java
@@ -142,6 +142,21 @@ public class DistinctAggregationFunctionTest extends
AbstractAggregationFunction
.thenResultIs("STRING | INTEGER", "literal | 3");
}
+ @Test(dataProvider = "scenarios")
+ void distinctSumAggregationAllNullsWithNullHandlingEnabled(DataTypeScenario
scenario) {
+ scenario.getDeclaringTable(true)
+ .onFirstInstance("myField",
+ "null",
+ "null",
+ "null"
+ ).andOnSecondInstance("myField",
+ "null",
+ "null",
+ "null"
+ ).whenQuery("select sum(distinct myField) from testTable")
+ .thenResultIs("INTEGER", "null");
+ }
+
@Test(dataProvider = "scenarios")
void distinctSumAggregationWithNullHandlingDisabled(DataTypeScenario
scenario) {
scenario.getDeclaringTable(false)
@@ -204,6 +219,21 @@ public class DistinctAggregationFunctionTest extends
AbstractAggregationFunction
.thenResultIs("STRING | DOUBLE", "literal | 6");
}
+ @Test(dataProvider = "scenarios")
+ void distinctAvgAggregationAllNullsWithNullHandlingEnabled(DataTypeScenario
scenario) {
+ scenario.getDeclaringTable(true)
+ .onFirstInstance("myField",
+ "null",
+ "null",
+ "null"
+ ).andOnSecondInstance("myField",
+ "null",
+ "null",
+ "null"
+ ).whenQuery("select avg(distinct myField) from testTable")
+ .thenResultIs("DOUBLE", "null");
+ }
+
@Test(dataProvider = "scenarios")
void distinctAvgAggregationWithNullHandlingDisabled(DataTypeScenario
scenario) {
scenario.getDeclaringTable(false, FieldSpec.FieldType.METRIC)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]