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

yashmayya 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 88456755908 Handle empty tables appropriately for various aggregation 
functions (#17750)
88456755908 is described below

commit 884567559084baa8b78757dda0752024e0aa9cd5
Author: Yash Mayya <[email protected]>
AuthorDate: Mon Feb 23 16:45:10 2026 -0800

    Handle empty tables appropriately for various aggregation functions (#17750)
---
 .../aggregation/function/DistinctCountAggregationFunction.java     | 6 ++++--
 .../function/DistinctCountBitmapAggregationFunction.java           | 6 ++++--
 .../function/DistinctCountCPCSketchAggregationFunction.java        | 7 ++++++-
 .../aggregation/function/DistinctCountHLLAggregationFunction.java  | 6 ++++--
 .../function/DistinctCountHLLPlusAggregationFunction.java          | 6 ++++--
 .../DistinctCountIntegerTupleSketchAggregationFunction.java        | 6 +++++-
 .../aggregation/function/DistinctCountMVAggregationFunction.java   | 6 ++++--
 .../function/DistinctCountOffHeapAggregationFunction.java          | 7 +++++--
 .../function/DistinctCountRawCPCSketchAggregationFunction.java     | 7 ++++++-
 .../function/DistinctCountRawHLLAggregationFunction.java           | 7 ++++++-
 .../function/DistinctCountRawHLLPlusAggregationFunction.java       | 7 ++++++-
 .../function/DistinctCountRawThetaSketchAggregationFunction.java   | 7 ++++++-
 .../function/DistinctCountRawULLAggregationFunction.java           | 7 ++++++-
 .../function/DistinctCountSmartHLLAggregationFunction.java         | 6 +++++-
 .../function/DistinctCountSmartULLAggregationFunction.java         | 3 +++
 .../function/DistinctCountThetaSketchAggregationFunction.java      | 7 ++++++-
 .../aggregation/function/DistinctCountULLAggregationFunction.java  | 5 +++--
 .../function/IntegerTupleSketchAggregationFunction.java            | 7 ++++++-
 .../SegmentPartitionedDistinctCountAggregationFunction.java        | 4 ++--
 19 files changed, 91 insertions(+), 26 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountAggregationFunction.java
index 2d35695ec06..be4f01cfc4d 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountAggregationFunction.java
@@ -21,6 +21,7 @@ package org.apache.pinot.core.query.aggregation.function;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
 import org.apache.pinot.core.common.BlockValSet;
@@ -80,9 +81,10 @@ public class DistinctCountAggregationFunction extends 
BaseDistinctAggregateAggre
     return ColumnDataType.INT;
   }
 
+  @Nullable
   @Override
-  public Integer extractFinalResult(Set intermediateResult) {
-    return intermediateResult.size();
+  public Integer extractFinalResult(@Nullable Set intermediateResult) {
+    return intermediateResult == null ? 0 : intermediateResult.size();
   }
 
   @Override
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountBitmapAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountBitmapAggregationFunction.java
index ea27bb872cd..8a6801454b6 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountBitmapAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountBitmapAggregationFunction.java
@@ -20,6 +20,7 @@ package org.apache.pinot.core.query.aggregation.function;
 
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.CustomObject;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -560,9 +561,10 @@ public class DistinctCountBitmapAggregationFunction 
extends BaseSingleInputAggre
     return ColumnDataType.INT;
   }
 
+  @Nullable
   @Override
-  public Integer extractFinalResult(RoaringBitmap intermediateResult) {
-    return intermediateResult.getCardinality();
+  public Integer extractFinalResult(@Nullable RoaringBitmap 
intermediateResult) {
+    return intermediateResult == null ? 0 : 
intermediateResult.getCardinality();
   }
 
   @Override
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountCPCSketchAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountCPCSketchAggregationFunction.java
index f1aacb9107d..fcaa9c9ff00 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountCPCSketchAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountCPCSketchAggregationFunction.java
@@ -21,6 +21,7 @@ package org.apache.pinot.core.query.aggregation.function;
 import com.google.common.base.Preconditions;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.datasketches.cpc.CpcSketch;
 import org.apache.datasketches.memory.Memory;
@@ -421,8 +422,12 @@ public class DistinctCountCPCSketchAggregationFunction
     return DataSchema.ColumnDataType.LONG;
   }
 
+  @Nullable
   @Override
-  public Comparable extractFinalResult(CpcSketchAccumulator 
intermediateResult) {
+  public Comparable extractFinalResult(@Nullable CpcSketchAccumulator 
intermediateResult) {
+    if (intermediateResult == null) {
+      return 0L;
+    }
     intermediateResult.setLgNominalEntries(_lgNominalEntries);
     intermediateResult.setThreshold(_accumulatorThreshold);
     return Math.round(intermediateResult.getResult().getEstimate());
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLAggregationFunction.java
index 66748f390cc..393ce439cbd 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLAggregationFunction.java
@@ -22,6 +22,7 @@ import 
com.clearspring.analytics.stream.cardinality.HyperLogLog;
 import com.google.common.base.Preconditions;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.CustomObject;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -604,9 +605,10 @@ public class DistinctCountHLLAggregationFunction extends 
BaseSingleInputAggregat
     return ColumnDataType.LONG;
   }
 
+  @Nullable
   @Override
-  public Long extractFinalResult(HyperLogLog intermediateResult) {
-    return intermediateResult.cardinality();
+  public Long extractFinalResult(@Nullable HyperLogLog intermediateResult) {
+    return intermediateResult == null ? 0L : intermediateResult.cardinality();
   }
 
   @Override
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLPlusAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLPlusAggregationFunction.java
index 25f555dc588..67cf83a579f 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLPlusAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountHLLPlusAggregationFunction.java
@@ -22,6 +22,7 @@ import 
com.clearspring.analytics.stream.cardinality.HyperLogLogPlus;
 import com.google.common.base.Preconditions;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.CustomObject;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -620,9 +621,10 @@ public class DistinctCountHLLPlusAggregationFunction 
extends BaseSingleInputAggr
     return ColumnDataType.LONG;
   }
 
+  @Nullable
   @Override
-  public Long extractFinalResult(HyperLogLogPlus intermediateResult) {
-    return intermediateResult.cardinality();
+  public Long extractFinalResult(@Nullable HyperLogLogPlus intermediateResult) 
{
+    return intermediateResult == null ? 0L : intermediateResult.cardinality();
   }
 
   @Override
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountIntegerTupleSketchAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountIntegerTupleSketchAggregationFunction.java
index b10797a58c1..c65cd9ed7fa 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountIntegerTupleSketchAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountIntegerTupleSketchAggregationFunction.java
@@ -19,6 +19,7 @@
 package org.apache.pinot.core.query.aggregation.function;
 
 import java.util.List;
+import javax.annotation.Nullable;
 import org.apache.datasketches.tuple.aninteger.IntegerSummary;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -45,7 +46,10 @@ public class 
DistinctCountIntegerTupleSketchAggregationFunction extends IntegerT
   }
 
   @Override
-  public Comparable extractFinalResult(TupleIntSketchAccumulator accumulator) {
+  public Comparable extractFinalResult(@Nullable TupleIntSketchAccumulator 
accumulator) {
+    if (accumulator == null) {
+      return 0L;
+    }
     accumulator.setNominalEntries(_nominalEntries);
     accumulator.setSetOperations(_setOps);
     accumulator.setThreshold(_accumulatorThreshold);
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountMVAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountMVAggregationFunction.java
index d28a1632cc4..62aaf711645 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountMVAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountMVAggregationFunction.java
@@ -21,6 +21,7 @@ package org.apache.pinot.core.query.aggregation.function;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema;
 import org.apache.pinot.core.common.BlockValSet;
@@ -61,9 +62,10 @@ public class DistinctCountMVAggregationFunction extends 
BaseDistinctAggregateAgg
     return DataSchema.ColumnDataType.INT;
   }
 
+  @Nullable
   @Override
-  public Integer extractFinalResult(Set intermediateResult) {
-    return intermediateResult.size();
+  public Integer extractFinalResult(@Nullable Set intermediateResult) {
+    return intermediateResult == null ? 0 : intermediateResult.size();
   }
 
   @Override
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountOffHeapAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountOffHeapAggregationFunction.java
index f0352e79d0b..19d208a4342 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountOffHeapAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountOffHeapAggregationFunction.java
@@ -22,6 +22,7 @@ import com.google.common.base.Preconditions;
 import java.util.BitSet;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pinot.common.CustomObject;
 import org.apache.pinot.common.request.context.ExpressionContext;
@@ -466,8 +467,10 @@ public class DistinctCountOffHeapAggregationFunction
   }
 
   @Override
-  public Integer extractFinalResult(BaseOffHeapSet set) {
-    assert set != null;
+  public Integer extractFinalResult(@Nullable BaseOffHeapSet set) {
+    if (set == null) {
+      return 0;
+    }
     int size = set.size();
     set.close();
     return size;
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawCPCSketchAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawCPCSketchAggregationFunction.java
index ff3a587881c..63a2c079b10 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawCPCSketchAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawCPCSketchAggregationFunction.java
@@ -19,6 +19,7 @@
 package org.apache.pinot.core.query.aggregation.function;
 
 import java.util.List;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
 import org.apache.pinot.segment.local.customobject.CpcSketchAccumulator;
@@ -46,8 +47,12 @@ public class DistinctCountRawCPCSketchAggregationFunction 
extends DistinctCountC
     return ColumnDataType.STRING;
   }
 
+  @Nullable
   @Override
-  public SerializedCPCSketch extractFinalResult(CpcSketchAccumulator 
intermediateResult) {
+  public SerializedCPCSketch extractFinalResult(@Nullable CpcSketchAccumulator 
intermediateResult) {
+    if (intermediateResult == null) {
+      return null;
+    }
     intermediateResult.setLgNominalEntries(_lgNominalEntries);
     intermediateResult.setThreshold(_accumulatorThreshold);
     return new SerializedCPCSketch(intermediateResult.getResult());
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLAggregationFunction.java
index b195df55489..0e664e121f5 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLAggregationFunction.java
@@ -21,6 +21,7 @@ package org.apache.pinot.core.query.aggregation.function;
 import com.clearspring.analytics.stream.cardinality.HyperLogLog;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.CustomObject;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -118,8 +119,12 @@ public class DistinctCountRawHLLAggregationFunction
     return ColumnDataType.STRING;
   }
 
+  @Nullable
   @Override
-  public SerializedHLL extractFinalResult(HyperLogLog intermediateResult) {
+  public SerializedHLL extractFinalResult(@Nullable HyperLogLog 
intermediateResult) {
+    if (intermediateResult == null) {
+      return null;
+    }
     return new SerializedHLL(intermediateResult);
   }
 }
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLPlusAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLPlusAggregationFunction.java
index f990993da3f..8e45fbcc51c 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLPlusAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawHLLPlusAggregationFunction.java
@@ -21,6 +21,7 @@ package org.apache.pinot.core.query.aggregation.function;
 import com.clearspring.analytics.stream.cardinality.HyperLogLogPlus;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.CustomObject;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -119,8 +120,12 @@ public class DistinctCountRawHLLPlusAggregationFunction
     return ColumnDataType.STRING;
   }
 
+  @Nullable
   @Override
-  public SerializedHLLPlus extractFinalResult(HyperLogLogPlus 
intermediateResult) {
+  public SerializedHLLPlus extractFinalResult(@Nullable HyperLogLogPlus 
intermediateResult) {
+    if (intermediateResult == null) {
+      return null;
+    }
     return new SerializedHLLPlus(intermediateResult);
   }
 }
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawThetaSketchAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawThetaSketchAggregationFunction.java
index e25b8e0ddbb..eb54e91287a 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawThetaSketchAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawThetaSketchAggregationFunction.java
@@ -21,6 +21,7 @@ package org.apache.pinot.core.query.aggregation.function;
 import java.util.ArrayList;
 import java.util.Base64;
 import java.util.List;
+import javax.annotation.Nullable;
 import org.apache.datasketches.theta.Sketch;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
@@ -48,8 +49,12 @@ public class DistinctCountRawThetaSketchAggregationFunction 
extends DistinctCoun
     return ColumnDataType.STRING;
   }
 
+  @Nullable
   @Override
-  public String extractFinalResult(List<ThetaSketchAccumulator> accumulators) {
+  public String extractFinalResult(@Nullable List<ThetaSketchAccumulator> 
accumulators) {
+    if (accumulators == null) {
+      return null;
+    }
     int numAccumulators = accumulators.size();
     List<Sketch> mergedSketches = new ArrayList<>(numAccumulators);
 
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawULLAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawULLAggregationFunction.java
index fb98636e1d1..64053f48ce8 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawULLAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountRawULLAggregationFunction.java
@@ -20,6 +20,7 @@ package org.apache.pinot.core.query.aggregation.function;
 
 import com.dynatrace.hash4j.distinctcount.UltraLogLog;
 import java.util.List;
+import javax.annotation.Nullable;
 import org.apache.pinot.common.request.context.ExpressionContext;
 import org.apache.pinot.common.utils.DataSchema.ColumnDataType;
 import org.apache.pinot.segment.local.customobject.SerializedULL;
@@ -31,8 +32,12 @@ public class DistinctCountRawULLAggregationFunction extends 
DistinctCountULLAggr
     super(arguments);
   }
 
+  @Nullable
   @Override
-  public SerializedULL extractFinalResult(UltraLogLog intermediateResult) {
+  public SerializedULL extractFinalResult(@Nullable UltraLogLog 
intermediateResult) {
+    if (intermediateResult == null) {
+      return null;
+    }
     return new SerializedULL(intermediateResult);
   }
 
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartHLLAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartHLLAggregationFunction.java
index 50a1265653a..8b18801f485 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartHLLAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartHLLAggregationFunction.java
@@ -25,6 +25,7 @@ import it.unimi.dsi.fastutil.objects.ObjectSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.annotation.Nullable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pinot.common.CustomObject;
 import org.apache.pinot.common.request.context.ExpressionContext;
@@ -373,7 +374,10 @@ public class DistinctCountSmartHLLAggregationFunction 
extends BaseDistinctCountS
   }
 
   @Override
-  public Integer extractFinalResult(Object intermediateResult) {
+  public Integer extractFinalResult(@Nullable Object intermediateResult) {
+    if (intermediateResult == null) {
+      return 0;
+    }
     if (intermediateResult instanceof HyperLogLog) {
       return (int) ((HyperLogLog) intermediateResult).cardinality();
     } else {
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartULLAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartULLAggregationFunction.java
index de639f4b464..b87c299dc6e 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartULLAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountSmartULLAggregationFunction.java
@@ -351,6 +351,9 @@ public class DistinctCountSmartULLAggregationFunction 
extends BaseDistinctCountS
 
   @Override
   public Integer extractFinalResult(Object intermediateResult) {
+    if (intermediateResult == null) {
+      return 0;
+    }
     if (intermediateResult instanceof UltraLogLog) {
       return (int) Math.round(((UltraLogLog) 
intermediateResult).getDistinctCountEstimate());
     } else {
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountThetaSketchAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountThetaSketchAggregationFunction.java
index 403c6d52cf2..d23d4c7549a 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountThetaSketchAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountThetaSketchAggregationFunction.java
@@ -25,6 +25,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.theta.AnotB;
@@ -1077,8 +1078,12 @@ public class DistinctCountThetaSketchAggregationFunction
     return ColumnDataType.LONG;
   }
 
+  @Nullable
   @Override
-  public Comparable extractFinalResult(List<ThetaSketchAccumulator> 
accumulators) {
+  public Comparable extractFinalResult(@Nullable List<ThetaSketchAccumulator> 
accumulators) {
+    if (accumulators == null) {
+      return 0L;
+    }
     int numAccumulators = accumulators.size();
     List<Sketch> mergedSketches = new ArrayList<>(numAccumulators);
 
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountULLAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountULLAggregationFunction.java
index edd3fcc41ed..753d3ef69a7 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountULLAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountULLAggregationFunction.java
@@ -377,9 +377,10 @@ public class DistinctCountULLAggregationFunction extends 
BaseSingleInputAggregat
     return ColumnDataType.LONG;
   }
 
+  @Nullable
   @Override
-  public Comparable extractFinalResult(UltraLogLog intermediateResult) {
-    return Math.round(intermediateResult.getDistinctCountEstimate());
+  public Comparable extractFinalResult(@Nullable UltraLogLog 
intermediateResult) {
+    return intermediateResult == null ? 0L : 
Math.round(intermediateResult.getDistinctCountEstimate());
   }
 
   @Override
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/IntegerTupleSketchAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/IntegerTupleSketchAggregationFunction.java
index 1abc6037464..679933c5ed1 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/IntegerTupleSketchAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/IntegerTupleSketchAggregationFunction.java
@@ -22,6 +22,7 @@ import com.google.common.base.Preconditions;
 import java.util.Base64;
 import java.util.List;
 import java.util.Map;
+import javax.annotation.Nullable;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.tuple.Sketch;
@@ -281,8 +282,12 @@ public class IntegerTupleSketchAggregationFunction
     return ColumnDataType.STRING;
   }
 
+  @Nullable
   @Override
-  public Comparable extractFinalResult(TupleIntSketchAccumulator accumulator) {
+  public Comparable extractFinalResult(@Nullable TupleIntSketchAccumulator 
accumulator) {
+    if (accumulator == null) {
+      return null;
+    }
     accumulator.setNominalEntries(_nominalEntries);
     accumulator.setSetOperations(_setOps);
     accumulator.setThreshold(_accumulatorThreshold);
diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/SegmentPartitionedDistinctCountAggregationFunction.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/SegmentPartitionedDistinctCountAggregationFunction.java
index dcf05cc2edf..06ca46c7be5 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/SegmentPartitionedDistinctCountAggregationFunction.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/SegmentPartitionedDistinctCountAggregationFunction.java
@@ -324,8 +324,8 @@ public class 
SegmentPartitionedDistinctCountAggregationFunction extends BaseSing
   }
 
   @Override
-  public Long extractFinalResult(Long intermediateResult) {
-    return intermediateResult;
+  public Long extractFinalResult(@Nullable Long intermediateResult) {
+    return intermediateResult == null ? 0L : intermediateResult;
   }
 
   @Override


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

Reply via email to