You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by fj...@apache.org on 2019/05/24 00:04:02 UTC
[incubator-druid] branch 0.15.0-incubating updated: fix
AggregatorFactory.finalizeComputation implementations to be ok with null
inputs (#7731) (#7744)
This is an automated email from the ASF dual-hosted git repository.
fjy pushed a commit to branch 0.15.0-incubating
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git
The following commit(s) were added to refs/heads/0.15.0-incubating by this push:
new 8f4a690 fix AggregatorFactory.finalizeComputation implementations to be ok with null inputs (#7731) (#7744)
8f4a690 is described below
commit 8f4a69024ebb900a313226dbe0c0d78ebd13abef
Author: Clint Wylie <cw...@apache.org>
AuthorDate: Thu May 23 17:03:56 2019 -0700
fix AggregatorFactory.finalizeComputation implementations to be ok with null inputs (#7731) (#7744)
* AggregatorFactory finalizeComputation is nullable with nullable input, make implementations honor this
* fixes
---
.../aggregation/distinctcount/DistinctCountAggregatorFactory.java | 4 +++-
.../momentsketch/aggregator/MomentSketchAggregatorFactory.java | 3 ++-
.../apache/druid/query/movingaverage/AveragerFactoryWrapper.java | 4 +++-
.../apache/druid/query/aggregation/TimestampAggregatorFactory.java | 6 ++++--
.../aggregation/datasketches/hll/HllSketchAggregatorFactory.java | 6 +++++-
.../datasketches/quantiles/DoublesSketchAggregatorFactory.java | 5 +++--
.../datasketches/theta/SketchMergeAggregatorFactory.java | 7 ++++++-
.../datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java | 5 +++--
.../query/aggregation/bloom/BloomFilterAggregatorFactory.java | 3 ++-
.../histogram/ApproximateHistogramAggregatorFactory.java | 5 +++--
.../query/aggregation/variance/VarianceAggregatorFactory.java | 6 ++++--
.../org/apache/druid/query/aggregation/CountAggregatorFactory.java | 4 +++-
.../apache/druid/query/aggregation/FilteredAggregatorFactory.java | 4 +++-
.../apache/druid/query/aggregation/HistogramAggregatorFactory.java | 5 +++--
.../druid/query/aggregation/JavaScriptAggregatorFactory.java | 4 +++-
.../druid/query/aggregation/SuppressedAggregatorFactory.java | 3 ++-
.../aggregation/cardinality/CardinalityAggregatorFactory.java | 5 +++--
.../query/aggregation/first/StringFirstAggregatorFactory.java | 6 ++++--
.../aggregation/hyperloglog/HyperUniquesAggregatorFactory.java | 6 ++++--
.../druid/query/aggregation/last/StringLastAggregatorFactory.java | 6 ++++--
20 files changed, 67 insertions(+), 30 deletions(-)
diff --git a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java
index 524cc37..08f5136 100644
--- a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java
+++ b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java
@@ -35,6 +35,7 @@ import org.apache.druid.query.dimension.DefaultDimensionSpec;
import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.DimensionSelector;
+import javax.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.Comparator;
@@ -147,8 +148,9 @@ public class DistinctCountAggregatorFactory extends AggregatorFactory
return object;
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return object;
}
diff --git a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java
index 918ad3e..1abe6a1 100644
--- a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java
+++ b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java
@@ -206,8 +206,9 @@ public class MomentSketchAggregatorFactory extends AggregatorFactory
);
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return object;
}
diff --git a/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java b/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java
index f6f1d90..9e4118c 100644
--- a/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java
+++ b/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java
@@ -25,6 +25,7 @@ import org.apache.druid.query.aggregation.BufferAggregator;
import org.apache.druid.query.movingaverage.averagers.AveragerFactory;
import org.apache.druid.segment.ColumnSelectorFactory;
+import javax.annotation.Nullable;
import java.util.Comparator;
import java.util.List;
@@ -125,8 +126,9 @@ public class AveragerFactoryWrapper<T, R> extends AggregatorFactory
* Not implemented. Throws UnsupportedOperationException.
*/
@SuppressWarnings("unchecked")
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return af.finalizeComputation((T) object);
}
diff --git a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java
index bf9b690..40f9095 100644
--- a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java
+++ b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java
@@ -27,6 +27,7 @@ import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.ColumnValueSelector;
import org.joda.time.DateTime;
+import javax.annotation.Nullable;
import java.nio.ByteBuffer;
import java.sql.Timestamp;
import java.util.Collections;
@@ -157,10 +158,11 @@ public class TimestampAggregatorFactory extends AggregatorFactory
return object;
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
- return DateTimes.utc((long) object);
+ return object == null ? null : DateTimes.utc((long) object);
}
@Override
diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java
index 2da37b8..ad5895b 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java
@@ -158,9 +158,13 @@ public abstract class HllSketchAggregatorFactory extends AggregatorFactory
};
}
+ @Nullable
@Override
- public Double finalizeComputation(final Object object)
+ public Double finalizeComputation(@Nullable final Object object)
{
+ if (object == null) {
+ return null;
+ }
final HllSketch sketch = (HllSketch) object;
return sketch.getEstimate();
}
diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java
index 6b17ec7..f3b817d 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java
@@ -240,10 +240,11 @@ public class DoublesSketchAggregatorFactory extends AggregatorFactory
}
}
+ @Nullable
@Override
- public Object finalizeComputation(final Object object)
+ public Object finalizeComputation(@Nullable final Object object)
{
- return ((DoublesSketch) object).getN();
+ return object == null ? null : ((DoublesSketch) object).getN();
}
@Override
diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java
index d172b82..2cc5388 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java
@@ -117,9 +117,14 @@ public class SketchMergeAggregatorFactory extends SketchAggregatorFactory
*
* @return sketch object
*/
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
+ if (object == null) {
+ return null;
+ }
+
if (shouldFinalize) {
SketchHolder holder = (SketchHolder) object;
if (errorBoundsStdDev != null) {
diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java
index 504071e..8759083 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java
@@ -285,10 +285,11 @@ public class ArrayOfDoublesSketchAggregatorFactory extends AggregatorFactory
return new ArrayOfDoublesSketchAggregatorFactory(name, name, nominalEntries, null, numberOfValues);
}
+ @Nullable
@Override
- public Object finalizeComputation(final Object object)
+ public Object finalizeComputation(@Nullable final Object object)
{
- return ((ArrayOfDoublesSketch) object).getEstimate();
+ return object == null ? null : ((ArrayOfDoublesSketch) object).getEstimate();
}
@Override
diff --git a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java
index 74e921c..2c633f2 100644
--- a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java
+++ b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java
@@ -227,8 +227,9 @@ public class BloomFilterAggregatorFactory extends AggregatorFactory
}
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return object;
}
diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java
index 4c8c09a..ccf9c53 100644
--- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java
+++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java
@@ -214,10 +214,11 @@ public class ApproximateHistogramAggregatorFactory extends AggregatorFactory
}
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
- return ((ApproximateHistogram) object).toHistogram(numBuckets);
+ return object == null ? null : ((ApproximateHistogram) object).toHistogram(numBuckets);
}
@JsonProperty
diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java
index d7e9d95..fdc9cb2 100644
--- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java
+++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java
@@ -39,6 +39,7 @@ import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.ColumnValueSelector;
import org.apache.druid.segment.NilColumnValueSelector;
+import javax.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.Comparator;
@@ -202,10 +203,11 @@ public class VarianceAggregatorFactory extends AggregatorFactory
return VarianceAggregatorCollector.COMPARATOR;
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
- return ((VarianceAggregatorCollector) object).getVariance(isVariancePop);
+ return object == null ? null : ((VarianceAggregatorCollector) object).getVariance(isVariancePop);
}
@Override
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java
index 23fba55..f4329fe 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java
@@ -25,6 +25,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import org.apache.druid.segment.ColumnSelectorFactory;
+import javax.annotation.Nullable;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -93,8 +94,9 @@ public class CountAggregatorFactory extends AggregatorFactory
return object;
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return object;
}
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java
index 62ee3ea..52f072b 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java
@@ -32,6 +32,7 @@ import org.apache.druid.segment.column.ColumnHolder;
import org.apache.druid.segment.filter.Filters;
import org.joda.time.Interval;
+import javax.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Comparator;
@@ -118,8 +119,9 @@ public class FilteredAggregatorFactory extends AggregatorFactory
return delegate.deserialize(object);
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return delegate.finalizeComputation(object);
}
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java
index 9ca499e..c32348d 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java
@@ -154,10 +154,11 @@ public class HistogramAggregatorFactory extends AggregatorFactory
return object;
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
- return ((Histogram) object).asVisual();
+ return object == null ? null : ((Histogram) object).asVisual();
}
@Override
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java
index b5e9ed1..58017e7 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java
@@ -35,6 +35,7 @@ import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.ColumnValueSelector;
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextAction;
import org.mozilla.javascript.ContextFactory;
@@ -202,8 +203,9 @@ public class JavaScriptAggregatorFactory extends AggregatorFactory
return object;
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return object;
}
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java
index 64dcaf0..c19eb58 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java
@@ -104,8 +104,9 @@ public class SuppressedAggregatorFactory extends AggregatorFactory
return delegate.deserialize(object);
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return delegate.finalizeComputation(object);
}
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java
index 4647c40..8b61915 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java
@@ -44,6 +44,7 @@ import org.apache.druid.query.dimension.DimensionSpec;
import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.DimensionHandlerUtils;
+import javax.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.Comparator;
@@ -234,9 +235,9 @@ public class CardinalityAggregatorFactory extends AggregatorFactory
return HyperLogLogCollector.makeCollector(buffer);
}
+ @Nullable
@Override
-
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return HyperUniquesAggregatorFactory.estimateCardinality(object, round);
}
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java
index 0a898bf..cceebc0 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java
@@ -36,6 +36,7 @@ import org.apache.druid.segment.BaseObjectColumnValueSelector;
import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.column.ColumnHolder;
+import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
@@ -171,10 +172,11 @@ public class StringFirstAggregatorFactory extends NullableAggregatorFactory<Base
return new SerializablePairLongString(((Number) map.get("lhs")).longValue(), ((String) map.get("rhs")));
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
- return ((SerializablePairLongString) object).rhs;
+ return object == null ? null : ((SerializablePairLongString) object).rhs;
}
@Override
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java
index e2427a6..27f1650 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java
@@ -39,6 +39,7 @@ import org.apache.druid.segment.BaseObjectColumnValueSelector;
import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.NilColumnValueSelector;
+import javax.annotation.Nullable;
import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.Comparator;
@@ -49,7 +50,7 @@ import java.util.Objects;
*/
public class HyperUniquesAggregatorFactory extends AggregatorFactory
{
- public static Object estimateCardinality(Object object, boolean round)
+ public static Object estimateCardinality(@Nullable Object object, boolean round)
{
if (object == null) {
return 0;
@@ -192,8 +193,9 @@ public class HyperUniquesAggregatorFactory extends AggregatorFactory
return HyperLogLogCollector.makeCollector(buffer);
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
return estimateCardinality(object, round);
}
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java
index 4973186..113a174 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java
@@ -36,6 +36,7 @@ import org.apache.druid.segment.BaseObjectColumnValueSelector;
import org.apache.druid.segment.ColumnSelectorFactory;
import org.apache.druid.segment.column.ColumnHolder;
+import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
@@ -129,10 +130,11 @@ public class StringLastAggregatorFactory extends NullableAggregatorFactory<BaseO
return new SerializablePairLongString(((Number) map.get("lhs")).longValue(), ((String) map.get("rhs")));
}
+ @Nullable
@Override
- public Object finalizeComputation(Object object)
+ public Object finalizeComputation(@Nullable Object object)
{
- return ((SerializablePairLongString) object).rhs;
+ return object == null ? null : ((SerializablePairLongString) object).rhs;
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org