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

sereda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/master by this push:
     new 0876740  [CALCITE-2890] Elasticsearch adapter. any_value with other 
aggregation functions returns incorrect result (Siyuan Liu)
0876740 is described below

commit 0876740d2457a7f735267d14e1639d6decfed16d
Author: liusiyuan1 <[email protected]>
AuthorDate: Sun Feb 3 01:16:26 2019 +0800

    [CALCITE-2890] Elasticsearch adapter. any_value with other aggregation 
functions returns incorrect result (Siyuan Liu)
---
 .../adapter/elasticsearch/ElasticsearchJson.java   |  2 +-
 .../adapter/elasticsearch/AggregationTest.java     | 23 ++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git 
a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchJson.java
 
b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchJson.java
index 320a32b..d67aed7 100644
--- 
a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchJson.java
+++ 
b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/ElasticsearchJson.java
@@ -73,7 +73,7 @@ final class ElasticsearchJson {
         rows.computeIfAbsent(r, ignore -> new ArrayList<>()).add(v);
     aggregations.forEach(a -> visitValueNodes(a, new ArrayList<>(), cons));
     rows.forEach((k, v) -> {
-      if (v.stream().anyMatch(val -> val instanceof GroupValue)) {
+      if (v.stream().allMatch(val -> val instanceof GroupValue)) {
         v.forEach(tuple -> {
           Map<String, Object> groupRow = new LinkedHashMap<>(k.keys);
           groupRow.put(tuple.getName(), tuple.value());
diff --git 
a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java
 
b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java
index ecbcc23..5b29e71 100644
--- 
a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java
+++ 
b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/AggregationTest.java
@@ -256,7 +256,30 @@ public class AggregationTest {
         .query("select cat2, any_value(cat3) from view group by cat2")
         .returnsUnordered("cat2=g; EXPR$1=y", // EXPR$1=null is also valid
             "cat2=h; EXPR$1=z");
+  }
+
+  @Test
+  public void anyValueWithOtherAgg() {
+    CalciteAssert.that()
+        .with(newConnectionFactory())
+        .query("select cat1, any_value(cat2), max(val1) from view group by 
cat1")
+        .returnsUnordered("cat1=a; EXPR$1=g; EXPR$2=1.0",
+            "cat1=null; EXPR$1=g; EXPR$2=null",
+            "cat1=b; EXPR$1=h; EXPR$2=7.0");
 
+    CalciteAssert.that()
+        .with(newConnectionFactory())
+        .query("select max(val1), cat1, any_value(cat2) from view group by 
cat1")
+        .returnsUnordered("EXPR$0=1.0; cat1=a; EXPR$2=g",
+            "EXPR$0=null; cat1=null; EXPR$2=g",
+            "EXPR$0=7.0; cat1=b; EXPR$2=h");
+
+    CalciteAssert.that()
+        .with(newConnectionFactory())
+        .query("select any_value(cat2), cat1, max(val1) from view group by 
cat1")
+        .returnsUnordered("EXPR$0=g; cat1=a; EXPR$2=1.0",
+            "EXPR$0=g; cat1=null; EXPR$2=null",
+            "EXPR$0=h; cat1=b; EXPR$2=7.0");
   }
 
   @Test

Reply via email to