You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/06/29 18:42:02 UTC

[6/8] calcite git commit: Use real properties, not their names, in tests

Use real properties, not their names, in tests


Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/aae56a58
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/aae56a58
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/aae56a58

Branch: refs/heads/master
Commit: aae56a58af2a11cf63d26d8b1f8dfcf256aaa48f
Parents: 44f7338
Author: Julian Hyde <jh...@apache.org>
Authored: Mon Feb 5 22:17:45 2018 -0800
Committer: Julian Hyde <jh...@apache.org>
Committed: Fri Jun 29 01:23:21 2018 -0700

----------------------------------------------------------------------
 .../calcite/sql/test/SqlOperatorBaseTest.java   |  3 +-
 .../apache/calcite/sql/test/SqlTesterImpl.java  | 14 ++++++---
 .../org/apache/calcite/test/CalciteAssert.java  | 31 +++++++++++++++-----
 .../java/org/apache/calcite/test/JdbcTest.java  | 25 ++++++++--------
 .../org/apache/calcite/test/QuidemTest.java     |  3 +-
 .../apache/calcite/test/TableFunctionTest.java  | 12 ++++++++
 .../enumerable/EnumerableCorrelateTest.java     |  6 ++--
 .../org/apache/calcite/test/DruidAdapterIT.java | 26 ++++++++--------
 .../calcite/adapter/os/OsAdapterTest.java       |  5 ++--
 9 files changed, 82 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java b/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
index f2109f4..0af5a95 100644
--- a/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
@@ -17,6 +17,7 @@
 package org.apache.calcite.sql.test;
 
 import org.apache.calcite.avatica.util.DateTimeUtils;
+import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.linq4j.Linq4j;
 import org.apache.calcite.plan.Strong;
 import org.apache.calcite.rel.type.RelDataType;
@@ -312,7 +313,7 @@ public abstract class SqlOperatorBaseTest {
             CalciteAssert.EMPTY_CONNECTION_FACTORY
                 .with(new CalciteAssert
                     .AddSchemaSpecPostProcessor(CalciteAssert.SchemaSpec.HR))
-                .with("fun", "oracle"));
+                .with(CalciteConnectionProperty.FUN, "oracle"));
   }
 
   protected SqlTester oracleTester(SqlConformance conformance) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/core/src/test/java/org/apache/calcite/sql/test/SqlTesterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/sql/test/SqlTesterImpl.java b/core/src/test/java/org/apache/calcite/sql/test/SqlTesterImpl.java
index c96c4e8..c4eba51 100644
--- a/core/src/test/java/org/apache/calcite/sql/test/SqlTesterImpl.java
+++ b/core/src/test/java/org/apache/calcite/sql/test/SqlTesterImpl.java
@@ -18,6 +18,7 @@ package org.apache.calcite.sql.test;
 
 import org.apache.calcite.avatica.util.Casing;
 import org.apache.calcite.avatica.util.Quoting;
