You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by cw...@apache.org on 2020/06/20 03:29:38 UTC
[druid] branch master updated: SketchAggregator.updateUnion should
handle null inside List update object (#10055)
This is an automated email from the ASF dual-hosted git repository.
cwylie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 9bab6b6 SketchAggregator.updateUnion should handle null inside List update object (#10055)
9bab6b6 is described below
commit 9bab6b6371d5e572031444cbf1b6a1ee7202c53f
Author: Maytas Monsereenusorn <ma...@apache.org>
AuthorDate: Fri Jun 19 17:29:25 2020 -1000
SketchAggregator.updateUnion should handle null inside List update object (#10055)
---
.../datasketches/theta/SketchAggregator.java | 4 +++-
.../datasketches/theta/SketchAggregationTest.java | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregator.java
index 6b73390..b7df576 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregator.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregator.java
@@ -122,7 +122,9 @@ public class SketchAggregator implements Aggregator
union.update((long[]) update);
} else if (update instanceof List) {
for (Object entry : (List) update) {
- union.update(entry.toString());
+ if (entry != null) {
+ union.update(entry.toString());
+ }
}
} else {
throw new ISE("Illegal type received while theta sketch merging [%s]", update.getClass());
diff --git a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java
index 19716d9..3e7d47d 100644
--- a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java
+++ b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java
@@ -35,8 +35,10 @@ import org.apache.druid.java.util.common.granularity.Granularities;
import org.apache.druid.java.util.common.guava.Sequence;
import org.apache.druid.query.Query;
import org.apache.druid.query.aggregation.AggregationTestHelper;
+import org.apache.druid.query.aggregation.Aggregator;
import org.apache.druid.query.aggregation.AggregatorFactory;
import org.apache.druid.query.aggregation.PostAggregator;
+import org.apache.druid.query.aggregation.TestObjectColumnSelector;
import org.apache.druid.query.aggregation.post.FieldAccessPostAggregator;
import org.apache.druid.query.groupby.GroupByQuery;
import org.apache.druid.query.groupby.GroupByQueryConfig;
@@ -493,6 +495,25 @@ public class SketchAggregationTest
Assert.assertEquals(holders[0].getEstimate(), holders[1].getEstimate(), 0);
}
+ @Test
+ public void testUpdateUnionWithNullInList()
+ {
+ List<String> value = new ArrayList<>();
+ value.add("foo");
+ value.add(null);
+ value.add("bar");
+ List[] columnValues = new List[]{value};
+ final TestObjectColumnSelector selector = new TestObjectColumnSelector(columnValues);
+ final Aggregator agg = new SketchAggregator(selector, 4096);
+ agg.aggregate();
+ Assert.assertFalse(agg.isNull());
+ Assert.assertNotNull(agg.get());
+ Assert.assertTrue(agg.get() instanceof SketchHolder);
+ Assert.assertEquals(2, ((SketchHolder) agg.get()).getEstimate(), 0);
+ Assert.assertNotNull(((SketchHolder) agg.get()).getSketch());
+ Assert.assertEquals(2, ((SketchHolder) agg.get()).getSketch().getEstimate(), 0);
+ }
+
private void assertPostAggregatorSerde(PostAggregator agg) throws Exception
{
Assert.assertEquals(
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org