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)