+import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.config.Lex;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeField;
@@ -293,10 +294,15 @@ public class SqlTesterImpl implements SqlTester, AutoCloseable {
     if (conformance == null) {
       conformance = SqlConformanceEnum.DEFAULT;
     }
-    return with("conformance", conformance)
-        .withConnectionFactory(
-            CalciteAssert.EMPTY_CONNECTION_FACTORY
-                .with("conformance", conformance));
+    final SqlTesterImpl tester = with("conformance", conformance);
+    if (conformance instanceof SqlConformanceEnum) {
+      return tester
+          .withConnectionFactory(
+              CalciteAssert.EMPTY_CONNECTION_FACTORY
+                  .with(CalciteConnectionProperty.CONFORMANCE, conformance));
+    } else {
+      return tester;
+    }
   }
 
   public SqlTester withOperatorTable(SqlOperatorTable operatorTable) {

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/CalciteAssert.java b/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
index 7078f8d..0749de5 100644
--- a/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
+++ b/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
@@ -20,6 +20,7 @@ import org.apache.calcite.DataContext;
 import org.apache.calcite.adapter.clone.CloneSchema;
 import org.apache.calcite.adapter.java.ReflectiveSchema;
 import org.apache.calcite.adapter.jdbc.JdbcSchema;
+import org.apache.calcite.avatica.ConnectionProperty;
 import org.apache.calcite.avatica.util.DateTimeUtils;
 import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.config.Lex;
@@ -881,10 +882,6 @@ public class CalciteAssert {
     }
 
     public AssertThat with(Config config) {
-      if (config == Config.SPARK) {
-        return with("spark", "true");
-      }
-
       switch (config) {
       case EMPTY:
         return EMPTY;
@@ -895,7 +892,7 @@ public class CalciteAssert {
         return with(SchemaSpec.HR, SchemaSpec.REFLECTIVE_FOODMART);
       case GEO:
         return with(SchemaSpec.GEO)
-            .with(CalciteConnectionProperty.CONFORMANCE.camelName(),
+            .with(CalciteConnectionProperty.CONFORMANCE,
                 SqlConformanceEnum.LENIENT);
       case LINGUAL:
         return with(SchemaSpec.LINGUAL);
@@ -909,6 +906,8 @@ public class CalciteAssert {
         return with(SchemaSpec.JDBC_SCOTT);
       case SCOTT:
         return with(SchemaSpec.SCOTT);
+      case SPARK:
+        return with(CalciteConnectionProperty.SPARK, true);
       default:
         throw Util.unexpected(config);
       }
@@ -940,9 +939,16 @@ public class CalciteAssert {
       return new AssertThat(connectionFactory.with(property, value));
     }
 
+    public AssertThat with(ConnectionProperty property, Object value) {
+      if (!property.type().valid(value, property.valueClass())) {
+        throw new IllegalArgumentException();
+      }
+      return new AssertThat(connectionFactory.with(property, value));
+    }
+
     /** Sets Lex property **/
     public AssertThat with(Lex lex) {
-      return with(CalciteConnectionProperty.LEX.name(), lex.toString());
+      return with(CalciteConnectionProperty.LEX, lex);
     }
 
     /** Sets the default schema to a given schema. */
@@ -956,7 +962,7 @@ public class CalciteAssert {
     }
 
     public final AssertThat withModel(String model) {
-      return with("model", "inline:" + model);
+      return with(CalciteConnectionProperty.MODEL, "inline:" + model);
     }
 
     public final AssertThat withMaterializations(String model,
@@ -1114,6 +1120,10 @@ public class CalciteAssert {
       throw new UnsupportedOperationException();
     }
 
+    public ConnectionFactory with(ConnectionProperty property, Object value) {
+      throw new UnsupportedOperationException();
+    }
+
     public ConnectionFactory with(ConnectionPostProcessor postProcessor) {
       throw new UnsupportedOperationException();
     }
@@ -1233,6 +1243,13 @@ public class CalciteAssert {
           postProcessors);
     }
 
+    public ConnectionFactory with(ConnectionProperty property, Object value) {
+      if (!property.type().valid(value, property.valueClass())) {
+        throw new IllegalArgumentException();
+      }
+      return with(property.camelName(), value.toString());
+    }
+
     public ConnectionFactory with(
         ConnectionPostProcessor postProcessor) {
       ImmutableList.Builder<ConnectionPostProcessor> builder =

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/core/src/test/java/org/apache/calcite/test/JdbcTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/JdbcTest.java b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
index fcdc0a6..b68f2a8 100644
--- a/core/src/test/java/org/apache/calcite/test/JdbcTest.java
+++ b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
@@ -28,7 +28,10 @@ import org.apache.calcite.avatica.AvaticaStatement;
 import org.apache.calcite.avatica.Handler;
 import org.apache.calcite.avatica.HandlerImpl;
 import org.apache.calcite.avatica.Meta;
+import org.apache.calcite.avatica.util.Casing;
+import org.apache.calcite.avatica.util.Quoting;
 import org.apache.calcite.config.CalciteConnectionConfig;
+import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.config.Lex;
 import org.apache.calcite.config.NullCollation;
 import org.apache.calcite.jdbc.CalciteConnection;
@@ -3032,7 +3035,7 @@ public class JdbcTest {
     };
     final CalciteAssert.AssertThat with = CalciteAssert.that()
         .with(CalciteAssert.Config.FOODMART_CLONE)
-        .with("defaultNullCollation", nullCollation.name());
+        .with(CalciteConnectionProperty.DEFAULT_NULL_COLLATION, nullCollation);
     final String sql = "select \"store_id\", \"grocery_sqft\" from \"store\"\n"
         + "where \"store_id\" < 3 order by 2 "
         + (desc ? " DESC" : "");
@@ -4578,7 +4581,7 @@ public class JdbcTest {
         + " select 1 from \"hr\".\"depts\"\n"
         + " where \"emps\".\"deptno\"=\"depts\".\"deptno\")";
     CalciteAssert.hr()
-        .with("forceDecorrelate", false)
+        .with(CalciteConnectionProperty.FORCE_DECORRELATE, false)
         .query(sql)
         .explainContains(plan)
         .returnsUnordered(
@@ -5648,7 +5651,7 @@ public class JdbcTest {
    * is executed. */
   @Test public void testCurrentTimestamp() throws Exception {
     CalciteAssert.that()
-        .with("timezone", "GMT+1:00")
+        .with(CalciteConnectionProperty.TIME_ZONE, "GMT+1:00")
         .doWithConnection(
             new Function<CalciteConnection, Void>() {
               public Void apply(CalciteConnection connection) {
@@ -5688,9 +5691,7 @@ public class JdbcTest {
   /** Test for timestamps and time zones, based on pgsql TimezoneTest. */
   @Test public void testGetTimestamp() throws Exception {
     CalciteAssert.that()
-        .with("timezone", "GMT+1:00")
-        // Workaround, until [CALCITE-1667] is fixed in Avatica
-        .with("TIME_ZONE", "GMT+1:00")
+        .with(CalciteConnectionProperty.TIME_ZONE, "GMT+1:00")
         .doWithConnection(
             new Function<CalciteConnection, Void>() {
               public Void apply(CalciteConnection connection) {
@@ -6110,10 +6111,10 @@ public class JdbcTest {
   @Test public void testLexOracleAsJava() throws Exception {
     CalciteAssert.that()
         .with(Lex.ORACLE)
-        .with("quoting", "BACK_TICK")
-        .with("unquotedCasing", "UNCHANGED")
-        .with("quotedCasing", "UNCHANGED")
-        .with("caseSensitive", "TRUE")
+        .with(CalciteConnectionProperty.QUOTING, Quoting.BACK_TICK)
+        .with(CalciteConnectionProperty.UNQUOTED_CASING, Casing.UNCHANGED)
+        .with(CalciteConnectionProperty.QUOTED_CASING, Casing.UNCHANGED)
+        .with(CalciteConnectionProperty.CASE_SENSITIVE, true)
         .doWithConnection(
             new Function<CalciteConnection, Void>() {
               public Void apply(CalciteConnection connection) {
@@ -6211,7 +6212,7 @@ public class JdbcTest {
 
   @Test public void testFunOracle() {
     CalciteAssert.that(CalciteAssert.Config.REGULAR)
-        .with("fun", "oracle")
+        .with(CalciteConnectionProperty.FUN, "oracle")
         .query("select nvl(\"commission\", -99) as c from \"hr\".\"emps\"")
         .returnsUnordered("C=-99",
             "C=1000",
@@ -6232,7 +6233,7 @@ public class JdbcTest {
         + "  ST_PointFromText('POINT(-71.0642.28)') as c\n"
         + "from \"hr\".\"emps\"";
     CalciteAssert.that(CalciteAssert.Config.REGULAR)
-        .with("fun", "spatial")
+        .with(CalciteConnectionProperty.FUN, "spatial")
         .query(sql)
         .returnsUnordered("C={\"x\":-71.0642,\"y\":0.28}");
 

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/core/src/test/java/org/apache/calcite/test/QuidemTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/QuidemTest.java b/core/src/test/java/org/apache/calcite/test/QuidemTest.java
index 05c7a29..20e47b3 100644
--- a/core/src/test/java/org/apache/calcite/test/QuidemTest.java
+++ b/core/src/test/java/org/apache/calcite/test/QuidemTest.java
@@ -18,6 +18,7 @@ package org.apache.calcite.test;
 
 import org.apache.calcite.adapter.java.ReflectiveSchema;
 import org.apache.calcite.avatica.AvaticaUtils;
+import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.jdbc.CalciteConnection;
 import org.apache.calcite.prepare.Prepare;
 import org.apache.calcite.rel.type.RelDataType;
@@ -271,7 +272,7 @@ public abstract class QuidemTest {
             .connect();
       case "blank":
         return CalciteAssert.that()
-            .with("parserFactory",
+            .with(CalciteConnectionProperty.PARSER_FACTORY,
                 "org.apache.calcite.sql.parser.parserextensiontesting"
                     + ".ExtensionSqlParserImpl#FACTORY")
             .with(CalciteAssert.SchemaSpec.BLANK)

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java b/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java
index fefd7d2..336fb54 100644
--- a/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java
+++ b/core/src/test/java/org/apache/calcite/test/TableFunctionTest.java
@@ -16,12 +16,14 @@
  */
 package org.apache.calcite.test;
 
+import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.jdbc.CalciteConnection;
 import org.apache.calcite.schema.ScannableTable;
 import org.apache.calcite.schema.SchemaPlus;
 import org.apache.calcite.schema.TableFunction;
 import org.apache.calcite.schema.impl.AbstractSchema;
 import org.apache.calcite.schema.impl.TableFunctionImpl;
+import org.apache.calcite.sql.validate.SqlConformanceEnum;
 import org.apache.calcite.util.Smalls;
 
 import com.google.common.base.Function;
@@ -409,6 +411,16 @@ public class TableFunctionTest {
         + "from table(\"s\".\"fibonacci2\"(20))";
     with().query(q).returnsUnordered("C=7");
   }
+
+  @Test public void testCrossApply() {
+    final String q = "select *\n"
+        + "from (values 2, 5) as t (c)\n"
+        + "cross apply table(\"s\".\"fibonacci2\"(c))";
+    with()
+        .with(CalciteConnectionProperty.CONFORMANCE, SqlConformanceEnum.LENIENT)
+        .query(q)
+        .returnsUnordered("C=7");
+  }
 }
 
 // End TableFunctionTest.java

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/core/src/test/java/org/apache/calcite/test/enumerable/EnumerableCorrelateTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/enumerable/EnumerableCorrelateTest.java b/core/src/test/java/org/apache/calcite/test/enumerable/EnumerableCorrelateTest.java
index 8efec08..08d5ead 100644
--- a/core/src/test/java/org/apache/calcite/test/enumerable/EnumerableCorrelateTest.java
+++ b/core/src/test/java/org/apache/calcite/test/enumerable/EnumerableCorrelateTest.java
@@ -17,6 +17,8 @@
 package org.apache.calcite.test.enumerable;
 
 import org.apache.calcite.adapter.java.ReflectiveSchema;
+import org.apache.calcite.config.CalciteConnectionProperty;
+import org.apache.calcite.config.Lex;
 import org.apache.calcite.test.CalciteAssert;
 import org.apache.calcite.test.JdbcTest;
 
@@ -64,8 +66,8 @@ public class EnumerableCorrelateTest {
   private CalciteAssert.AssertThat tester(boolean forceDecorrelate,
       Object schema) {
     return CalciteAssert.that()
-        .with("lex", "JAVA")
-        .with("forceDecorrelate", Boolean.toString(forceDecorrelate))
+        .with(CalciteConnectionProperty.LEX, Lex.JAVA)
+        .with(CalciteConnectionProperty.FORCE_DECORRELATE, forceDecorrelate)
         .withSchema("s", new ReflectiveSchema(schema));
   }
 }

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.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 36940b8..817142f 100644
--- a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
+++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
@@ -144,10 +144,10 @@ public class DruidAdapterIT {
   private CalciteAssert.AssertQuery approxQuery(URL url, String sql) {
     return CalciteAssert.that()
             .enable(enabled())
-            .with(ImmutableMap.of("model", url.getPath()))
-            .with(CalciteConnectionProperty.APPROXIMATE_DISTINCT_COUNT.camelName(), true)
-            .with(CalciteConnectionProperty.APPROXIMATE_TOP_N.camelName(), true)
-            .with(CalciteConnectionProperty.APPROXIMATE_DECIMAL.camelName(), true)
+            .with(CalciteConnectionProperty.MODEL, url.getPath())
+            .with(CalciteConnectionProperty.APPROXIMATE_DISTINCT_COUNT, true)
+            .with(CalciteConnectionProperty.APPROXIMATE_TOP_N, true)
+            .with(CalciteConnectionProperty.APPROXIMATE_DECIMAL, true)
             .query(sql);
   }
 
@@ -155,7 +155,7 @@ public class DruidAdapterIT {
   private CalciteAssert.AssertQuery sql(String sql, URL url) {
     return CalciteAssert.that()
         .enable(enabled())
-        .with(ImmutableMap.of("model", url.getPath()))
+        .with(CalciteConnectionProperty.MODEL, url.getPath())
         .query(sql);
   }
 
@@ -677,8 +677,8 @@ public class DruidAdapterIT {
         + "aggs=[[SUM($1)]], sort0=[1], dir0=[DESC], fetch=[3])";
     CalciteAssert.that()
         .enable(enabled())
-        .with(ImmutableMap.of("model", FOODMART.getPath()))
-        .with(CalciteConnectionProperty.APPROXIMATE_TOP_N.name(), approx)
+        .with(CalciteConnectionProperty.MODEL, FOODMART.getPath())
+        .with(CalciteConnectionProperty.APPROXIMATE_TOP_N, approx)
         .query(sql)
         .runs()
         .returnsOrdered("brand_name=Hermanos; S=8469",
@@ -2992,8 +2992,8 @@ public class DruidAdapterIT {
       String expectedDruidQuery) {
     CalciteAssert.that()
         .enable(enabled())
-        .with(ImmutableMap.of("model", FOODMART.getPath()))
-        .with(CalciteConnectionProperty.APPROXIMATE_DISTINCT_COUNT.camelName(), approx)
+        .with(CalciteConnectionProperty.MODEL, FOODMART.getPath())
+        .with(CalciteConnectionProperty.APPROXIMATE_DISTINCT_COUNT, approx)
         .query(sql)
         .runs()
         .explainContains(expectedExplain)
@@ -3293,8 +3293,8 @@ public class DruidAdapterIT {
 
     CalciteAssert.that()
         .enable(enabled())
-        .with(ImmutableMap.of("model", WIKI_AUTO2.getPath()))
-        .with(CalciteConnectionProperty.TIME_ZONE.camelName(), "Asia/Kolkata")
+        .with(CalciteConnectionProperty.MODEL, WIKI_AUTO2.getPath())
+        .with(CalciteConnectionProperty.TIME_ZONE, "Asia/Kolkata")
         .query(sql)
         .runs()
         .queryContains(druidChecker(druidQueryPart1, druidQueryPart2))
@@ -3341,8 +3341,8 @@ public class DruidAdapterIT {
 
     CalciteAssert.that()
         .enable(enabled())
-        .with(ImmutableMap.of("model", WIKI_AUTO2.getPath()))
-        .with(CalciteConnectionProperty.TIME_ZONE.camelName(), "Asia/Kolkata")
+        .with(CalciteConnectionProperty.MODEL, WIKI_AUTO2.getPath())
+        .with(CalciteConnectionProperty.TIME_ZONE, "Asia/Kolkata")
         .query(sql)
         .runs()
         .queryContains(druidChecker(druidQueryPart1, druidQueryPart2))

http://git-wip-us.apache.org/repos/asf/calcite/blob/aae56a58/plus/src/test/java/org/apache/calcite/adapter/os/OsAdapterTest.java
----------------------------------------------------------------------
diff --git a/plus/src/test/java/org/apache/calcite/adapter/os/OsAdapterTest.java b/plus/src/test/java/org/apache/calcite/adapter/os/OsAdapterTest.java
index 1216520..50e80b7 100644
--- a/plus/src/test/java/org/apache/calcite/adapter/os/OsAdapterTest.java
+++ b/plus/src/test/java/org/apache/calcite/adapter/os/OsAdapterTest.java
@@ -378,9 +378,8 @@ public class OsAdapterTest {
   static CalciteAssert.AssertQuery sql(String sql) {
     return CalciteAssert.that()
         .withModel(SqlShell.MODEL)
-        .with(CalciteConnectionProperty.LEX.camelName(), Lex.JAVA)
-        .with(CalciteConnectionProperty.CONFORMANCE.camelName(),
-            SqlConformanceEnum.LENIENT)
+        .with(CalciteConnectionProperty.LEX, Lex.JAVA)
+        .with(CalciteConnectionProperty.CONFORMANCE, SqlConformanceEnum.LENIENT)
         .query(sql);
   }
 }