You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by za...@apache.org on 2019/07/26 10:42:56 UTC

[calcite] branch master updated (c1c4e31 -> 689a5bb)

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

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


    from c1c4e31  [CALCITE-3109] Improvements on algebraic operators to express recursive queries (RepeatUnion & TableSpool)
     new 3ebaa59  Following [CALCITE-2804], fix incorrect expected Druid query in test case DruidAdapterIT#testCastToTimestamp (Justin Szeluga)
     new 689a5bb  Update stale tests in DruidAdapter

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../{DruidAdapterIT2.java => DruidAdapter2IT.java} | 24 ++++-----
 .../org/apache/calcite/test/DruidAdapterIT.java    | 58 +++++++++++-----------
 2 files changed, 40 insertions(+), 42 deletions(-)
 rename druid/src/test/java/org/apache/calcite/test/{DruidAdapterIT2.java => DruidAdapter2IT.java} (99%)


[calcite] 01/02: Following [CALCITE-2804], fix incorrect expected Druid query in test case DruidAdapterIT#testCastToTimestamp (Justin Szeluga)

Posted by za...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 3ebaa591c6fa045310252944a292b85908a938f8
Author: Justin Szeluga <ju...@gmail.com>
AuthorDate: Fri Jun 14 00:41:30 2019 +0800

    Following [CALCITE-2804], fix incorrect expected Druid query in test case DruidAdapterIT#testCastToTimestamp (Justin Szeluga)
    
    Close apache/calcite#1262
    
    Co-authored-by: Justin Szeluga <ju...@gmail.com>
    Co-authored-by: Hongze Zhang <ho...@apache.org>
---
 .../org/apache/calcite/test/DruidAdapterIT.java    | 37 +++++++++++++---------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
index 5ea1f8f..6c145d2 100644
--- a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
+++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
@@ -114,6 +114,19 @@ public class DruidAdapterIT {
     };
   }
 
+  /** Returns a consumer that checks that a particular Druid query is
+   * generated to implement a query. Expected lines should be exactly
+   * included in the actual query text, without changing quote types. */
+  private Consumer<List> druidOriginalChecker(final String... lines) {
+    return list -> {
+      assertThat(list.size(), is(1));
+      DruidQuery.QuerySpec querySpec = (DruidQuery.QuerySpec) list.get(0);
+      for (String line : lines) {
+        assertThat(querySpec.getQueryString(null, -1), containsString(line));
+      }
+    };
+  }
+
   /**
    * Creates a query against FOODMART with approximate parameters
    * */
