This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new c1b5df7 Decouple TranslatableOptimizerContext and SQL dialect
properties (#12693)
c1b5df7 is described below
commit c1b5df7e8d642bedb4fa1e548fe17d190f5fa72e
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Sep 24 20:07:36 2021 +0800
Decouple TranslatableOptimizerContext and SQL dialect properties (#12693)
---
.../shardingsphere/infra/optimize/ShardingSphereOptimizer.java | 2 --
.../translatable/TranslatableOptimizerContextFactory.java | 10 +++++++++-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
index 50bc8c9..2b270c4 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/ShardingSphereOptimizer.java
@@ -65,8 +65,6 @@ public final class ShardingSphereOptimizer {
*/
public RelNode optimize(final String sql) throws SQLParsingException {
try {
- // TODO : Remove the following statement after
SqlNodeConvertEngine becomes available.
- // SqlNode sqlNode = SqlParser.create(sql,
context.getParserConfig()).parseQuery();
ShardingSphereSQLParserEngine sqlParserEngine = new
ShardingSphereSQLParserEngine(
DatabaseTypeRegistry.getTrunkDatabaseTypeName(context.getFilterableOptimizerContext().getDatabaseType()),
new ConfigurationProperties(new Properties()));
// TODO cache for every SQL may cause out of memory, should keep
consist with statement and prepared statement
diff --git
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
index ab0aeec..af47ea8 100644
---
a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
+++
b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/translatable/TranslatableOptimizerContextFactory.java
@@ -21,6 +21,7 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.calcite.config.CalciteConnectionConfig;
import org.apache.calcite.config.CalciteConnectionConfigImpl;
+import org.apache.calcite.config.CalciteConnectionProperty;
import org.apache.calcite.jdbc.CalciteSchema;
import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
import org.apache.calcite.plan.RelOptCluster;
@@ -40,6 +41,7 @@ import
org.apache.shardingsphere.infra.optimize.context.filterable.FilterableOpt
import org.apache.shardingsphere.infra.optimize.core.plan.PlannerInitializer;
import java.util.Collections;
+import java.util.Properties;
/**
* Translatable optimizer context factory.
@@ -56,7 +58,7 @@ public final class TranslatableOptimizerContextFactory {
* @return created customized optimize context
*/
public static TranslatableOptimizerContext create(final String schemaName,
final Schema logicSchema, final FilterableOptimizerContext
filterableOptimizerContext) {
- CalciteConnectionConfig connectionConfig = new
CalciteConnectionConfigImpl(filterableOptimizerContext.getProps());
+ CalciteConnectionConfig connectionConfig = new
CalciteConnectionConfigImpl(createConnectionProperties());
RelDataTypeFactory relDataTypeFactory = new JavaTypeFactoryImpl();
CalciteCatalogReader catalogReader = createCatalogReader(schemaName,
logicSchema, relDataTypeFactory, connectionConfig);
SqlValidator validator = createValidator(catalogReader,
relDataTypeFactory, connectionConfig);
@@ -64,6 +66,12 @@ public final class TranslatableOptimizerContextFactory {
return new TranslatableOptimizerContext(filterableOptimizerContext,
schemaName, logicSchema, validator, relConverter);
}
+ private static Properties createConnectionProperties() {
+ Properties result = new Properties();
+ result.setProperty(CalciteConnectionProperty.TIME_ZONE.camelName(),
"UTC");
+ return result;
+ }
+
private static CalciteCatalogReader createCatalogReader(final String
schemaName,
final Schema
logicSchema, final RelDataTypeFactory relDataTypeFactory, final
CalciteConnectionConfig connectionConfig) {
CalciteSchema rootSchema = CalciteSchema.createRootSchema(true);