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

fengzhu 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 d29cdd0  [CALCITE-4112] Refine the usage of CalciteConnectionConfig in 
DecorrelateProgram & some minor code refactoring (Jiatao Tao)
d29cdd0 is described below

commit d29cdd05613203fadefc01ab3dea8f586a1c485d
Author: Jiatao Tao <[email protected]>
AuthorDate: Thu Jul 9 14:18:57 2020 +0800

    [CALCITE-4112] Refine the usage of CalciteConnectionConfig in 
DecorrelateProgram & some minor code refactoring (Jiatao Tao)
---
 .../org/apache/calcite/config/CalciteConnectionConfig.java     |  4 ++++
 .../main/java/org/apache/calcite/jdbc/ContextSqlValidator.java |  6 ++----
 core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java | 10 ++++------
 core/src/main/java/org/apache/calcite/tools/Programs.java      |  8 +++++---
 .../org/apache/calcite/test/AbstractMaterializedViewTest.java  |  6 +++---
 core/src/test/java/org/apache/calcite/test/CalciteAssert.java  |  4 ++--
 .../src/test/java/org/apache/calcite/test/RelOptRulesTest.java |  7 +++----
 .../src/test/java/org/apache/calcite/tools/FrameworksTest.java |  4 ++--
 .../apache/calcite/materialize/TpcdsLatticeSuggesterTest.java  |  5 ++---
 9 files changed, 27 insertions(+), 27 deletions(-)

diff --git 
a/core/src/main/java/org/apache/calcite/config/CalciteConnectionConfig.java 
b/core/src/main/java/org/apache/calcite/config/CalciteConnectionConfig.java
index d952e33..60dfde4 100644
--- a/core/src/main/java/org/apache/calcite/config/CalciteConnectionConfig.java
+++ b/core/src/main/java/org/apache/calcite/config/CalciteConnectionConfig.java
@@ -22,10 +22,14 @@ import org.apache.calcite.avatica.util.Quoting;
 import org.apache.calcite.model.JsonSchema;
 import org.apache.calcite.sql.validate.SqlConformance;
 
