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 2018/08/28 00:49:54 UTC

[incubator-druid] branch master updated: fix AssertionError of semi join query (#6244)

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

fjy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git


The following commit(s) were added to refs/heads/master by this push:
     new a879022  fix AssertionError of semi join query (#6244)
a879022 is described below

commit a879022bc8596b02b07dc44127c393990e08dcbe
Author: Dayue Gao <dy...@gmail.com>
AuthorDate: Tue Aug 28 08:49:51 2018 +0800

    fix AssertionError of semi join query (#6244)
---
 sql/src/main/java/io/druid/sql/calcite/rel/DruidSemiJoin.java | 8 ++++++--
 sql/src/test/java/io/druid/sql/calcite/CalciteQueryTest.java  | 4 ++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/sql/src/main/java/io/druid/sql/calcite/rel/DruidSemiJoin.java b/sql/src/main/java/io/druid/sql/calcite/rel/DruidSemiJoin.java
index da50c04..c257303 100644
--- a/sql/src/main/java/io/druid/sql/calcite/rel/DruidSemiJoin.java
+++ b/sql/src/main/java/io/druid/sql/calcite/rel/DruidSemiJoin.java
@@ -44,6 +44,7 @@ import org.apache.calcite.rel.metadata.RelMetadataQuery;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexInputRef;
 import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 
 import javax.annotation.Nullable;
@@ -345,12 +346,15 @@ public class DruidSemiJoin extends DruidRel<DruidSemiJoin>
         newWhereFilter = whereFilter.copy(
             whereFilter.getTraitSet(),
             whereFilter.getInput(),
-            makeAnd(ImmutableList.of(whereFilter.getCondition(), makeOr(conditions)))
+            RexUtil.flatten(
+                getCluster().getRexBuilder(),
+                makeAnd(ImmutableList.of(whereFilter.getCondition(), makeOr(conditions)))
+            )
         );
       } else {
         newWhereFilter = LogicalFilter.create(
             leftPartialQuery.getScan(),
-            makeOr(conditions)
+            makeOr(conditions) // already in flattened form
         );
       }
 
diff --git a/sql/src/test/java/io/druid/sql/calcite/CalciteQueryTest.java b/sql/src/test/java/io/druid/sql/calcite/CalciteQueryTest.java
index d8cdd14..6e4da26 100644
--- a/sql/src/test/java/io/druid/sql/calcite/CalciteQueryTest.java
+++ b/sql/src/test/java/io/druid/sql/calcite/CalciteQueryTest.java
@@ -4658,7 +4658,7 @@ public class CalciteQueryTest extends CalciteTestBase
         + "  FROM druid.foo\n"
         + "  WHERE SUBSTRING(dim2, 1, 1) IN (\n"
         + "    SELECT SUBSTRING(dim1, 1, 1) FROM druid.foo WHERE dim1 <> ''\n"
-        + "  )\n"
+        + "  ) AND __time >= '2000-01-01' AND __time < '2002-01-01'\n"
         + ")",
         ImmutableList.of(
             GroupByQuery.builder()
@@ -4678,7 +4678,7 @@ public class CalciteQueryTest extends CalciteTestBase
                             new QueryDataSource(
                                 GroupByQuery.builder()
                                             .setDataSource(CalciteTests.DATASOURCE1)
-                                            .setInterval(QSS(Filtration.eternity()))
+                                            .setInterval(QSS(Intervals.of("2000-01-01/2002-01-01")))
                                             .setGranularity(Granularities.ALL)
                                             .setDimFilter(IN(
                                                 "dim2",


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org