@@ -577,23 +590,17 @@ public class DruidAdapterIT {
    */
   @Test public void testCastToTimestamp() {
     final String sql = "select cast(\"timestamp\" as timestamp) from \"foodmart\"";
-    final String druidQuery = "{'queryType':'scan','dataSource':'foodmart',"
-        + "'intervals':['1900-01-09T00:00:00.000Z/2992-01-10T00:00:00.000Z']',"
-        + "'virtualColumns:[{'type':'expression','name':'vc',"
-        + "'expression':'timestamp_parse("
-        + "timestamp_format(\"__time\",'yyyy-MM-dd\\u0027T\\u0027HH:mm:ss.SSS\\u0027Z\\u0027',"
-        + "'America/New_York'),'yyyy-MM-dd\\u0027T\\u0027HH:mm:ss.SSS\\u0027Z\\u0027','UTC')',"
-        + "'outputType':'LONG'}],"
-        + "'columns':['vc'],"
-        + "'resultFormat':'compactedList'}";
+    final String druidQuery = "timestamp_format(\\\"__time\\\","
+        + "'yyyy-MM-dd\\\\u0027T\\\\u0027HH:mm:ss.SSS\\\\u0027Z\\\\u0027',"
+        + "'America/New_York'),'yyyy-MM-dd\\\\u0027T\\\\u0027HH:mm:ss.SSS\\\\u0027Z\\\\u0027','UTC')\"";
 
     CalciteAssert.that()
-         .enable(enabled())
-         .withModel(FOODMART)
-         .with(CalciteConnectionProperty.TIME_ZONE.camelName(), "America/New_York")
-         .query(sql)
-         .runs()
-         .queryContains(druidChecker(druidQuery));
+        .enable(enabled())
+        .withModel(FOODMART)
+        .with(CalciteConnectionProperty.TIME_ZONE.camelName(), "America/New_York")
+        .query(sql)
+        .runs()
+        .queryContains(druidOriginalChecker(druidQuery));
   }
 
   @Test public void testDistinctLimit() {


[calcite] 02/02: Update stale tests in DruidAdapter

Posted by za...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 689a5bbb14614d3f8eef4a4f7e832c6c02029b3c
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Fri Jul 26 12:41:29 2019 +0200

    Update stale tests in DruidAdapter
    
    1. Adapt plans based on the improvements in the simplifier and elsewhere.
    2. Rename DruidAdapterIT2 to DruidAdapterIT to be run in integration tests.
---
 .../{DruidAdapterIT2.java => DruidAdapter2IT.java} | 24 +++++++++-------------
 .../org/apache/calcite/test/DruidAdapterIT.java    | 21 ++++++++-----------
 2 files changed, 18 insertions(+), 27 deletions(-)

diff --git a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT2.java b/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java
similarity index 99%
rename from druid/src/test/java/org/apache/calcite/test/DruidAdapterIT2.java
rename to druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java
index 6646492..02b3ad0 100644
--- a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT2.java
+++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapter2IT.java
@@ -70,10 +70,10 @@ import static org.junit.Assert.assertTrue;
  * <p>These tests use TIMESTAMP type for the Druid timestamp column, instead
  * of TIMESTAMP WITH LOCAL TIME ZONE type as {@link DruidAdapterIT}.
  */
-public class DruidAdapterIT2 {
+public class DruidAdapter2IT {
   /** URL of the "druid-foodmart" model. */
   public static final URL FOODMART =
-      DruidAdapterIT2.class.getResource("/druid-foodmart-model-timestamp.json");
+      DruidAdapter2IT.class.getResource("/druid-foodmart-model-timestamp.json");
 
   private static final String VARCHAR_TYPE =
       "VARCHAR";
@@ -1672,21 +1672,16 @@ public class DruidAdapterIT2 {
         + "from \"foodmart\"\n"
         + "where \"product_id\" = cast(NULL as varchar)\n"
         + "group by \"product_id\" order by \"product_id\" limit 5";
-    final String plan = "PLAN=EnumerableInterpreter\n"
-        + "  DruidQuery(table=[[foodmart, foodmart]], "
-        + "intervals=[[1900-01-09T00:00:00.000Z/2992-01-10T00:00:00.000Z]], "
-        + "filter=[false], groups=[{1}], aggs=[[]], sort0=[0], dir0=[ASC], fetch=[5])";
-    final String query = "{\"queryType\":\"groupBy\"";
-    sql(sql)
-        .explainContains(plan)
-        .queryContains(druidChecker(query));
+    final String plan = "EnumerableValues(tuples=[[]])";
+    sql(sql).explainContains(plan);
   }
 
   @Test public void testFalseFilter() {
     String sql = "Select count(*) as c from \"foodmart\" where false";
+    final String plan = "EnumerableAggregate(group=[{}], C=[COUNT()])\n"
+        + "  EnumerableValues(tuples=[[]])";
     sql(sql)
-        .queryContains(
-            druidChecker("\"filter\":{\"type\":\"expression\",\"expression\":\"1 == 2\"}"))
+        .explainContains(plan)
         .returnsUnordered("C=0");
   }
 
@@ -1894,7 +1889,8 @@ public class DruidAdapterIT2 {
         + "  DruidQuery(table=[[foodmart, foodmart]], intervals=[[1900-01-09T00:00:00.000Z/"
         + "2992-01-10T00:00:00.000Z]], filter=[AND(=($2, 'Bird Call'), "
         + "OR(=(EXTRACT(FLAG(WEEK), $0), 10), =(EXTRACT(FLAG(WEEK), $0), 11)))], "
-        + "projects=[[$0, $2, $63, $90, $91]], groups=[{2}], aggs=[[SUM($3), SUM($4)]], "
+        + "projects=[[$63, $90, $91]], "
+        + "groups=[{0}], aggs=[[SUM($1), SUM($2)]], "
         + "post_projects=[[$0, 'Bird Call', -($1, $2)]])";
     sql(sql, FOODMART)
         .returnsOrdered("store_state=CA; brand_name=Bird Call; A=34.364599999999996",
@@ -3948,4 +3944,4 @@ public class DruidAdapterIT2 {
   }
 }
 
-// End DruidAdapterIT2.java
+// End DruidAdapter2IT.java
diff --git a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
index 6c145d2..c948710 100644
--- a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
+++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
@@ -69,7 +69,7 @@ import static org.junit.Assert.assertTrue;
  *
  * <p>These tests use TIMESTAMP WITH LOCAL TIME ZONE type for the
  * Druid timestamp column, instead of TIMESTAMP type as
- * {@link DruidAdapterIT2}.
+ * {@link DruidAdapter2IT}.
  */
 public class DruidAdapterIT {
   /** URL of the "druid-foodmart" model. */
@@ -1967,21 +1967,16 @@ public class DruidAdapterIT {
         + "from \"foodmart\"\n"
         + "where \"product_id\" = cast(NULL as varchar)\n"
         + "group by \"product_id\" order by \"product_id\" limit 5";
-    final String plan = "PLAN=EnumerableInterpreter\n"
-        + "  DruidQuery(table=[[foodmart, foodmart]], "
-        + "intervals=[[1900-01-09T00:00:00.000Z/2992-01-10T00:00:00.000Z]], "
-        + "filter=[false], groups=[{1}], aggs=[[]], sort0=[0], dir0=[ASC], fetch=[5])";
-    final String query = "{\"queryType\":\"groupBy\"";
-    sql(sql)
-        .explainContains(plan)
-        .queryContains(druidChecker(query));
+    final String plan = "EnumerableValues(tuples=[[]])";
+    sql(sql).explainContains(plan);
   }
 
   @Test public void testFalseFilter() {
     String sql = "Select count(*) as c from \"foodmart\" where false";
+    final String plan = "EnumerableAggregate(group=[{}], C=[COUNT()])\n"
+        + "  EnumerableValues(tuples=[[]])";
     sql(sql)
-        .queryContains(
-            druidChecker("\"filter\":{\"type\":\"expression\",\"expression\":\"1 == 2\"}"))
+        .explainContains(plan)
         .returnsUnordered("C=0");
   }
 
@@ -2189,8 +2184,8 @@ public class DruidAdapterIT {
         + "  DruidQuery(table=[[foodmart, foodmart]], "
         + "intervals=[[1900-01-09T00:00:00.000Z/2992-01-10T00:00:00.000Z]], "
         + "filter=[AND(=($2, 'Bird Call'), OR(=(EXTRACT(FLAG(WEEK), $0), 10), "
-        + "=(EXTRACT(FLAG(WEEK), $0), 11)))], projects=[[$0, $2, $63, $90, $91]], "
-        + "groups=[{2}], aggs=[[SUM($3), SUM($4)]], post_projects=[[$0, 'Bird Call', -($1, $2)]])";
+        + "=(EXTRACT(FLAG(WEEK), $0), 11)))], projects=[[$63, $90, $91]], "
+        + "groups=[{0}], aggs=[[SUM($1), SUM($2)]], post_projects=[[$0, 'Bird Call', -($1, $2)]])";
     sql(sql, FOODMART)
         .returnsOrdered("store_state=CA; brand_name=Bird Call; A=34.364599999999996",
             "store_state=OR; brand_name=Bird Call; A=39.16359999999999",