+import java.util.Properties;
+
 /** Interface for reading connection properties within Calcite code. There is
  * a method for every property. At some point there will be similar config
  * classes for system and statement properties. */
 public interface CalciteConnectionConfig extends ConnectionConfig {
+  /** Default configuration. */
+  CalciteConnectionConfigImpl DEFAULT = new CalciteConnectionConfigImpl(new 
Properties());
   /** @see CalciteConnectionProperty#APPROXIMATE_DISTINCT_COUNT */
   boolean approximateDistinctCount();
   /** @see CalciteConnectionProperty#APPROXIMATE_TOP_N */
diff --git 
a/core/src/main/java/org/apache/calcite/jdbc/ContextSqlValidator.java 
b/core/src/main/java/org/apache/calcite/jdbc/ContextSqlValidator.java
index db8583b..37e9a09 100644
--- a/core/src/main/java/org/apache/calcite/jdbc/ContextSqlValidator.java
+++ b/core/src/main/java/org/apache/calcite/jdbc/ContextSqlValidator.java
@@ -16,15 +16,13 @@
  */
 package org.apache.calcite.jdbc;
 
-import org.apache.calcite.config.CalciteConnectionConfigImpl;
+import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.prepare.CalciteCatalogReader;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
 import org.apache.calcite.sql.validate.SqlValidatorImpl;
 
 import com.google.common.collect.ImmutableList;
 
-import java.util.Properties;
-
 /**
  * A SqlValidator with schema and type factory of the given
  * {@link org.apache.calcite.jdbc.CalcitePrepare.Context}.
@@ -55,6 +53,6 @@ public class ContextSqlValidator extends SqlValidatorImpl {
         mutable ? context.getMutableRootSchema() : context.getRootSchema(),
         ImmutableList.of(),
         context.getTypeFactory(),
-        new CalciteConnectionConfigImpl(new Properties()));
+        CalciteConnectionConfig.DEFAULT);
   }
 }
diff --git a/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java 
b/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java
index 51a366b..c9c1d7e 100644
--- a/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java
+++ b/core/src/main/java/org/apache/calcite/prepare/PlannerImpl.java
@@ -58,12 +58,12 @@ import org.apache.calcite.tools.Program;
 import org.apache.calcite.tools.RelBuilder;
 import org.apache.calcite.tools.ValidationException;
 import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
 
 import java.io.Reader;
 import java.util.List;
-import java.util.Properties;
 
 /** Implementation of {@link org.apache.calcite.tools.Planner}. */
 public class PlannerImpl implements Planner, ViewExpander {
@@ -120,11 +120,9 @@ public class PlannerImpl implements Planner, ViewExpander {
 
   /** Gets a user defined config and appends default connection values */
   private CalciteConnectionConfig connConfig() {
-    CalciteConnectionConfigImpl config =
-        context.unwrap(CalciteConnectionConfigImpl.class);
-    if (config == null) {
-      config = new CalciteConnectionConfigImpl(new Properties());
-    }
+    CalciteConnectionConfigImpl config = Util.first(
+        context.unwrap(CalciteConnectionConfigImpl.class),
+        CalciteConnectionConfig.DEFAULT);
     if (!config.isSet(CalciteConnectionProperty.CASE_SENSITIVE)) {
       config = config.set(CalciteConnectionProperty.CASE_SENSITIVE,
           String.valueOf(parserConfig.caseSensitive()));
diff --git a/core/src/main/java/org/apache/calcite/tools/Programs.java 
b/core/src/main/java/org/apache/calcite/tools/Programs.java
index 501de3f..2432a45 100644
--- a/core/src/main/java/org/apache/calcite/tools/Programs.java
+++ b/core/src/main/java/org/apache/calcite/tools/Programs.java
@@ -42,6 +42,7 @@ import org.apache.calcite.rel.rules.JoinPushThroughJoinRule;
 import org.apache.calcite.sql2rel.RelDecorrelator;
 import org.apache.calcite.sql2rel.RelFieldTrimmer;
 import org.apache.calcite.sql2rel.SqlToRelConverter;
+import org.apache.calcite.util.Util;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -346,9 +347,10 @@ public class Programs {
         RelTraitSet requiredOutputTraits,
         List<RelOptMaterialization> materializations,
         List<RelOptLattice> lattices) {
-      final CalciteConnectionConfig config =
-          planner.getContext().unwrap(CalciteConnectionConfig.class);
-      if (config != null && config.forceDecorrelate()) {
+      final CalciteConnectionConfig config = Util.first(
+          planner.getContext().unwrap(CalciteConnectionConfig.class),
+          CalciteConnectionConfig.DEFAULT);
+      if (config.forceDecorrelate()) {
         final RelBuilder relBuilder =
             RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null);
         return RelDecorrelator.decorrelateQuery(rel, relBuilder);
diff --git 
a/core/src/test/java/org/apache/calcite/test/AbstractMaterializedViewTest.java 
b/core/src/test/java/org/apache/calcite/test/AbstractMaterializedViewTest.java
index e8a5712..fd6e35d 100644
--- 
a/core/src/test/java/org/apache/calcite/test/AbstractMaterializedViewTest.java
+++ 
b/core/src/test/java/org/apache/calcite/test/AbstractMaterializedViewTest.java
@@ -18,7 +18,7 @@ package org.apache.calcite.test;
 
 import org.apache.calcite.adapter.enumerable.EnumerableTableScan;
 import org.apache.calcite.adapter.java.ReflectiveSchema;
-import org.apache.calcite.config.CalciteConnectionConfigImpl;
+import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.jdbc.CalciteSchema;
 import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
 import org.apache.calcite.materialize.MaterializationService;
@@ -56,7 +56,6 @@ import com.google.common.collect.ImmutableList;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Properties;
 import java.util.function.Function;
 
 /**
@@ -179,7 +178,8 @@ public abstract class AbstractMaterializedViewTest {
     final CalciteCatalogReader catalogReader = new CalciteCatalogReader(
         CalciteSchema.from(rootSchema),
         CalciteSchema.from(defaultSchema).path(null),
-        new JavaTypeFactoryImpl(), new CalciteConnectionConfigImpl(new 
Properties()));
+        new JavaTypeFactoryImpl(),
+        CalciteConnectionConfig.DEFAULT);
 
     final SqlValidator validator = new 
ValidatorForTest(SqlStdOperatorTable.instance(),
         catalogReader, new JavaTypeFactoryImpl(), SqlConformanceEnum.DEFAULT);
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 e974f7c..3f4d5ef 100644
--- a/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
+++ b/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
@@ -22,7 +22,7 @@ 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.CalciteConnectionConfigImpl;
+import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.config.CalciteSystemProperty;
 import org.apache.calcite.config.Lex;
@@ -1840,7 +1840,7 @@ public class CalciteAssert {
     private FrameworkConfig forceDecorrelate(FrameworkConfig config) {
       return Frameworks.newConfigBuilder(config)
           .context(
-              Contexts.of(new CalciteConnectionConfigImpl(new Properties())
+              Contexts.of(CalciteConnectionConfig.DEFAULT
                   .set(CalciteConnectionProperty.FORCE_DECORRELATE,
                       Boolean.toString(false))))
           .build();
diff --git a/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java 
b/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java
index 41d77ae..9cb4669 100644
--- a/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java
@@ -18,7 +18,7 @@ package org.apache.calcite.test;
 
 import org.apache.calcite.adapter.enumerable.EnumerableConvention;
 import org.apache.calcite.adapter.enumerable.EnumerableRules;
-import org.apache.calcite.config.CalciteConnectionConfigImpl;
+import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.plan.Context;
 import org.apache.calcite.plan.Contexts;
 import org.apache.calcite.plan.ConventionTraitDef;
@@ -121,7 +121,6 @@ import java.util.Collections;
 import java.util.EnumSet;
 import java.util.List;
 import java.util.Locale;
-import java.util.Properties;
 import java.util.function.Predicate;
 
 import static org.apache.calcite.plan.RelOptRule.none;
@@ -6408,7 +6407,7 @@ class RelOptRulesTest extends RelOptTestBase {
         + "from sales.emp_b as e\n"
         + "where extract(year from birthdate) = 2014";
     final Context context =
-        Contexts.of(new CalciteConnectionConfigImpl(new Properties()));
+        Contexts.of(CalciteConnectionConfig.DEFAULT);
     sql(sql).withRule(DateRangeRules.FILTER_INSTANCE)
         .withContext(context)
         .check();
@@ -6420,7 +6419,7 @@ class RelOptRulesTest extends RelOptTestBase {
         + "where extract(year from birthdate) = 2014"
         + "and extract(month from birthdate) = 4";
     final Context context =
-        Contexts.of(new CalciteConnectionConfigImpl(new Properties()));
+        Contexts.of(CalciteConnectionConfig.DEFAULT);
     sql(sql).withRule(DateRangeRules.FILTER_INSTANCE)
         .withContext(context)
         .check();
diff --git a/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java 
b/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java
index 4da1ad0..8fe0d51 100644
--- a/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java
+++ b/core/src/test/java/org/apache/calcite/tools/FrameworksTest.java
@@ -19,6 +19,7 @@ package org.apache.calcite.tools;
 import org.apache.calcite.DataContext;
 import org.apache.calcite.adapter.enumerable.EnumerableConvention;
 import org.apache.calcite.adapter.enumerable.EnumerableTableScan;
+import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.config.CalciteConnectionConfigImpl;
 import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.config.CalciteSystemProperty;
@@ -291,8 +292,7 @@ public class FrameworksTest {
     assertThat("retrieves default because not set", c2.schema(), nullValue());
 
     // Create a config similar to c2 but starting from an empty Properties.
-    final CalciteConnectionConfigImpl c3 =
-        new CalciteConnectionConfigImpl(new Properties());
+    final CalciteConnectionConfigImpl c3 = CalciteConnectionConfig.DEFAULT;
     final CalciteConnectionConfigImpl c4 = c3
         .set(lenientOperatorLookup, Boolean.toString(true))
         .set(caseSensitive, Boolean.toString(true));
diff --git 
a/plus/src/test/java/org/apache/calcite/materialize/TpcdsLatticeSuggesterTest.java
 
b/plus/src/test/java/org/apache/calcite/materialize/TpcdsLatticeSuggesterTest.java
index fd04ed0..ecaec49 100644
--- 
a/plus/src/test/java/org/apache/calcite/materialize/TpcdsLatticeSuggesterTest.java
+++ 
b/plus/src/test/java/org/apache/calcite/materialize/TpcdsLatticeSuggesterTest.java
@@ -17,7 +17,7 @@
 package org.apache.calcite.materialize;
 
 import org.apache.calcite.adapter.tpcds.TpcdsSchema;
-import org.apache.calcite.config.CalciteConnectionConfigImpl;
+import org.apache.calcite.config.CalciteConnectionConfig;
 import org.apache.calcite.config.CalciteConnectionProperty;
 import org.apache.calcite.config.CalciteSystemProperty;
 import org.apache.calcite.plan.Contexts;
@@ -41,7 +41,6 @@ import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import java.util.List;
-import java.util.Properties;
 import java.util.Random;
 import java.util.regex.Pattern;
 
@@ -161,7 +160,7 @@ class TpcdsLatticeSuggesterTest {
           .parserConfig(SqlParser.Config.DEFAULT)
           .context(
               Contexts.of(
-                  new CalciteConnectionConfigImpl(new Properties())
+                  CalciteConnectionConfig.DEFAULT
                       .set(CalciteConnectionProperty.CONFORMANCE,
                           SqlConformanceEnum.LENIENT.name())))
           .defaultSchema(schema)

Reply via email to